JS_Projects/clock/sketch.js

106 lines
3.7 KiB
JavaScript
Raw Permalink Normal View History

2022-11-09 23:34:49 +01:00
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];
}