xxxxxxxxxx
76
// Used in DwM (2024); do not delete.
let nCols = 30;
let nRows = 30;
let nyT = 3.5;
let nxT = 3.5;
let nz1 = 0;
let nz2 = 10;
let tx,ty;
function setup() {
createCanvas(600, 600);
}
function draw() {
background(255);
tx = millis()/2000.0;
ty = millis()/3000.0;
drawFieldGrid();
drawFieldTracer(width/2, height/2);
drawFieldTracer(mouseX, mouseY);
}
function keyPressed(){
saveCanvas();
}
//---------------------------------
function drawFieldGrid(){
stroke(0,0,0, 90);
strokeWeight(1);
for (let row = 0; row < nRows; row++) {
for (let col = 0; col < nCols; col++) {
let py = map(row, 0, nRows, 0, height);
let px = map(col, 0, nCols, 0, width);
let ny = ty + map(py, 0, height, 0.0, nyT);
let nx = tx + map(px, 0, width, 0.0, nxT);
let n1 = noise(nx, ny+nz1) - 0.5;
let n2 = noise(nx, ny+nz2) - 0.5;
let angle = atan2(n1, n2);
let dx = 20 * cos(angle);
let dy = 20 * sin(angle);
line(px, py, px + dx, py + dy);
circle(px,py,2);
}
}
}
//---------------------------------
function drawFieldTracer(px, py){
stroke('red');
strokeWeight(2);
noFill();
beginShape();
for (let i = 0; i < 100; i++) {
let ny = ty + map(py, 0, height, 0.0, nyT);
let nx = tx + map(px, 0, width, 0.0, nxT);
let n1 = noise(nx, ny+nz1) - 0.5;
let n2 = noise(nx, ny+nz2) - 0.5;
let angle = atan2(n1, n2);
let dx = 4 * cos(angle);
let dy = 4 * sin(angle);
vertex(px, py);
px += dx;
py += dy;
}
endShape();
}