]>
git.r.bdr.sh - rbdr/r.bdr.sh/blob - js/animation.js
f33198215d0e0e5947c03c5480d673b83e0d0433
3 var K
= document
.querySelector('canvas'),
4 { random: r
, PI
, cos
, sin
, floor
, atan2
} = Math
,
5 ctx
= K
.getContext('2d'),
12 I
= Array(rnd(10) + 6).fill(null).map(() => ({
16 c: Array(3).fill(rnd(256))
18 SHP
= [sqr
, crc
, hrt
, chs
, lch
],
19 POS
= [id
, spn(5), spn(15)],
20 draw
= SHP
[rnd(SHP
.length
)],
21 pos
= POS
[rnd(POS
.length
)];
24 return floor(r() * x
);
30 ctx
.fillRect(p
.x
, p
.y
, siz
, siz
);
37 ctx
.arc(p
.x
, p
.y
, siz
/ 2, 0, 2 * PI
);
46 ctx
.lineTo(p
.x
* 10 * cos(i
.a
), p
.y
* 10 * sin(i
.a
));
47 ctx
.lineTo(rnd(64), rnd(64));
56 ctx
.strokeStyle
= `rgb(${i.c.join(',')})`;
58 ctx
.lineTo(p
.x
* 10 * cos(i
.a
), p
.y
* 10 * sin(i
.a
));
65 ctx
.fillRect(p
.x
, p
.y
, siz
, siz
);
68 ctx
.arc(p
.x
+ siz
/ 2, p
.y
, siz
/ 2, 0, 2 * PI
, false);
73 ctx
.arc(p
.x
+ siz
, p
.y
+ siz
/ 2, siz
/ 2, 0, 2 * PI
, false);
87 x: p
.x
+ rad
* cos(lst
),
88 y: p
.y
+ rad
* sin(lst
)
95 i
.x
= i
.x
+ spd
* cos(i
.a
);
96 i
.y
= i
.y
+ spd
* sin(i
.a
);
98 if (i
.x
< 0 || i
.x
> 64) {
99 i
.a
= atan2(sin(i
.a
), -cos(i
.a
))
102 if (i
.y
< 0 || i
.y
> 64) {
103 i
.a
= atan2(-sin(i
.a
), cos(i
.a
))
109 i
.c
= i
.c
.map((c
) => {
111 return c
> 255 ? 0 : c
;
117 window
.requestAnimationFrame(frm
);
121 if (dt
> 1000 / fps
) {
122 clr
&& ctx
.clearRect(0, 0, 64, 64);
124 ctx
.fillStyle
= `rgb(${i.c.join(',')})`;