// Justin Yook
// jyook@andrew.cmu.edu
// Section C
// Project 07
var nPoints = 250; // number of points drawn to create shape
function setup() {
createCanvas(480, 480);
}
function draw() {
background(0);
fill(255);
text("Modified Quadrifolum", 20, 40);
// draw the curve
push();
translate(width / 2, height / 2);
drawQuadrifoliumMod();
pop();
}
function drawQuadrifoliumMod() {
// http://mathworld.wolfram.com/Quadrifolium.html
// Polar equation is in form: r = a * sin(2 * theta), but I modified 2 to 6 to create a flower
var x;
var y;
var r;
var a = constrain(mouseX, 60, 220);
beginShape();
for (var i = 0; i < nPoints; i++) {
var theta = map(i, 0, nPoints, 0, TWO_PI);
// Modified Quadrifolium
if (mouseX > width / 2) {
fill(0, 191, 255);
r = a * sin(6 * theta);
x = r * cos(theta);
y = r * sin(theta);
vertex(x + random(-2, 2), y + random(-2, 2));
}
// Original Quadrifolium
if (mouseX < width / 2) {
fill(0, 191, 255);
r = a * sin(3 * theta);
x = r * cos(theta);
y = r * sin(theta);
vertex(x + random(-2, 2), y + random(-2, 2));
}
}
endShape(CLOSE);
}
In this project, I used modified versions of the quadrifolium to create flower-like shapes. I was inspired by the way fire appears on gas stoves, so I made the shapes jiggle slightly. The parameter that is interactive is the size of the curves, and the number of flower petals. When the mouse moves to the right, more petals show up, and the size increases. When the mouse moves to the left, fewer petals show up, and the size decreases.