experiments/matheart/main.js

82 lines
1.7 KiB
JavaScript

let resetButton = document.querySelector('.reset');
let play =true
let wiw
let wih
function setup() {
wiw = innerWidth
wih = innerHeight - 200
createCanvas(wiw, wih);
}
let count = 360;
let pi = Math.PI
let step = 1;
let ang = 0
let nums = []
let multiplier = 2;
let centerx = window.innerWidth/2;
let centery = (window.innerHeight - 200)/2
let R = centery/1.2;
let length = pi * R
for (let i = 1; i <= count; i++){
ang += pi / (count / multiplier / 2)
let numx = centerx + (Math.sin(ang) * R)
let numy = centery + (Math.cos(ang) * R)
let num = i;
nums.push({num, x: numx, y:numy})
}
resetButton.addEventListener('click', () => {
count += 20 ;
pi = Math.PI
step = 1;
ang = 0
nums = []
multiplier += 1;
centerx = window.innerWidth/2;
centery = (window.innerHeight - 200)/2
R = centery/1.2;
length = pi * R
for (let i = 1; i <= count; i++){
ang += pi / (count / multiplier / 2)
let numx = centerx + (Math.sin(ang) * R)
let numy = centery + (Math.cos(ang) * R)
let num = i;
nums.push({num, x: numx, y:numy})
}
console.log(nums.length)
})
function draw() {
if (play) {
background('#eee')
fill('#eded33')
ellipse(centerx, centery, R*2);
fill('#35ff3d')
nums.forEach(num => {
ellipse(num.x,num.y, 5);
let next = num.num * multiplier > count ? num.num * multiplier - (~~(num.num * multiplier / count) * count) : num.num * multiplier;
try{
let n = next - 1 < 0 ? 0 : next -1;
let nx = nums[n].x
let ny = nums[n].y
let x = num.x
let y = num.y
line (nx, ny, x, y)
}
catch (e) {
console.error(e)
play = false
console.log(next)
console.log(nums.length)
}
});
}
}