xxxxxxxxxx
89
var a = 1,
b = 1;
var m1 = 0,
m2 = 0;
var n1 = 0,
n2 = 0,
n3 = 0;
var m1Slider, m2Slider, n1Slider, n2Slider, n3Slider, scaleSlider;
var anim = [];
function setup() {
createCanvas(600, 600);
strokeWeight(0);
fill('#333333');
m1Slider = createSlider(0, 20, 0);
m2Slider = createSlider(0, 20, 0);
n1Slider = createSlider(0, 20, 0, 0.5);
n2Slider = createSlider(0, 20, 0, 0.5);
n3Slider = createSlider(0, 20, 0, 0.5);
scaleSlider = createSlider(1, 100, 1);
anim[0] = new Frame(6, 3, 8.5, 8, 8, 15, 0);
anim[1] = new Frame(6, 3, 8.5, 8, 8, 15, 50);
anim[2] = new Frame(14, 2, 6, 3, 4.5, 22, 150);
anim[3] = new Frame(14, 2, 6, 3, 4.5, 22, 200);
anim[4] = new Frame(8, 3, 6, 3, 4.5, 22, 300);
anim[5] = new Frame(8, 3, 6, 3, 4.5, 22, 350);
anim[6] = new Frame(12, 4, 4, 1.5, 2, 16, 450);
anim[7] = new Frame(12, 4, 4, 1.5, 2, 16, 500);
anim[8] = new Frame(8, 4, 11, 9.5, 4.5, 37, 600);
anim[9] = new Frame(8, 4, 11, 9.5, 4.5, 37, 650);
anim[10] = new Frame(6, 2, 11, 9.5, 4.5, 34, 750);
anim[11] = new Frame(6, 2, 11, 9.5, 4.5, 34, 800);
anim[12] = new Frame(11, 11, 9, 8, 8, 13, 900);
anim[13] = new Frame(11, 11, 9, 8, 8, 13, 950);
}
function draw() {
/*m1 = m1Slider.value();
m2 = m2Slider.value();
n1 = n1Slider.value();
n2 = n2Slider.value();
n3 = n3Slider.value();
a = b = scaleSlider.value();*/
background('#66CCCC');
translate(width / 2, height / 2);
beginShape();
for (var i = 0; i < TWO_PI*2; i += 0.01) {
var r = pow(pow(abs(cos(m1 * i / 4) / a), n2) + pow(abs(sin(m2 * i / 4) / b), n3), -(1 / n1));
var x = r * cos(i);
var y = r * sin(i);
vertex(x * 10, y * 10);
}
endShape(CLOSE);
groupLerp(anim, frameCount);
}
function mousePressed(){
print(m1, m2, n1, n2, n3, a, '\n');
}
function groupLerp(frames, progress) {
if(frames.length > 1){
var first = frames[0];
var last = frames[1];
var currentProg = (progress-first.time)/(last.time-first.time);
m1 = lerp(first.m1, last.m1, currentProg);
m2 = lerp(first.m2, last.m2, currentProg);
n1 = lerp(first.n1, last.n1, currentProg);
n2 = lerp(first.n2, last.n2, currentProg);
n3 = lerp(first.n3, last.n3, currentProg);
a = b = lerp(first.scale, last.scale, currentProg);
if(progress == last.time){
if(frames.length > 2){
frames.splice(0, 1);
}else{
frames.splice(0, 2);
}
}
}
}