Description:
For this week’s assignment, I created a generative artwork using Object-Oriented Programming. Using mainly lines, I played around with Perlin noise to create a wavy circle.
I used variables and functions to create that. I started by sketching the circle and then draws a line from one point to the other. I computed the reverse by adding pi to the actual angle that turns 180° if you use radians. The two circumference points were then extrapolated using the identical sine and cosine methods.
The circle was smooth. I’ve added a few lines to change the color of the stroke.
I defined a variable StrokeCol, began with 255 (white), and decreased every frame by 1 up to 0. (black). Then I reversed the procedure to an endless level of 255.
Next, I changed the length of the connection line by changing the radius with a noise value.
Then, to change it a little more, I added noise to its angle. I allowed the angle to be increased or decreased so that it could reverse.
Furthermore, I changed the center of the circle to give it a better effect.
I have attached the video below:
The code of the above art is below:
//defining the variables float angle_noise; float radius_noise; float x_noise; float y_noise; float angle = -PI/2; float radius; float strokeCol = 255; int strokeChange = -1; //initialising the setup void setup() { size(720, 720); smooth(); frameRate(30); background(255); noFill(); //using random values to use it further in the code angle_noise = random(10); radius_noise = random(10); x_noise = random(10); y_noise = random(10); } void draw() { radiusVar(); angularSpin(); circleProp(); } //the radius function that changes the radius using perlin noise void radiusVar(){ radius_noise += 0.005; radius = (noise(radius_noise) * 550) + 1 ; } //using noise for angular spin void angularSpin(){ angle_noise += 0.005; angle += (noise(angle_noise) * 6) - 3; if (angle > 360) { angle -= 360; } if (angle < 0) { angle += 360; } } //defining the properties of the circle void circleProp(){ x_noise += 0.01; y_noise += 0.01; float centerX = width/2 + (noise(x_noise) * 100) - 50; float centerY = height/2 + (noise(y_noise) * 100) - 50; float radius_ = radians(angle); float x1 = centerX + (radius * cos(radius_)); float y1 = centerY + (radius * sin(radius_)); float oppradius = radius_ + PI; float x2 = centerX + (radius * cos(oppradius)); float y2 = centerY + (radius * sin(oppradius)); //changing the color of the stroke strokeCol += strokeChange; if (strokeCol > 254) { strokeChange = -1; } if (strokeCol < 0) { strokeChange = 1; } stroke(strokeCol, 60); strokeWeight(1); line(x1, y1, x2, y2); }