xxxxxxxxxx
61
const NLGS = 8;
var rad_ang = 15 * 4.848e-6; // 15 arcsec rad
var rad_act;
var alt = 100; // lgs alt [m]
var sc = 10;
var slider1;
var slider2;
const altmin = 90;
const altmax = 230;
function setup() {
createCanvas(400, 400, WEBGL);
createP("Altitude:");
slider1 = createSlider(altmin, altmax, 100);
createP("Precision:");
slider2 = createSlider(1, 5, 2.0, 0.01);
background(255);
}
function draw() {
alt = slider1.value();
var prec = slider2.value()
rad_act = alt * rad_ang * 1000;
rotateX(PI / 2-0.2);
rotateZ(0.5);
rotateY(-(alt - altmin) / (altmax - altmin) * TWO_PI / NLGS * prec);
translate(0,150-alt,0);
background(255);
fill(200);
stroke(10);
cylinder(1000 * sc * altmax * rad_ang * 1.1 / 2, 10, 20, 1);
fill(255);
push();
rotateY((alt - altmin) / (altmax - altmin) * TWO_PI / NLGS * prec);
translate(0,-500+alt,0);
cylinder(10, 1000, 20, 1);
pop();
fill(0);
noStroke();
var i,j;
for (j = 0; j < 100; j++) {
var alt_tmp = j/100*(altmax-altmin)+altmin;
var rad_tmp = alt_tmp * rad_ang * 1000;
for (i = 0; i < NLGS; i++) {
push();
rotateY((alt_tmp - altmin) / (altmax - altmin) * TWO_PI / NLGS * prec);
translate(rad_tmp * cos(i * TWO_PI / 8) * sc / 2, 0, rad_tmp * sin(i * TWO_PI / 8) * sc / 2);
//stroke(10);
cylinder(3, 10.1,8,1);
pop();
}
}
fill(255, 255, 0);
for (i = 0; i < NLGS; i++) {
push();
rotateY((alt - altmin) / (altmax - altmin) * TWO_PI / NLGS * prec);
translate(rad_act * cos(i * TWO_PI / 8) * sc / 2, 0, rad_act * sin(i * TWO_PI / 8) * sc / 2);
cylinder(5, 11);
pop();
}
}