106 lines
3.7 KiB
JavaScript
106 lines
3.7 KiB
JavaScript
|
let pendulums = [];
|
||
|
let stop = true;
|
||
|
let t = 0;
|
||
|
let s = 1;
|
||
|
let st = true;
|
||
|
function setup() {
|
||
|
frameRate(144);
|
||
|
createCanvas(getViewport()[0], getViewport()[1]-4);
|
||
|
pendulums.push(new Pendulum(width/2,height/2,width/1920 * 1.5,7/6*0.5));
|
||
|
pendulums.push(new Pendulum(width/2,height/2,width/1920 * 1.5,6/6*0.5));
|
||
|
pendulums.push(new Pendulum(width/2,height/2,width/1920 * 1.5,5/6*0.5));
|
||
|
slider = createSlider(0, 10, 1);
|
||
|
button = createButton('refresh');
|
||
|
button.position(width / 2 - 40, 25);
|
||
|
button.mousePressed(buttonCall);
|
||
|
slider.position(width / 2 - 70, 0);
|
||
|
// pendulums.push(new Pendulum(width*2/4-width/8,height/2,width/1920 * 0.5));
|
||
|
// pendulums.push(new Pendulum(width*3/4-width/8,height/2,width/1920 * 0.5));
|
||
|
// pendulums.push(new Pendulum(width*4/4-width/8,height/2,width/1920 * 0.5));
|
||
|
for(let i = 0; i < pendulums.length; i++){
|
||
|
pendulums[i].show();
|
||
|
}
|
||
|
// slider = createSlider(0, 10, 1);
|
||
|
// slider.position(50, 0);
|
||
|
stroke(50);
|
||
|
textSize(width/1920 * 1.5 * 40);
|
||
|
}
|
||
|
|
||
|
function draw() {
|
||
|
clear();
|
||
|
background(240);
|
||
|
push();
|
||
|
stroke(50);
|
||
|
strokeWeight(width/1920 * 1.5 * 7);
|
||
|
//line((width/2),(height/7), (width/2),(height/6));
|
||
|
line((width/2)-(width/1920 * 1.5 * 100 * 2) - width/1920 * 1.5 * 10,height/2, (width/2)-(width/1920 * 1.5 * 100 * 2) - width/1920 * 1.5 * 30,height/2);
|
||
|
line((width/2)+(width/1920 * 1.5 * 100 * 2) + width/1920 * 1.5 * 10,height/2, (width/2)+(width/1920 * 1.5 * 100 * 2) + width/1920 * 1.5 * 30,height/2);
|
||
|
|
||
|
//line((width/2),height/7*6, (width/2),(height/6*5));
|
||
|
line((width/2),height/2 - (width/1920 * 1.5 * 100 * 2) - width/1920 * 1.5 * 10, (width/2),height/2-(width/1920 * 1.5 * 100 * 2) - width/1920 * 1.5 * 30);
|
||
|
line((width/2),height/2 + (width/1920 * 1.5 * 100 * 2) + width/1920 * 1.5 * 10, (width/2),height/2+(width/1920 * 1.5 * 100 * 2) + width/1920 * 1.5 * 30);
|
||
|
pop();
|
||
|
st = stop;
|
||
|
s = slider.value();
|
||
|
for(let i = 0; i < pendulums.length; i++){
|
||
|
if(!st)
|
||
|
for (let y = 0; y < s; y++) {
|
||
|
//pendulum.update();
|
||
|
pendulums[i].update();
|
||
|
}
|
||
|
pendulums[i].show();
|
||
|
}
|
||
|
if(!st)
|
||
|
t+=s;
|
||
|
text(Math.round(t/144/2 * 100 + Number.EPSILON ) / 100, width/1920 * 1.5 * 100, height/2-width/1920 * 1.5 * 40/2, 300, 100);
|
||
|
|
||
|
// strokeWeight(0);
|
||
|
// text(Math.ceil((a1 * 180 / Math.PI) - Math.PI / 2), -7.5, -15);
|
||
|
}
|
||
|
|
||
|
function buttonCall() {
|
||
|
for(let i = 0; i < pendulums.length; i++){
|
||
|
//pendulums[i].refresh();
|
||
|
pendulums = [];
|
||
|
t = 0;
|
||
|
pendulums.push(new Pendulum(width/2,height/2,width/1920 * 1.5,7/6*0.5));
|
||
|
pendulums.push(new Pendulum(width/2,height/2,width/1920 * 1.5,6/6*0.5));
|
||
|
pendulums.push(new Pendulum(width/2,height/2,width/1920 * 1.5,5/6*0.5));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
function keyPressed() {
|
||
|
if (stop === false) {
|
||
|
stop = true;
|
||
|
} else {
|
||
|
stop = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function getViewport() {
|
||
|
|
||
|
var viewPortWidth;
|
||
|
var viewPortHeight;
|
||
|
|
||
|
// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
|
||
|
if (typeof window.innerWidth != 'undefined') {
|
||
|
viewPortWidth = window.innerWidth,
|
||
|
viewPortHeight = window.innerHeight
|
||
|
}
|
||
|
|
||
|
// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
|
||
|
else if (typeof document.documentElement != 'undefined' &&
|
||
|
typeof document.documentElement.clientWidth !=
|
||
|
'undefined' && document.documentElement.clientWidth != 0) {
|
||
|
viewPortWidth = document.documentElement.clientWidth,
|
||
|
viewPortHeight = document.documentElement.clientHeight
|
||
|
}
|
||
|
|
||
|
// older versions of IE
|
||
|
else {
|
||
|
viewPortWidth = document.getElementsByTagName('body')[0].clientWidth,
|
||
|
viewPortHeight = document.getElementsByTagName('body')[0].clientHeight
|
||
|
}
|
||
|
return [viewPortWidth, viewPortHeight];
|
||
|
}
|