82 lines
1.7 KiB
JavaScript
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)
|
|
}
|
|
});
|
|
}
|
|
}
|