xxxxxxxxxx
80
var x = 0.1;
var y = 0.1;
var z = 0.1;
var sigma = 10;
var rho = 28;
var beta = 8/3;
var points = [];
var clrs = [];
var clr = 255;
var up = false;
var gate = false;
function setup() {
createCanvas(windowWidth, windowHeight, WEBGL);
background(0);
}
function mousePressed(){
if(gate){
gate = false;
} else{
gate = true;
}
}
function drawLorenz(){
scale(3);
//stroke(255);
noFill();
var hue = 150;
//beginShape();
for(var i = 0; i < points.length; i++){
let v = points[i];
let w = points[i+1];
stroke(255,clrs[i],0);
if(points.length > 2 && v !== points[points.length-1]){
line(v.x,v.y,v.z,w.x,w.y,w.z);
}
//vertex(v.x,v.y,v.z);
}
//endShape();
}
function draw() {
if(!gate){
var dt = 0.01;
var dx = (sigma * (y - x)) * dt;
var dy = (x * (rho - z) - y) * dt;
var dz = (x * y - beta * z) * dt;
x = x + dx;
y = y + dy;
z = z + dz;
points.push(createVector(x,y,z));
if(up){
clr += 0.5;
} else{
clr -= 0.5;
}
append(clrs,clr);
if(clr == 255){
up = false;
} else if(clr == 100){
up = true;
}
} else {
background(0);
drawLorenz();
let camX = map(mouseX, 0, width, -200, 200);
let camY = map(mouseY, 0, height, -200, 200);
camera(camX, camY, height / 2.0 / tan((PI * 30.0) / 180.0), 0, 0, 0, 0, 1, 0);
}
}