Path — ключевая сущность в Paper.js, представляющая
последовательность сегментов, соединённых линиями или кривыми. Любая
сложная фигура, от простой линии до сложного контура, строится именно на
основе Path.
Каждый путь состоит из:
Базовое создание пустого пути:
var path = new Path();
path.strokeColor = 'black';
Добавление сегментов:
path.add(new Point(50, 50));
path.add(new Point(150, 50));
path.add(new Point(150, 150));
Альтернативный способ — создание пути сразу с сегментами:
var path = new Path({
segments: [[50, 50], [150, 50], [150, 150]],
strokeColor: 'black'
});
var path = new Path.Line({
from: [50, 50],
to: [150, 150],
strokeColor: 'black'
});
var rect = new Path.Rectangle({
point: [50, 50],
size: [100, 80],
strokeColor: 'black'
});
var circle = new Path.Circle({
center: [100, 100],
radius: 50,
strokeColor: 'black'
});
var ellipse = new Path.Ellipse({
point: [50, 50],
size: [150, 100],
strokeColor: 'black'
});
strokeColor — цвет линииfillColor — цвет заливкиpath.strokeColor = 'blue';
path.fillColor = 'lightblue';
path.strokeWidth = 5;
path.opacity = 0.5;
path.closed = true;
Если путь замкнут, последняя точка автоматически соединяется с первой.
var segment = path.segments[0];
segment.point.x += 20;
segment.point.y += 10;
path.insert(1, new Point(100, 100));
path.removeSegment(0);
Каждый сегмент может содержать две ручки:
handleInhandleOutПример создания кривой:
var path = new Path();
path.strokeColor = 'black';
path.add({
point: [50, 150],
handleOut: [50, -100]
});
path.add({
point: [150, 150],
handleIn: [-50, -100]
});
Ручки определяют направление и силу изгиба.
path.position += new Point(50, 0);
path.scale(1.5);
path.rotate(45);
path.shear(0.5, 0);
Каждый путь имеет ограничивающий прямоугольник:
var bounds = path.bounds;
Свойства:
bounds.widthbounds.heightbounds.centerПример:
path.position = view.center;
Paper.js поддерживает операции над путями:
var result = path1.unite(path2);
var result = path1.intersect(path2);
var result = path1.subtract(path2);
var result = path1.exclude(path2);
После выполнения создаётся новый путь.
path.simplify();
Удаляет лишние точки, сохраняя форму.
path.smooth();
Делает контур более плавным.
Определение, находится ли точка внутри пути:
if (path.contains(new Point(100, 100))) {
console.log('Внутри');
}
var length = path.length;
var point = path.getPointAt(100);
var normal = path.getNormalAt(100);
var tangent = path.getTangentAt(100);
var newPath = path.splitAt(100);
Разделяет путь на два в указанной позиции.
path.remove();
Удаляет объект из сцены.
Path применяется для:
Гибкость Path позволяет управлять геометрией на уровне
отдельных точек, что делает Paper.js мощным инструментом для работы с
векторной графикой.