//Allison Mui
//15-104 Section A
//amui1@andrew.cmu.edu
//Project-07
//global variables
var nPoints = 100;
function setup() {
createCanvas(480,480);
}
function draw() {
background(0,0,63);
//places bottom left corner
drawAstroid(70,height-80);
//places top right corner
drawAstroid(width-60,80);
drawRose();
}
function drawAstroid(xPos,yPos) {
//size
var a = 30;
beginShape();
noFill();
stroke(255,242,254);
strokeWeight(1);
//loops ten times to make layer of astroid
for (var num = 0; num < 10; num += 1) {
//test loop
//print(num);
//loops through 100 times to make the curve
for (var i = 0; i < nPoints; i++) {
//constrains and maps theta to be between 0 and two pi
var theta = map(i, 0, nPoints, 0, TWO_PI);
//formulas provided by MathWorld
x = xPos + a*(cos(theta)**3);
y = yPos + a*(sin(theta)**3);
vertex(x,y);
}
endShape();
//decreases size of astroid in accordance with mouseX
a = a - constrain(mouseX,0,width);
}
}
function drawRose() {
stroke(255,252,201);
noFill();
//size of rose inm accordance with mouseX
var roseA = constrain(mouseX,50,200);
//number of petals
var roseFactor = 6;
//loop through 10 times for extra layers
for (var roseNum = 0 ; roseNum < 10; roseNum += 1) {
for (var i = 0; i < nPoints; i++) {
//constrains theta to be between 0 and two pi
var roseTheta = map(i,0,nPoints,0,TWO_PI);
//formulas from mathworld
r = roseA*sin(roseFactor*roseTheta);
roseX = width/2 + r*cos(roseTheta);
roseY = height/2 + r*sin(roseTheta);
ellipse(roseX,roseY,1,1);
}
//decreases size of rose in accordance with mouseX
roseFactor = roseFactor - mouseX;
//to test
// print(roseFactor);
}
}
This project was pretty challenging. I found mathWorld extremely useful in showcasing the x and y equations in order to make the shape. However, I found it difficult to come up with a creative idea that implemented the curve shape. What I came up with was inspired by the stars. Overall, I’m satisfied with my end product. However, in the future, I would like to explore more and maybe implement something new using the time function. Another thing that I wish I could have taken more time researching was finding a way to make the astroid curve into a rose curve over the movement of mouseX. But, that was too hard and too much of a time constraint for the time being. Overall, I’m satisfied with my end product which gives off a “sparkly” feel.