xxxxxxxxxx
71
var phi = 24.6272; // latitude degrees of Paranal
var BLOCKOUT = 3; // blockout angle around zenith
var alt = 0; // altitude, degrees
var az = 0; // azimuthal angle, degrees
var t = 0;
var dec_slider;
var speed_slider;
var decdiv;
var speeddiv;
function setup() {
createCanvas(400, 400,WEBGL);
decdiv = createDiv("Dec")
dec_slider = createSlider(0.001,180,90-(phi-3),0.1);
speeddiv = createDiv("Speed")
speed_slider = createSlider(0,5,2,0.01);
}
function draw() {
var de = dec_slider.value()+90; // declination, degrees
var hamin = -acos((0.5-sin(de)*sin(phi))/(cos(de)*cos(phi)))
var hamax = -hamin;
var ha; // hour angle, degrees
//if (t > hamax)
// t = hamin;
t += speed_slider.value();
ha = t;
alt = asin(sin(de)*sin(phi)+cos(de)*cos(ha)*cos(phi));
az = atan2(sin(ha),(cos(ha)*sin(phi)-tan(de)*cos(phi)));
angleMode(DEGREES);
camera(0, -100, 200)
background(0,0,100);
noStroke();
push();
rotateX(90);
fill(100);
plane(1000,1000);
pop();
push();
translate(-50,-10,110);
noStroke();
fill(200);
rotateZ(90);
cylinder(2,20);
translate(0,10,0)
cone(5,10);
pop();
push();
var telheight = 20;
var scopelen = 30;
rotateY(az);
translate(0,-telheight/2,0);
stroke(100,0,0);
fill(255,0,0);
box(30,telheight,30);
rotateZ(-alt);
translate(scopelen/2,0,0);
box(scopelen,10,10);
noStroke();
fill(0,255,0);
translate(70,0,0);
sphere(4);
pop();
decdiv.html("Dec: "+(de-90).toFixed(2))
speeddiv.html("Speed up: "+speed_slider.value().toFixed(2))
}