Tag: generative art

  • Hue-shifting

    Hue-shifting

    This is an experiment in gradually and cyclically changing the hue and saturation values of an “array of pixels,” i.e. an image. The main parameter I experimented with was the nature of the increment value to both hue and saturation: whether it is a whole number, a float, a sinusoidal value, or a simple quadratic formula.

    [one_fourth]27768.451[/one_fourth][one_fourth]129585.66[/one_fourth][one_fourth]701145.7[/one_fourth][one_fourth_last]377843.94[/one_fourth_last][one_fourth]734175.9[/one_fourth][one_fourth]224657.36[/one_fourth][one_fourth]254764.05[/one_fourth][one_fourth_last]259448.44[/one_fourth_last]To achieve a cyclic animation, the saturation value increments upwardly until it reaches 255 before starting to decrement back. The below is a video of the animation.

    The program was run with various images to compare results; the darker the image is, the lesser the change in appearance (hue and saturation).

    [one_fourth]66525.5[/one_fourth][one_fourth]907474.1[/one_fourth][one_fourth]717525.1[/one_fourth][one_fourth_last]21743.68[/one_fourth_last][one_fourth]507630.12[/one_fourth][one_fourth]396375.78[/one_fourth][one_fourth]73955.33[/one_fourth][one_fourth_last]177715.47[/one_fourth_last]

  • Seeker/Avoider Autonomous Agents

    Seeker/Avoider Autonomous Agents

    This is my first dabbling into autonomous agents. An autonomous agent, or “vehicle” in Valentino Braitenberg‘s terminology, is an agent capable of selecting an action, and consequently steering itself towards achieving it.


    The particle system I created has three types of particles: target particles (visually represented as pink squares), seeker particles that pursue a target particle (represented as the large colorful ellipses), and avoider-seeker particles that are simultaneously moving towards a target and avoiding another (they are the small, ghostly hollow ellipses in the screenshots/videos). The particles follow an inheritance hierarchy: both the Seeker and Target classes inherit from a base Particle class. The AvoiderSeeker class is the grandchild of the Seeker class as there is an unused class in between, the Avoider class.

    The third particle type clearly exhibits the most complex behavior as its steering behavior is subject to two, potentially-contradicting innate forces: one towards a particle, and the other towards another particle. The sought-after/avoided particles are not necessarily the square pink ones, therefore our avoider-seeker particle go after a seeker particle that is in turn moving towards other particles. This results in moments of analysis-paralysis for said avoider-seeker particles that are visible in the above video.

    Another distinctive characteristic of an autonomous agent is that it has a limited  knowledge of its environment. The particles here achieve that in having an active knowledge of which direction the target is at, but not necessarily where it is located exactly.

  • Object-Oriented Shape-making

    Object-Oriented Shape-making

    Click on the sides of the image above to browse the gallery.

    For this project, I decided to create two classes, one that draws a shape, and the other uses transformations (rotation, etc.), and iteration to create a composite arrangement from the original shape.

    832590.0

    The Shape class draws a simple shape from basic shape directives (e.g. rect(), ellipse(), etc). My partner, Xinyi and I, worked on creating different variations of this class, to produce interesting results.

    687929.9

    The Arranger class has the capability of changing the sizes of the Shape instances it receives, as well as the radius and angle used in the rotation.

    494632.7

    Multiple runs with varying parameters (e.g. Shape class characteristics, radius, size, angle, and so on), yielded different designs.

    323254.2

  • Truchet Tiling in Processing

    Truchet Tiling in Processing

    Click on the arrows above to view a gallery of images. Truchet Tiling is a method of generating patterns through the arrangement of “tiles” whose corners are incomplete portions of shapes (e.g. ellipses, triangle, etc). For this project, I set out to create a Processing app that generates colorful manifestation of such tiles, with varying shape types, resolution, and color theme. The arrangement of tiles are randomised resulting in a different results at every run.

    875743.75 489527.9 945911.94 177572.36 347358.7

  • Perlin-noise Polygon Stacks

    Perlin-noise Polygon Stacks

    For this project, I decided to experiment with the Perlin noise function noise() to control the rotation angles of a stack of polygons. I started with the an offset value that incremented in a really small magnitude (0.001), within the range of 0 to 45 degrees, just to test out the general effect on the appearance of the stacks.

    95599.78

    The results were not that interesting as the change in the rotation angles was minimal. In addition, I wanted more color, so I used Perlin noise again to vary the Hue value for each of the rectangles (after switching to the HSB color mode).

    6

    The results were more interesting, but the change of color was too dramatic. Consequently, I decreased the magnitude of the hue’s noise function’s offset to 0.01 to lessen the change between the color of one rectangle to the other.

    In addition, I wanted to increase the number of rectangles in each row, to give the whole arrangement more depth.

    692632.1

    For the next revision, I wanted to remove the upper limit of the rotation angles from 45 degrees to 360 degrees to allow for more variations in appearance. I’ve also tried different variations in the hue’s offset, as well as lighter stroke colors.

    10

    8

    1

    The following is the code.