Move the mouse to change the angle, and press to clear the screen.
xxxxxxxxxx
var p, q;
var dt = 0.001;
var zoom = 10;
var sig = 10, rho = 28, beta = 8/3;
function setup() {
p = createVector(1,1,1);
q = createVector(1,1,1);
createCanvas(windowWidth, windowHeight);
background(100);
background(0);
}
var pauseAnimation = false;
function draw() {
if (pauseAnimation)
return;
fill(0,3);
noStroke();
rect(0,0,width,height);
translate(width/2, height/4);
// orthogonal rotation
var v = createVector(mouseX - width/2, mouseY - height/2, 0);
v.normalize();
var u = createVector(v.y, -v.x, 1);
u.normalize();
for (let i=0; i<500; i++){
q.set(p.x, p.y, p.z);
p.add(sig*(q.y-q.x)*dt, (q.x*(rho-q.z)-q.y)*dt, (q.x*q.y-beta*q.z)*dt);
var qx = q.dot(v);
var px = p.dot(v);
var qy = q.dot(u);
var py = p.dot(u);
stroke(255,255,0,50);
strokeWeight(3);
line(zoom*qx, zoom*qy, zoom*px, zoom*py);
stroke(0,255,255);
strokeWeight(1);
line(zoom*qx, zoom*qy, zoom*px, zoom*py);
}
}
// ------------------------- interface -------------------------
function keyPressed(){
if (key=='s')
saveCanvas('lorenz','jpg');
if (key=='c')
background(0);
if (key=='p')
pauseAnimation = !pauseAnimation;
}
function mousePressed(){
background(0);
}
function mouseWheel(event){
zoom *= exp(-event.delta/200);
}