Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var res = 10
- var grid_X
- var grid_Y
- function setup() {
- createCanvas(700, 700);
- grid_X = new Array(width / res);
- grid_Y = new Array(width / res);
- for (var i = 0; i < width / res; i++) {
- grid_X[i] = new Array(height / res);
- grid_Y[i] = new Array(height / res);
- }
- c1 = new Charge(100, 200, 30)
- c2 = new Charge(600, 500, -20)
- vectorGrid()
- }
- function draw() {
- background(220);
- drawGrid()
- c1.display()
- c2.display()
- drawLines()
- }
- function Charge(x, y, v) {
- this.x = x
- this.y = y
- this.v = v
- this.display = function() {
- if (this.v > 0) {
- fill(255, 0, 0, 100);
- } else if (this.v < 0) {
- fill(0, 0, 255, 100);
- }
- stroke(0);
- strokeWeight(1);
- ellipse(this.x, this.y, 15, 15);
- }
- }
- function drawGrid() {
- stroke(0, 50)
- for (var i = 0; i < width; i += 20) {
- line(0, i, width, i)
- line(i, 0, i, height)
- }
- }
- function vectorGrid() {
- //print("Vector grid")
- var x1 = 0;
- for (var i = 0; i < height / res; i++) {
- for (var j = 0; j < height / res; j++) {
- x = res / 2 + i * res
- y = res / 2 + j * res
- dx = x - c1.x;
- dy = y - c1.y;
- d1 = sqrt(dx * dx + dy * dy);
- E1 = c1.v / (d1 * d1);
- E1x = dx * E1 / d1;
- E1y = dy * E1 / d1;
- dxn = x - c2.x;
- dyn = y - c2.y;
- d2 = sqrt(dxn * dxn + dyn * dyn);
- E2 = c2.v / (d2 * d2);
- E2x = dxn * E2 / d2;
- E2y = dyn * E2 / d2;
- EEx = E1x + E2x;
- EEy = E1y + E2y;
- EE = sqrt(EEx * EEx + EEy * EEy);
- deltax = 15 * EEx / EE;
- deltay = 15 * EEy / EE;
- grid_X[i][j] = deltax
- grid_Y[i][j] = deltay
- }
- }
- }
- function drawLines() {
- for (var i = 0; i < 5000; i++) {
- x = random(width);
- var xf = floor(x / (res));
- y = random(height);
- var yf = floor(y / (res));
- stroke(0, 70)
- line(x, y, x + grid_X[xf][yf], y + grid_Y[xf][yf])
- }
- }
Add Comment
Please, Sign In to add comment