xxxxxxxxxx
float em = 16; //#vertices
void setup(){
//background(0);
size(500, 500);
noFill();
stroke(255);
strokeWeight(2);
smooth();
}
void draw() {
background(0);
text("# of vertices: " + int(em), 10, 20);
translate(width/2, height/2);
beginShape();
//addd vertices
for (float theta = 0; theta <= 2* PI; theta += 0.01){
float rad = r(theta,
2, //a
2, //b
em, //m
1, //n1
mouseX /200.0, //n2
mouseY /200.0 //n3
);
float x = rad * cos(theta)* 50;
float y = rad * sin(theta)* 50;
vertex(x,y);
}
endShape();
}
float r(float theta, float a, float b, float m, float n1, float n2, float n3) {
return pow(pow(abs(cos(m* theta / 4.0) / a),n2) +
pow(abs(sin(m* theta / 4.0) / b),n3), -1.0 /n1) ;
}
void keyReleased(){
if(keyCode == UP){ em = em+2;}
if(keyCode == DOWN){ em = em-2;}
}