import java.applet.*; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.*; import java.util.*; import java.util.zip.*; public class painter2 extends BApplet { // Sound code modified from source by [rocha] int xWidth = 500, yHeight = 800; int total = 500; Bouncer[] bouncer = new Bouncer[total]; Meander m1 = new Meander(); boolean clear = false; boolean click = false; int counter = 0; int strokeVar = 2; void setup() { size(500,800); noBackground(); noStroke(); fill(0); rect(0,0,width,height); ellipseMode(CENTER_DIAMETER); for (int i=0; i right){ xDelta = random (-1,0); } else { xDelta = random(-1,1); } if (yPos < bottom){ yDelta = random(0,1); } else if (yPos > top){ yDelta = random (-1,0); } else { yDelta = random(-1,1); } xSpeed = xSpeed + xDelta; ySpeed = ySpeed + yDelta; if (xSpeed > xMax){ xSpeed = xMax; } else if (xSpeed < -xMax){ xSpeed = -xMax; } if (ySpeed > yMax){ ySpeed = yMax; } else if (ySpeed < -yMax){ ySpeed = -yMax; } xPos = xPos + xSpeed; yPos = yPos + ySpeed; noStroke(); for (int i=0; i<=4; i++){ fill(0,0,0,1); ellipse(xPos, yPos, i*75, i*75); } if (random(500) < 2){ xPos += random(-100,100); yPos += random(-100,100); } } } class Bouncer { float xPos; float yPos; float xOld = 250; float yOld = 400; float x2Old = 250; float y2Old = 400; float x3Old = 250; float y3Old = 400; float x4Old = 250; float y4Old = 400; float left = 0; float right = width; float bottom = 0; float top = height; float friction = random(0.1f,0.8f); float elastic = random(0.2f,0.8f); float gravity; float xd, yd; float xVel, newXVel; float yVel, newYVel; float totalVel; float xDelta, yDelta, distance; float x2Delta, y2Delta, distance2; float randomXVar = random(-2,2); float randomYVar = random(-2,2); Bouncer (float xp, float yp, float xv, float yv) { xPos = xp; yPos = yp; xVel = xv; yVel = yv; } void bounce () { x4Old = x3Old; y4Old = y3Old; x3Old = x2Old; y3Old = y2Old; x2Old = xOld; y2Old = yOld; xOld = xPos; yOld = yPos; xDelta = mouseX - xPos; yDelta = mouseY - yPos; distance = sqrt(sq(xDelta) + sq(yDelta)); x2Delta = m1.xPos - xPos; y2Delta = m1.yPos - yPos; distance2 = sqrt(sq(x2Delta) + sq(y2Delta))/5; newXVel = xVel * elastic + ((m1.xPos + randomXVar) - xPos) * friction; newYVel = yVel * elastic + ((m1.yPos + randomYVar) - yPos) * friction; xVel = xVel - ((xVel - newXVel) * .1f); yVel = yVel - ((yVel - newYVel) * .1f); xPos = xPos + xVel; yPos = yPos + yVel; totalVel = (abs(xVel) + abs(yVel)); strokeWidth(6); stroke(255); line(xPos, yPos, xOld, yOld); strokeWidth(5); stroke(200); line(xOld, yOld, x2Old, y2Old); strokeWidth(4); stroke(150); line(x2Old, y2Old, x3Old, y3Old); strokeWidth(3); stroke(100); line(x3Old, y3Old, x4Old, y4Old); } } }