int numOfMoos = 20; float r = 0.0f; Moo moos[] = new Moo[numOfMoos]; Vector3D acc[] = new Vector3D[numOfMoos]; Vector3D vel[] = new Vector3D[numOfMoos]; Vector3D loc[] = new Vector3D[numOfMoos]; Vector3D diff[] = new Vector3D[numOfMoos]; float cdiff[] = new float[numOfMoos]; void setup() { size(640,480, P3D); framerate(60); background(0); for (int i = 0; i < numOfMoos; i++) { acc[i] = new Vector3D(0,0,0); vel[i] = new Vector3D(10,10,0); loc[i] = new Vector3D(cos(i)*90,sin(i)*90,0); moos[i] = new Moo(acc[i],vel[i],loc[i]); } } void draw() { background(0); translate(width/2,height/2,-500); translate(0, 0, -100); rotateX(45); rotateZ(r); r += 0.01f; for ( int i = 0; i < numOfMoos; i++) { for (int j = 0; j < numOfMoos; j++) { if(i != j) { cdiff[i] = Vector3D.distance(moos[i].getLoc(),moos[j].getLoc()); diff[i] = Vector3D.sub(moos[j].getLoc(),moos[i].getLoc()); diff[i].normalize(); diff[i].mult(0.1f); moos[i].setAcc(diff[i]); moos[i].go(cdiff[i]); // moos[j].setAcc(diff[i]); } } } }