# mstropka-Project-07-E

``````//Max Stropkay
//Section E
//mstropka@andrew.cmu.edu
//Project_07

var nPoints = 1000;
function setup() {
createCanvas(480, 480);

}
function drawEpicycloid(){
// x = (R+r)cos theta - r cos((R+r)/r)theta)
// y = (R + r)sin theta - rsin(((R+r)/r)theta)

var R = 100 //radius of large circle
var r = 10 //radius of small circle
var a = mouseX //take values of mouse x
var b = mouseY //take values of mouse y

//draw curve in center of screen
push();
translate(240, 240)
noFill();
strokeWeight(.01);

//draw curve
beginShape();
for(var i = 0; i < nPoints; i++){

var t = map(i, 0, nPoints, 0, TWO_PI);

var x = (a + r)*cos(t) - (r)*cos(((a + b)/r)*(t))
var y = (b + r)*sin(t) - (r)*sin(((a + b)/r)*(t))

//points of curve will be drawn at somewhere within 50 pixels of (x,y)
vertex(x + random(-50, 50),y + random(50, - 50));
}
endShape(CLOSE);
pop();
}

function draw(){
drawEpicycloid();
}
//redraw background if the mouse is pressed
function mousePressed(){
background(255);
}
``````

For this assignment, I used the equation for an epicycloid with the mouse’s location driving certain variables to change the shape as the mouse moves. I can’t say I understand the equation for this type of curve that well so I just started substituting the mouseX and mouse Y value for random variables in the equation until I got something that looked cool. I also added a random value to the x and y coordinates of the points that the program draws.

Here is a screenshot from before I added the random values to the x and y coordinates.