xxxxxxxxxx
69
let N = 5;
let FoV = 200;
let w;
let alpha_min;
let alp, bet;
let dalp = 0;
let dbet = 0;
let speed;
let theta = 0;
function setup() {
createCanvas(2*FoV, 2*FoV);
w = FoV * 2 / (N - 1);
alpha_min = -FoV;
alp = random(-FoV, FoV);
bet = random(-FoV, FoV);
speed = document.getElementById("speedslider")
}
function draw() {
theta += (speed.value/100)/60*PI;
// theta TWO_PI*frameCount*(speed.value/100)/300;
alp = FoV*cos(theta*1/4)*cos(theta);
bet = FoV*cos(theta*1/4)*sin(theta);
background(245);
push();
translate(width / 2, height / 2);
noStroke();
fill(0, 0, 0);
for (let mi = 0; mi < N; mi++) {
for (let ni = 0; ni < N; ni++) {
ellipse((alpha_min + ni * w), (alpha_min + mi * w), 1 * 20, 1 * 20);
}
}
//text("ρ1",width/2-30,-30)
//text("ρ2",30,-height/2+30)
stroke(0);
line(-width,0,width,0);
line(0,-height,0,height);
noStroke();
let sum = 0;
for (let mi = 0; mi < N; mi++) {
let dy = abs(bet - (alpha_min + mi * w)) / w;
if (dy >= 1) {
continue;
}
for (let ni = 0; ni < N; ni++) {
let dx = abs(alp - (alpha_min + ni * w)) / w;
if (dx >= 1) {
continue;
}
let coeff = (1 - dx) * (1 - dy);
sum += coeff;
fill(0, 255, 0);
stroke(0,255,0);
strokeWeight(5*coeff);
line((alpha_min + ni * w),(alpha_min + mi * w),alp,bet);
noStroke();
ellipse((alpha_min + ni * w), (alpha_min + mi * w), coeff * 20, coeff * 20);
fill(0);
text(coeff.toFixed(2),15+(alpha_min + ni * w),15+(alpha_min + mi * w));
}
}
fill(0, 0, 255);
ellipse(alp, bet, 10, 10);
pop();
//text(sum.toFixed(8),20,20);
}