//Jacky Lococo
//jlococo
//Section C
var nPoints = 50; // points on the epispiral and ranunculoid
function setup() {
createCanvas(480, 480);
}
function draw() {
background(255);
push()
translate(width/2, height/2)
rotate(mouseX/2, mouseY/2)
epispiralOne() //espiral - will repeat this shape to make more spiral lines
epispiralOne()
rotate(mouseX/4, mouseY/2)
epispiralOne()
ranunculoid() //flower curve -- will repeat to create spirals
rotate(mouseX, mouseY)
scale(2.0)
ranunculoid() //flower curve scaled by factor of 2
ranunculoid()
scale(0.5)
ranunculoid()
pop()
push()
scale(2.0) //scaled up flower in top left corner
ranunculoid()
pop()
ranunculoid() // flower in top left corner
push()
translate(width, height)
ranunculoid()// flower in bottom right corner
scale(2.0)//scaled up flower in right corner
ranunculoid()
pop()
ellipse(width/2, height/2, mouseY/30, mouseY/30 ) //creates scaling ellipse
}
function epispiralOne(){ //episprial with two curves
var a = 40
var b = a / 2.0;
var h = mouseX
var ph = mouseX / 50.0
noFill()
strokeWeight(2)
stroke(0, 100, mouseY)
beginShape();
for (var i = 0; i < nPoints; i++) {
var t = map(i, 0, nPoints, 0, TWO_PI);
x = (a + b) * cos(t) - h * cos(ph + t * (a + b) / b); //formulas
y = (a + b) * sin(t) - h * sin(ph + t * (a + b) / b);
vertex(x,y)
}
endShape()
}
function ranunculoid(){ // type of Epicycloid with four petals
var a = mouseY / 30 // changes the size of the shape
noFill()
stroke(mouseX, 0, 100) // changes just the red value
strokeWeight(1)
beginShape();
for (var i = 0; i < nPoints; i++) {
var t = map(i, 0, nPoints, 0, TWO_PI);
x = a*(6 * cos(t) - cos(6*t)); //formulas
y = a*(6 * sin(t) - sin(6*t));
vertex(x,y)
}
endShape()
}
Project: 07 Curves
sketch