/* bubbleBubble Due bolle si scontrano e si intersecano September 2007 Processing v.0124 */ //parametrizzare i raggi delle bolle x decidere a che distanza devono unirsi int numCircle =7; Circle[] circles = new Circle[numCircle]; void setup() { size(800, 600); frameRate(30); //Creazione delle bolle //Le bolle andrebbero create in modo tale da non essere sovrapposte //Il movimento dovrebbe essere verso il centro dello schermo //Due bolle circles[0] = new Circle(100, 100,20, 0.25,0, 0); circles[1] = new Circle(200, 100,5, -0.25, 0, 1); //x y r dx dy id circles[2] = new Circle(100, 200,40, 0.25, 0, 2); circles[3] = new Circle(200, 200,40, -0.25, 0, 3); circles[4] = new Circle(100, 300,20, 0.01, 0, 4); circles[5] = new Circle(150, 350,20, -0.25, -0.25, 5); circles[6] = new Circle(180, 150,10, -0.25, -0.25, 6); /*circles[0] = new Circle(100, 100,20, 0.01,0, 0); circles[1] = new Circle(200, 200,20, -0.25, -0.25, 1); */ /*for(int i=0; i 0) { if(x > width+r) { x = -r; } } else { if(x < -r) { x = width+r; } } if(ysp > 0) { if(y > height+r) { y = -r; } } else { if(y < -r) { y = height+r; } } } } void intersect( Circle cA, Circle cB ) { float dx = cA.x - cB.x; float dy = cA.y - cB.y; float d2 = dx*dx + dy*dy; float d = sqrt( d2 ); if ( d>cA.r+cB.r || d di xx% rispetto ai raggi delle bolle if (d < 20) { cA.ax = paX; cA.ay = paY; cA.bx = pbX; cA.by = pbY; //*************** //anche se sembra sbagliato è giusto //Specchio dei punti di intersezione cB.ax = pbX; cB.ay = pbY; cB.bx = paX; cB.by = paY; //*********** cA.sp = 0; cA.ysp = 0; cB.sp = 0; cB.ysp = 0; stroke(100,100,100); line(paX, paY, pbX, pbY); //cA.draw(); //cB.draw(); } }