void setup(){ size(400,400); strokeWeight(1); } float px = 200; float p1x = 60; float p2x = 100; float p3x = 140; float p4x = 180; float p5x = 220; float p6x = 260; float p7x = 300; float p8x = 340; float p9x = 380; float speed = 2; float distance = 60; float resolution=20; void draw(){ background(200); translate(0, height/2); beginShape(POINTS); strokeWeight(2); stroke(0); vertex(px,0); vertex(p1x,0); vertex(p2x,0); vertex(p3x,0); vertex(p4x,0); vertex(p5x,0); vertex(p6x,0); vertex(p7x,0); vertex(p8x,0); vertex(p9x,0); endShape(); beginShape(); noFill(); strokeWeight(1); stroke(170); for(int i = 0; i <= resolution; i++){ float angle = i/resolution * TWO_PI; float x = distance * cos(angle); float y = distance * sin(angle); vertex(x,y); } translate(px,0); endShape(); float dist1x = dist(px,0, p1x,0); float dist2x = dist(px,0, p2x,0); float dist3x = dist(px,0, p3x,0); float dist4x = dist(px,0, p4x,0); float dist5x = dist(px,0, p5x,0); float dist6x = dist(px,0, p6x,0); float dist7x = dist(px,0, p7x,0); float dist8x = dist(px,0, p8x,0); float dist9x = dist(px,0, p9x,0); if(keyCode== RIGHT & keyPressed){ px += speed; } if(keyCode== LEFT & keyPressed){ px -= speed; } if(dist1x < distance & keyCode == RIGHT & keyPressed){ p1x += sin(map(dist1x,0,distance,PI/2,PI))*speed; } if(dist1x < distance & keyCode == LEFT & keyPressed){ p1x -= sin(map(dist1x,0,distance,PI/2,PI))*speed; } if(dist2x < distance & keyCode == RIGHT & keyPressed){ p2x += sin(map(dist2x,0,distance,PI/2,PI))*speed; } if(dist2x < distance & keyCode == LEFT & keyPressed){ p2x -= sin(map(dist2x,0,distance,PI/2,PI))*speed; } if(dist3x < distance & keyCode == RIGHT & keyPressed){ p3x += sin(map(dist3x,0,distance,PI/2,PI))*speed; } if(dist3x < distance & keyCode == LEFT & keyPressed){ p3x -= sin(map(dist3x,0,distance,PI/2,PI))*speed; } if(dist4x < distance & keyCode == RIGHT & keyPressed){ p4x += sin(map(dist4x,0,distance,PI/2,PI))*speed; } if(dist4x < distance & keyCode == LEFT & keyPressed){ p4x -= sin(map(dist4x,0,distance,PI/2,PI))*speed; } if(dist5x < distance & keyCode == RIGHT & keyPressed){ p5x += sin(map(dist5x,0,distance,PI/2,PI))*speed; } if(dist5x < distance & keyCode == LEFT & keyPressed){ p5x -= sin(map(dist5x,0,distance,PI/2,PI))*speed; } if(dist6x < distance & keyCode == RIGHT & keyPressed){ p6x += sin(map(dist6x,0,distance,PI/2,PI))*speed; } if(dist6x < distance & keyCode == LEFT & keyPressed){ p6x -= sin(map(dist6x,0,distance,PI/2,PI))*speed; } if(dist7x < distance & keyCode == RIGHT & keyPressed){ p7x += sin(map(dist7x,0,distance,PI/2,PI))*speed; } if(dist7x < distance & keyCode == LEFT & keyPressed){ p7x -= sin(map(dist7x,0,distance,PI/2,PI))*speed; } if(dist8x < distance & keyCode == RIGHT & keyPressed){ p8x += sin(map(dist8x,0,distance,PI/2,PI))*speed; } if(dist8x < distance & keyCode == LEFT & keyPressed){ p8x -= sin(map(dist8x,0,distance,PI/2,PI))*speed; } if(dist9x < distance & keyCode == RIGHT & keyPressed){ p9x += sin(map(dist9x,0,distance,PI/2,PI))*speed; } if(dist9x < distance & keyCode == LEFT & keyPressed){ p9x -= sin(map(dist9x,0,distance,PI/2,PI))*speed; } if( px > 400){ px = 200; p1x = 60; p2x = 100; p3x = 140; p4x = 180; p5x = 220; p6x = 260; p7x = 300; p8x = 340; p9x = 380; } }