ืจืงืขื™ืื—ื“ืฉ

ืœื”ืงืช ืฆื™ืคื•ืจื™ื

ืœื”ืงื” ื—ื™ื” ืขืœ canvas: ื”ืฆื™ืคื•ืจื™ื ื ืฉืืจื•ืช ื™ื—ื“, ืœื ืžืชื ื’ืฉื•ืช ื•ืžืชืคื–ืจื•ืช ืžื”ืกืžืŸ.

ื”ืชืืžื”

background
color

ืžื‘ื•ืกืก ืขืœ Boids Ecosystem (MIT ืจื™ืฉื™ื•ืŸ) ยท ืชื ืื™ ืฉื™ืžื•ืฉ

ืžืืคื™ื™ื ื™ื

10 ืžืืคื™ื™ื ื™ื
ืžืืคื™ื™ืŸืกื•ื’ื‘ืจื™ืจืช ืžื—ื“ืœืชื™ืื•ืจ
countnumber120ื›ืžื” ืฆื™ืคื•ืจื™ื ื‘ืœื”ืงื”.
agentShape'triangle' | 'dot'"triangle"ืฆื•ืจืช ื”ืฆื™ืคื•ืจื™ื: ืžืฉื•ืœืฉ ืื• ื ืงื•ื“ื”.
cursorRadiusnumber90ื”ืžืจื—ืง ืฉื‘ื• ื”ืœื”ืงื” ืžืชืจื—ืงืช ืžื”ืกืžืŸ, ื‘ืคื™ืงืกืœื™ื.
backgroundstring"#0a0a0a"ืฆื‘ืข ื”ืจืงืข ื‘ืคื•ืจืžื˜ #rrggbb. ื”ืฉื•ื‘ืœื™ื ื“ื•ื”ื™ื ืืœื™ื•.
palettestring[]"[\"#fafafa\", \"#d4d4d4\", \"#a3a3a3\", \"#737373\"]"ืฆื‘ืขื™ ื”ืฆื™ืคื•ืจื™ื, ื›ืœ ืื—ืช ืžืงื‘ืœืช ืฆื‘ืข ืืงืจืื™.
colorstringโ€”ืฆื‘ืข ืื—ื“ ืœืœื”ืงื”: ื”ืฆื™ืคื•ืจื™ื ืžืงื‘ืœื•ืช ื’ื•ื•ื ื™ื ื‘ื”ื™ืจื™ื ื•ื›ื”ื™ื ืฉืœื• ื‘ืžืงื•ื palette.
attractors{ x: number; y: number; strength?: number; radius?: number }[]โ€”ื ืงื•ื“ื•ืช ืฉื”ืœื”ืงื” ื ืžืฉื›ืช ืืœื™ื”ืŸ. x ื•-y ืž-0 ืขื“ 1.
agentsRefRefObject<BoidAgent[] | null>โ€”ื”ืคื ื™ื” ืœืžืขืจืš ื”ืฆื™ืคื•ืจื™ื ื”ื—ื™, ื›ื“ื™ ืœืงืจื•ื ืืช ื”ืžื™ืงื•ืžื™ื.
childrenReactNodeโ€”ืชื•ื›ืŸ ืžืขืœ ื”ืจืงืข, ืœืžืฉืœ ื›ื•ืชืจืช.
classNamestringโ€”ืžื—ืœืงื•ืช ืœืขื•ื˜ืฃ.

ืชืœื•ื™ื•ืช

2 ื—ื‘ื™ืœื•ืช ื ื“ืจืฉื•ืช

npm install clsx tailwind-merge

ืจื›ื™ื‘ื™ื ื“ื•ืžื™ื

ืœื›ืœ ื”ืจื›ื™ื‘ื™ื