Assignment

For my midterm project for Codes in Emergent Digital Practices at University of Denver, we were asked to create a generative and algorithmic art. The project explores the ideas of repetition and transformation in generative and algorithmic art. The project goal is to create a set of algorithmic rules that would generate new results in every session while keeping the chaotic randomness to a minimum. We were required to create this in Processing

Project Guidelines

Choose two of the topic areas outlined below:

  • Mathematically-generated motion: trig functions, curves, easing, random, etc

  • Interactive type: typography responding to some other factor or input such as mouse movement or color change

  • Image processing: use of image sizing, blends, and/or filters on the images in your sketch. These changes should be tied to a form of input. (check out blends, filters, & pixel manipulation in the Processing reference/tutorials)

  • Animation: not simple motion but multi-frame animation using an array (see Chapter 11 of Getting Started with Processing 2nd Edition)

Additional requirements:

  • Randomization or user input is driving the output in the sketches

  • Code must be well commented to demonstrate your understanding & intention

  • At least 1 sketch: Mouse input must control some aspect based upon movement or position

  • At least 1 sketch: Key input signals change to at least one parameter

  • All sketches: Output must be able to be saved as still images (see the save() and saveFrame() functions)

Deliverables

  • 3 or more clearly stated rules, either in separate PDF or within comments

  • At least 3 idea drawings, either within rules PDF or in a separate image files

  • 3 Processing sketches demonstrating 3 different approaches/realizations of your rules

IDEA DEVELOPMENT

My ideas were mainly inspired by the video of Casey Reas we watched in class to help us understand the concept of generative art. Casey Reas's generative art concept involves the use of a group of individual particles which follow a set of rules. These rules allow each individual particle to move randomly in a cohesive manner. Since I had to create three sketches in two weeks, my idea was to create a particle system that can be used for all three sketches.

The particle system rules are as follows:

Elements: Ellipses
Behavior 1: Ellipses move in one direction (Each ellipse moves in its own direction.)
Behavior 2: Ellipses bounce off the wall.

Particle System

1st Idea (Moving Lines)

Project Link: https://github.com/weiweikee/Moving-Lines

This particle system allowed me to create multiple forms of generative art. The first idea was extremely simple in which the ellipses are connected by lines and the ellipses are moving around freely. The number of particles was reduced to only 5 as the lines connected between particles increase exponentially because every ellipse is connected to each other. This allowed me to create a tesseract-like structure as the ellipses move through each other and the lines between them form different shapes as they move around. The random direction of each ellipse makes sure that the form is different every time the code is run in Processing.

The rules for this particular sketch are as follow: 

Elements: Lines & Ellipses
Behavior 1: Ellipses move in one direction (Each ellipse moves in its own direction.)
Behavior 2: Ellipses bounce off the wall.
Behavior 3: Lines are connected between every ellipse in the center.
Behavior 4: The closer the ellipses the thicker the line strokes between them.

Moving Lines

2nd Idea (connecting Lines)

Project Link: https://github.com/weiweikee/Connecting-Lines

The second idea increased the number of ellipses to 1200. The ellipses in this sketch are not connected by lines initially but if the ellipses are close enough to each other, the line will form between them. In order to achieve this, the particle system must check the distance between each particle and draw a line when they get close enough. The line will disappear when it is too far apart. In order to create a more fluid appearance and disappearance of the line, the stroke modifier was added. The stroke modifier is determined by the distance between the ellipses (same as previous idea). 

The rules for this particular sketch are as follow: 

Elements: Lines & Ellipses
Behavior 1: Ellipses move in one direction (Each ellipse moves in its own direction.)
Behavior 2: Ellipses bounce off the wall.
Behavior 3: When ellipses are close enough, lines will be drawn between the ellipses.
Behavior 4: The closer the ellipses the thicker the line strokes between them.

Connecting Lines

3rd Idea (Drawing Lines)

Project Link: https://github.com/weiweikee/Drawing-Lines

The third idea reduced the number of ellipses to 15. The ellipses in this sketch were not connected by lines initially but if the ellipses are close enough, a random color line will be drawn. In order to achieve this, the base of the sketch is the same as the second idea (Connecting Lines) but the background is not refreshed so all the ellipses and lines formed are shown. This gave the illusion of lines and ellipses being drawn onto the canvas. 

The rules for this particular sketch are as follow: 

Elements: Lines & Ellipses
Behavior 1: Ellipses move in one direction (Each ellipse moves in its own direction.)
Behavior 2: Ellipses bounce off the wall.
Behavior 3: When ellipses are close enough, lines will be drawn between the ellipses.
Behavior 4: The closer the ellipses the thicker the line strokes between them.
Behavior 5: Color of the lines are randomized.

Drawing Lines

RESULTS & FINAL THOUGHTS

This project helped me fully understand the concept of particle systems and array-list. I had to read three chapters ahead in order to create these three sketches. I also got help from my Professor in order to create the distance detection in my second and third ideas. Overall, I felt that the project was done well and there were very few problems that I ran into. Since the project was assigned in week four, most of the problems were technical as we did not learn a lot of the material yet, such as trying to figure out how to create the particle system and distance detection. In addition, since this is my first time coding with Java, the challenge was more tremendous. In the end, I felt the results were good enough for a two week project.