]>
git.r.bdr.sh - rbdr/r.bdr.sh/blob - js/animation.js
3 if (window
.matchMedia('(prefers-reduced-motion: reduce)').matches
) return
5 var K
= document
.querySelector('canvas'),
6 { random: R
, PI
, cos: C
, sin: S
, atan2: A
} = Math
,
12 X
= K
.getContext('2d'), F
= X
.fill
.bind(X
), B
= X
.beginPath
.bind(X
),
13 f
= 24, l
= 0, s
= 1, z
= 5 + r(10),
14 k
= R() > 0.5, c
= R() > 0.5,
15 I
= Array(r(10) + 6).fill().map(() => ({
17 a: R() * 2 * PI
, c: r(100)
19 H
= [sqr
, crc
, hrt
, chs
, lch
], P
= [id
, spn(5), spn(15)],
20 draw
= H
[r(H
.length
)], pos
= P
[r(P
.length
)],
29 X
.fillRect(p
.x
, p
.y
, z
, z
)
35 X
.arc(p
.x
, p
.y
, z
/ 2, 0, 2 * PI
)
43 X
.lineTo(x
* 10 * C(i
.a
), y
* 10 * S(i
.a
))
44 X
.lineTo(r(64), r(64))
52 X
.strokeStyle
= `hsl(0,0%,${i.c}%)`
54 X
.lineTo(x
* 10 * C(i
.a
), y
* 10 * S(i
.a
))
60 X
.fillRect(x
, y
, z
, z
)
63 X
.arc(x
+ z
/ 2, y
, z
/ 2, 0, 2 * PI
, false)
68 X
.arc(x
+ z
, y
+ z
/ 2, z
/ 2, 0, 2 * PI
, false)
74 i
.x
= i
.x
+ s
* C(i
.a
)
75 i
.y
= i
.y
+ s
* S(i
.a
)
77 if (i
.x
< 0 || i
.x
> 64) {
78 i
.a
= A(S(i
.a
), -C(i
.a
))
80 if (i
.y
< 0 || i
.y
> 64) {
81 i
.a
= A(-S(i
.a
), C(i
.a
))
90 if (Z
) requestAnimationFrame(frm
)
95 k
&& X
.clearRect(0, 0, 64, 64)
97 X
.fillStyle
= `hsl(0,0%,${i.c}%)`
107 K
.addEventListener('click', () => ((Z
=Z
?0:1)&&frm()))