]>
git.r.bdr.sh - rbdr/r.bdr.sh/blob - js/animation.js
df1673e1a226faff20791df83cf22749fabe0ef8
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 dr
= H
[r(H
.length
)], pos
= P
[r(P
.length
)],
28 X
.fillRect(p
.x
, p
.y
, z
, z
)
33 X
.arc(p
.x
, p
.y
, z
/ 2, 0, 2 * PI
)
40 X
.lineTo(x
* 10 * C(i
.a
), y
* 10 * S(i
.a
))
41 X
.lineTo(r(64), r(64))
48 X
.strokeStyle
= `hsl(0,0%,${i.c}%)`
50 X
.lineTo(x
* 10 * C(i
.a
), y
* 10 * S(i
.a
))
55 X
.fillRect(x
, y
, z
, z
)
58 X
.arc(x
+ z
/ 2, y
, z
/ 2, 0, 2 * PI
, false)
63 X
.arc(x
+ z
, y
+ z
/ 2, z
/ 2, 0, 2 * PI
, false)
68 i
.x
= i
.x
+ s
* C(i
.a
)
69 i
.y
= i
.y
+ s
* S(i
.a
)
71 if (i
.x
< 0 || i
.x
> 64) {
72 i
.a
= A(S(i
.a
), -C(i
.a
))
74 if (i
.y
< 0 || i
.y
> 64) {
75 i
.a
= A(-S(i
.a
), C(i
.a
))
78 function ucl(i
) {i
.c
= (i
.c
+ 2) % 101}
80 if (Z
) requestAnimationFrame(frm
)
83 k
&& X
.clearRect(0, 0, 64, 64)
85 X
.fillStyle
= `hsl(0,0%,${i.c}%)`
95 K
.addEventListener('click', () => ((Z
=Z
?0:1)&&frm()))