// UdK Computational design // Marius Watz 2003 // http://www.evolutionzone.com/udk/ // // UDK02_01_accel // // Different forms of acceleration and deceleration. // Hint: All methods finish at the same time. float fract,fractD; float distance; void setup() { size(300,400); ellipseMode(CENTER_DIAMETER); framerate(20); distance=300; fract=0; fractD=0.05f; } void loop() { background(150,140,140); fract+=fractD; // fract=fract+fractD; if(fract>=1) fract=0; stroke(255); for(int i=0; i<5; i++) line(50+i*50,50, 50+i*50,350); noStroke(); fill(255,170,0); ellipse(50, 350-linear()*distance, 20,20); ellipse(100, 350-sinAccel()*distance, 20,20); ellipse(150, 350-quadAccel()*distance, 20,20); ellipse(200, 350-squareDecel()*distance, 20,20); ellipse(250, 350-squareAccel()*distance, 20,20); } // Linear movement, no acceleration or deceleration float linear() { return fract; } // Pretty slow start, pretty fast finish float squareAccel() { return fract*fract; } // Very slow start, very fast finish float quadAccel() { return fract*fract*fract*fract; } // Starts quick then slows down float sinAccel() { return sin(PI*0.5*fract); } // Same as squareAccel, but decelerates float squareDecel() { return (1-(fract-1)*(fract-1)); }