var Vec2D = toxi.geom.Vec2D;
import toxi.processing.*;
Vec2D[] gravityPCollection= new Vec2D[n_attractors];
Vec2D[] orientorCollection;
Vec2D[] orientorSortedCollection;
float[] gravity= new float[n_attractors];
ArrayList particuleCollection;
background(250, 250, 250);
particuleCollection= new ArrayList();
for (int i = 0; i < 10; i = i+1) {
gravityPCollection[i]= new Vec2D(random(width), random(height));
gravity[i]=random(1, 100);
for (int i=0; i<=width; i=i+cell) {
for (int j=0; j<=height; j=j+cell) {
Vec2D p = new Vec2D(i, j);
particuleCollection.add(p);
orientorCollection= new Vec2D[particuleCollection.size()];
distCollection= new float[particuleCollection.size()];
for (int j=0; j< particuleCollection.size (); j++) {
Vec2D p = (Vec2D)particuleCollection.get(j);
Vec2D target = new Vec2D();
for (int i=0; i<n_attractors; i++) {
float disti = p.distanceTo(gravityPCollection[i]);
Vec2D vi = gravityPCollection[i].sub(p);
vi.scaleSelf(gravity[i]/disti);
orientorCollection[j]=target;
distCollection[j]= minDist;
float distmax=max(distCollection);
float distmin=min(distCollection);
orientorSortedCollection= new Vec2D[particuleCollection.size()];
for (int j=0; j< particuleCollection.size (); j++) {
Vec2D temp=orientorCollection[j].getRotated(PI/2);
orientorSortedCollection[j] = temp.normalizeTo(3);
for (int j=0; j< particuleCollection.size (); j++) {
Vec2D p = (Vec2D)particuleCollection.get(j);
p.addSelf(orientorSortedCollection[j]);