//Kyunga Ko
//15104B
//kyungak@andrew.cmu.edu
//Project 07
var cenX;
var cenY;
var numO = 100;
var dis = 100;
function setup() {
createCanvas(480, 480);
cenX = (width / 2);
cenY = (height / 2);
}
function draw() {
background(0);
for (var i = 0; i < numO; i++) {
//constraining mouseX range + mouseX changes size of posX & posY
var m = map(mouseX,0,480,0,100);
var control = (m+10);
//framerate changes according to mouseY
var frame = (frameCount*i)/mouseY;
//position X + circular movement
var posX = cenX + control * cos(radians(30 * i + frame));
//position Y + circular movement
var posY = cenY + control * sin(radians(30 * i + frame));
//for loop of ellipses
strokeWeight(1);
noFill();
stroke(255,255,255,100);
ellipse(posX,posX,posY,posY);
}
}
For this project, I wanted to make a series of translucent ellipses that continuously rotated. I wanted this continuous rotation to illusion the individual objects to be seen as a whole. Although the result didn’t yield a perfectly symmetric object to the traditional X and Y line, it is still partly symmetric to the y=x line. When the mouseX moves across the canvas, the object gets bigger. When mouseY moves, the frame rate changes. The result turned out to be much more fascinating than I thought. It was a last minute decision to give a variation to frameCount, and I am very glad I did it. The aesthetics were very satisfying. Although figuring out the sin and cosine rules were a bit challenging, I feel like I learned a lot by completing this project.