Code Block |
---|
int gridWidth = 40; int gridHeight = 40; int screenWidth = 700; int screenHeight = 700; int xOffset; int yOffset; int distX; int distY; PVector reactorPosition; ArrayList <VectorLine> vectLineList = new ArrayList<VectorLine>(); void setup() { reactorPosition = new PVector(0, 0); size(700, 700); background(255); stroke(0); int xOffset = floor(width/2-(distX*gridWidth/2)); int yOffset = floor(height/2-(gridHeight*distY/2)); int distX = width/gridWidth+1; int distY = height/gridHeight+1; for (int i = 0; i<gridWidth; i++ ) { for (int j = 0; j<gridHeight; j++ ) { vectLineList.add(new VectorLine(i*distX, j*distY)); } } }; void draw() { background(255); for (int i = 0; i<vectLineList.size(); i++ ) { vectLineList.get(i).draw(reactorPosition); }; }; void mouseMoved() { reactorPosition.x = mouseX; reactorPosition.y = mouseY; }; class VectorLine { PVector _pos; PVector _vector; float reactorScaler = .07; VectorLine(int x, int y) { _vector = new PVector(0, 5); _pos = new PVector(x, y); _vector.add(_pos); } void draw(PVector reactor) { PVector _reactor = reactor.copy(); float reactorDistance = dist(_reactor.x, _reactor.y, _pos.x, _pos.y); float scaler = reactorDistance*reactorScaler; _reactor.sub(_pos); // subtract VectorLines position from the reactors position, this effectively gives a reactor coordinate relative to our VectorLine coordinate _vector = _reactor.copy(); _vector.normalize(); _vector.rotate(PI/4); _vector.mult(scaler); _vector.add(_pos); // line(_pos.x, _pos.y, _vector.x, _vector.y); ellipse(_vector.x, _vector.y, 5, 5); } } |
...