Paper.js — это векторная библиотека для HTML5 Canvas, которая
позволяет работать с графикой на JavaScript на высоком уровне
абстракции. Для построения звёздных фигур используется объект
Path.Star, который упрощает создание сложных
многоугольников с равномерно распределёнными лучами.
Объект Path.Star создаётся с помощью конструктора:
let star = new Path.Star({
center: [150, 150],
points: 5,
radius1: 50,
radius2: 100,
fillColor: 'yellow',
strokeColor: 'black'
});
Пояснение параметров:
center — координаты центра звезды
[x, y].points — количество лучей звезды. Значение должно быть
≥ 2.radius1 — радиус внутреннего круга, к которому
примыкают вершины внутренних точек.radius2 — радиус внешнего круга, к которому примыкают
вершины наружных точек.fillColor — цвет заливки фигуры.strokeColor — цвет контура.Звезда строится как чередующаяся последовательность точек внутреннего и внешнего радиусов, расположенных равномерно по окружности. Каждая вершина вычисляется с использованием тригонометрических функций:
let step = 360 / (points * 2);
for (let i = 0; i < points * 2; i++) {
let angle = step * i;
let radius = i % 2 === 0 ? radius2 : radius1;
let x = center.x + radius * Math.cos(angle * Math.PI / 180);
let y = center.y + radius * Math.sin(angle * Math.PI / 180);
star.add(new Point(x, y));
}
star.closed = true;
Такой подход обеспечивает точное чередование длин внешнего и внутреннего радиусов, создавая классическую форму звезды.
Paper.js позволяет гибко настраивать визуальные свойства звезды:
strokeWidth — толщина линии контура.dashArray — массив для создания пунктирной линии.shadowColor, shadowBlur,
shadowOffset — тень для придания объёма.Пример:
star.strokeWidth = 4;
star.dashArray = [10, 5];
star.shadowColor = new Color(0, 0, 0, 0.5);
star.shadowBlur = 12;
star.shadowOffset = new Point(5, 5);
Для анимации объектов Paper.js используется функция
view.onFrame, которая вызывается на каждом кадре
анимации:
view.onFr ame = function(event) {
star.rotate(1); // поворот на 1 градус за кадр
};
Можно комбинировать вращение с изменением радиусов для создания эффекта пульсации:
let scaleFactor = Math.sin(Date.now() * 0.005) * 0.3 + 1;
star.scale(scaleFactor);
Paper.js поддерживает обработку событий мыши:
star.onMouseEn ter = function(event) {
this.fillColor = 'orange';
};
star.onMouseLe ave = function(event) {
this.fillColor = 'yellow';
};
Также можно использовать onMouseDrag для перемещения
звезды:
star.onMouseD rag = function(event) {
this.position += event.delta;
};
Для сложных сцен звезды удобно размещать на отдельных слоях:
let starLayer = new Layer();
starLayer.addChild(star);
starLayer.activate();
Слои позволяют управлять видимостью, порядком отрисовки и группировать элементы для анимации.
Path
и изменять только его свойства.Path.Star с
Path.Circle или Path.Rectangle через
PathItem.subtract и PathItem.unite для
создания уникальных форм.Объект Path.Star является мощным инструментом для
создания симметричных фигур с высокой гибкостью по настройке размеров,
количества точек и визуальных эффектов. С помощью анимации,
интерактивных событий и слоёв возможно создавать динамичные и визуально
привлекательные сцены на Canvas, минимизируя сложность математических
вычислений.