Kreise = new ArrayList();
Quadrate = new ArrayList();
Dreiecke = new ArrayList();
DesKreise = new ArrayList();
DesDreiecke = new ArrayList();
DesQuads = new ArrayList();
Kreise.add( new Kreis(width/8, height/3, bSize));
Dreiecke.add ( new Dreieck((width/8)*4-bSize/2, height/3, bSize, -1));
Quadrate.add( new Quadrat((width/8)*6, height/3, bSize));
for (int i = Kreise.size()-1; i >= 0; i--) {
Kreis k = (Kreis) Kreise.get(i);
k.shakeDist(mouseX, mouseY);
if (mousePressed && k.rollOverKreis(mouseX, mouseY)) {
for (int j = 0; j < 200; j++) {
DesKreise.add(new DesKreis (width/8+bSize/2+sin(radians(norm(Kreise.size(),0,360)))*bSize, height/3+bSize/2+sin(radians(norm(Kreise.size(),0,360)))*bSize, random(bSize/8, bSize/4), random(-5, 5)*noise(frameCount)*3, random(-10, 10)*noise(frameCount)*3));
for (int i = Dreiecke.size()-1; i >= 0; i--) {
Dreieck d = (Dreieck) Dreiecke.get(i);
d.shakeDist(mouseX, mouseY);
if (mousePressed && d.rollOverDrei(mouseX, mouseY)) {
for (int j = 0; j < 200; j++) {
DesDreiecke.add(new DesDreieck ((width/8)*4, height/3+bSize/2, random(bSize/8, bSize/4), -1, random(-5, 5)*noise(frameCount)*3, random(-10, 10)*noise(frameCount)*3));
for (int i = Quadrate.size()-1; i >= 0; i--) {
Quadrat q = (Quadrat) Quadrate.get(i);
q.shakeDist(mouseX, mouseY);
if (mousePressed && q.rollOverQuad(mouseX, mouseY)) {
for (int j = 0; j < 200; j++) {
DesQuads.add(new DesQuad ((width/8)*6+bSize/2, height/3+bSize/2, random(bSize/8, bSize/4), random(-5, 5)*noise(frameCount)*3, random(-10, 10)*noise(frameCount)*3));
for (int i = DesKreise.size()-1; i >= 0; i--) {
DesKreis dk = (DesKreis) DesKreise.get(i);
if (DesKreise.size() == 0) {
Kreise.add( new Kreis(width/8, height/3, bSize));
for (int i = DesDreiecke.size()-1; i >= 0; i--) {
DesDreieck dd = (DesDreieck) DesDreiecke.get(i);
if (DesDreiecke.size() == 0) {
Dreiecke.add( new Dreieck((width/8)*4-bSize/2, height/3, bSize, -1));
for (int i = DesQuads.size()-1; i >= 0; i--) {
DesQuad dq = (DesQuad) DesQuads.get(i);
if (DesQuads.size() == 0) {
Quadrate.add( new Quadrat((width/8)*6, height/3, bSize));
saveFrame("line-######.png");
Dreieck(float _xpos, float _ypos, float _breite, float _richtung ) {
xpos+breite/2, ypos + (cos(radians(90))*hoehe)
float test = xpos+ceil(breite/2)*this.richtung;
void shakeDist(int mx, int my) {
float thisDist = dist(mx, my, xpos+bSize/2, ypos-bSize/2);
float amp = norm(thisDist, 0.001, 25);
xpos = (width/8)*4-bSize/2 + int(random(-1*noise(frameCount), 1*noise(frameCount)) / amp * 80);
ypos = height/3 + int(random(-1*noise(frameCount), 1*noise(frameCount)) / amp * 80);
boolean rollOverDrei(int mx, int my) {
if (dist(mx, my, xpos, ypos) < breite) {
class DesDreieck extends Dreieck {
DesDreieck(float xpos, float ypos, float breite, float richtung, float _xspeed, float _yspeed) {
super(xpos, ypos, breite, richtung);
if (life < 0) return true;
xpos+breite/2, ypos + (cos(radians(90))*hoehe)
Kreis(float _xpos, float _ypos, float _radius) {
ellipse(xpos, ypos, radius, radius);
void shakeDist(int mx, int my) {
float thisDist = dist(mx, my, xpos+radius/2, ypos+radius/2);
float amp = norm(thisDist, 0.001, 10);
xpos = width/8 + random(-1*noise(frameCount), 1*noise(frameCount)) / amp * 50 + noise(frameCount)/10;
ypos = height/3 + random(-1*noise(frameCount), 1*noise(frameCount)) / amp * 50 + noise(frameCount)/10;
boolean rollOverKreis(int mx, int my) {
if (dist(mx, my, xpos, ypos) < radius) {
class DesKreis extends Kreis {
DesKreis(float xpos, float ypos, float radius, float _xspeed, float _yspeed) {
super(xpos, ypos, radius);
if (life < 0) return true;
ellipse(xpos, ypos, radius, radius);
Quadrat(float _xpos, float _ypos, float _breite) {
rect(xpos, ypos, breite, hoehe);
void shakeDist(int mx, int my) {
float thisDist = dist(mx, my, xpos+breite/2, ypos+hoehe/2);
float amp = norm(thisDist, 0.001, 10);
xpos = (width/8)*6 + random(-1*noise(frameCount), 1*noise(frameCount)) / amp * 50 + noise(frameCount)/10;
ypos = height/3 + random(-1*noise(frameCount), 1*noise(frameCount)) / amp * 50 + noise(frameCount)/10;
boolean rollOverQuad(int mx, int my) {
if (dist(mx, my, xpos, ypos) < breite) {
class DesQuad extends Quadrat {
DesQuad(float xpos, float ypos, float radius, float _xspeed, float _yspeed) {
super(xpos, ypos, radius);
if (life < 0) return true;
rect(xpos, ypos, breite, hoehe);