var nothingness = (window.localStorage.getItem('nothings') || 1) * 1, nGain = 0.003; var getBonus = 0; var mx = 0, my = 0; let clicking = false; let counts = JSON.parse(window.localStorage.getItem('counts')) || {}; var cubePos = []; window.addEventListener('mousemove', (e) => { mx = e.pageX; my = e.pageY; }); document.querySelector('canvas').addEventListener('click', (e) => { let p1 = MDN.perspectiveMatrix(Math.PI * 100 / 180, ratio, 0.01, 1000) for (let cubieI in cubePos) { let bonus = 1 + counts.doNothing / (cubieI * .02 + 2); let cubie = cubePos[cubieI]; let p2 = MDN.multiplyPoint(p1, [cubie[0], cubie[1], cubie[2], 0]); p2[0] /= p2[3]; p2[1] /= p2[3]; p2[0] -= (mx - width / 2) / width * 2; p2[1] += (my - height / 2) / height * 2; let b = 1 / (Math.sqrt(p2[0] ** 2 + p2[1] ** 2) + .03); b = (b * b) * 0.0001 b *= bonus; getBonus += b; } }); setInterval(function () { nothingness += nGain + getBonus; nGain = 0.003 + 0.003 * cubePos.length; getBonus *= 0.93; for (let ab in cubePos) { let a = cubePos[ab]; let bonus = 1 + counts.doNothing / (ab* .02 + 2); bonus = (bonus) ** 0.05; let f = (nGain + getBonus * bonus * 10000 + 10) / (nothingness + 10); f /= (counts.intersectThings + 1); let dist = Math.sqrt(a[0] ** 2 + a[1] ** 2) dist = (f * 90 / dist) ** 0.1; a[3] = a[3] * 0.9 + a[0] * (dist - 1); a[4] = a[4] * 0.9 + a[1] * (dist - 1); a[0] += a[3] * 0.01; a[1] += a[4] * 0.01; a[3] += Math.sin(f * 0.1) * a[1]; a[4] += -Math.sin(f * 0.1) * a[0]; } }, 1000 / 60) document.querySelector('canvas').addEventListener('click', async (e) => { if (clicking) return; clicking = true; getBonus += 0.01; clicking = false; }) setInterval(function () { window.localStorage.setItem('nothings', nothingness); window.localStorage.setItem('counts', JSON.stringify(counts)); }, 1000)