23 lines
1.2 KiB
JavaScript
23 lines
1.2 KiB
JavaScript
import { getRangeValue } from "tsparticles-engine";
|
|
export class PolygonDrawerBase {
|
|
draw(context, particle, radius) {
|
|
const start = this.getCenter(particle, radius), side = this.getSidesData(particle, radius), sideCount = side.count.numerator * side.count.denominator, decimalSides = side.count.numerator / side.count.denominator, interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides, interiorAngle = Math.PI - (Math.PI * interiorAngleDegrees) / 180;
|
|
if (!context) {
|
|
return;
|
|
}
|
|
context.beginPath();
|
|
context.translate(start.x, start.y);
|
|
context.moveTo(0, 0);
|
|
for (let i = 0; i < sideCount; i++) {
|
|
context.lineTo(side.length, 0);
|
|
context.translate(side.length, 0);
|
|
context.rotate(interiorAngle);
|
|
}
|
|
}
|
|
getSidesCount(particle) {
|
|
var _a, _b;
|
|
const polygon = particle.shapeData, sides = Math.round(getRangeValue((_b = (_a = polygon === null || polygon === void 0 ? void 0 : polygon.sides) !== null && _a !== void 0 ? _a : polygon === null || polygon === void 0 ? void 0 : polygon.nb_sides) !== null && _b !== void 0 ? _b : 5));
|
|
return sides;
|
|
}
|
|
}
|