AgentNLP commited on
Commit
0eba953
·
verified ·
1 Parent(s): 146a6e0

Create script.js

Browse files
Files changed (1) hide show
  1. script.js +57 -0
script.js ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const canvas = document.getElementById("canvas");
2
+ const ctx = canvas.getContext("2d");
3
+ const modeSelect = document.getElementById("mode");
4
+ const intensitySlider = document.getElementById("intensity");
5
+
6
+ function resize() {
7
+ canvas.width = window.innerWidth;
8
+ canvas.height = window.innerHeight;
9
+ }
10
+ window.addEventListener("resize", resize);
11
+ resize();
12
+
13
+ let t = 0;
14
+
15
+ const modes = {
16
+ delta: { freq: 1.2, amp: 140, hue: 220 },
17
+ theta: { freq: 3.5, amp: 110, hue: 190 },
18
+ alpha: { freq: 8, amp: 90, hue: 160 },
19
+ beta: { freq: 18, amp: 70, hue: 40 },
20
+ gamma: { freq: 32, amp: 100, hue: 300 }
21
+ };
22
+
23
+ function draw() {
24
+ ctx.fillStyle = "rgba(0, 0, 0, 0.12)";
25
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
26
+
27
+ const { freq, amp, hue } = modes[modeSelect.value];
28
+ const intensity = intensitySlider.value;
29
+ const centerY = canvas.height / 2;
30
+
31
+ for (let layer = 0; layer < 7; layer++) {
32
+ ctx.beginPath();
33
+ ctx.lineWidth = 2;
34
+ ctx.strokeStyle = `hsla(
35
+ ${hue + layer * 15 + t * 10},
36
+ 100%,
37
+ 60%,
38
+ 0.85
39
+ )`;
40
+
41
+ for (let x = 0; x <= canvas.width; x++) {
42
+ const y =
43
+ centerY +
44
+ Math.sin(x * 0.008 * freq + t + layer) *
45
+ amp *
46
+ intensity *
47
+ Math.sin(t * 0.5 + layer);
48
+ ctx.lineTo(x, y);
49
+ }
50
+ ctx.stroke();
51
+ }
52
+
53
+ t += 0.025;
54
+ requestAnimationFrame(draw);
55
+ }
56
+
57
+ draw();