Якорные точки (Anchor Points) — ключевые элементы в Two.js, определяющие форму и геометрию линий и кривых. Каждая точка содержит координаты и дополнительные параметры, позволяющие управлять изгибами сегментов. В контексте векторной графики они играют ту же роль, что вершины в полигональных моделях, но с расширенными возможностями за счёт управляющих векторов.
В библиотеке Two.js якорные точки используются в объектах
Two.Path, Two.Polygon, Two.Line и
других примитивах, построенных на основе сегментов.
Якорная точка представлена объектом Two.Anchor и
включает следующие основные свойства:
move, line, curve)Пример создания:
const anchor = new Two.Anchor(100, 150);
Каждая якорная точка может содержать два управляющих вектора:
controls.leftcontrols.rightОни определяют форму кривой до и после точки.
anchor.controls.left.set(-20, 0);
anchor.controls.right.set(20, 0);
(0, 0), сегмент становится
прямой линиейСвойство command определяет, как интерпретируется точка
в пути:
Two.Commands.move — перемещение без рисованияTwo.Commands.line — прямая линияTwo.Commands.curve — кривая БезьеTwo.Commands.close — замыкание путиПример:
anchor.command = Two.Commands.curve;
Внутри Two.Path якорные точки хранятся в массиве
vertices:
const path = new Two.Path([
new Two.Anchor(0, 0),
new Two.Anchor(100, 100),
new Two.Anchor(200, 0)
]);
path.vertices[1].x = 150;
path.vertices[1].y = 50;
Two.js использует кубические кривые Безье, где каждая пара точек соединяется сегментом, управляемым их векторами.
Для двух точек:
controls.rightcontrols.leftИменно эти два вектора формируют изгиб между точками.
Управляющие векторы направлены в противоположные стороны и имеют одинаковую длину:
anchor.controls.left.set(-30, 0);
anchor.controls.right.set(30, 0);
Обеспечивает плавный переход.
Один или оба вектора равны нулю:
anchor.controls.left.set(0, 0);
anchor.controls.right.set(0, 0);
Создаёт резкий угол.
Изменение якорных точек позволяет анимировать формы:
two.bind('upd ate', function() {
path.vertices[0].x += Math.sin(Date.now() * 0.001);
});
Важно учитывать:
path._flagVertices = trueСвойство closed определяет, соединяется ли последняя
точка с первой:
path.closed = true;
При этом:
Two.js автоматически интерполирует сегменты между якорными точками, но поведение зависит от:
commandЕсли у точки отсутствуют controls, сегмент становится
линейным.
path.vertices.push(new Two.Anchor(300, 200));
path.vertices.splice(1, 1);
После изменений желательно обновить флаги:
path._flagVertices = true;
Многие примитивы автоматически создают якорные точки:
const circle = two.makeCircle(100, 100, 50);
Внутри:
controlsДоступ:
circle.vertices.forEach(v => console.log(v));
Якорные точки наследуют поведение Two.Vector, поэтому
доступны методы:
anchor.add(new Two.Vector(10, 0));
anchor.multiplyScalar(2);
Это упрощает геометрические преобразования.
Свойство relative определяет, интерпретируются ли
координаты относительно предыдущей точки:
anchor.relative = true;
Используется редко, но важно при импорте SVG.
При загрузке SVG:
two.load('shape.svg', function(group) {
two.add(group);
});
AnchorЭто делает якорные точки универсальным представлением любой векторной графики.
При работе с большим количеством точек:
Anchorpath._automatic = false;
const points = [
new Two.Anchor(50, 50),
new Two.Anchor(150, 150),
new Two.Anchor(250, 50)
];
points[1].controls.left.se t(-50, 0);
points[1].controls.right.set(50, 0);
const curve = new Two.Path(points, false);
two.add(curve);
Результат:
Изменение одной точки влияет на:
Поэтому при проектировании сложных форм важно:
1. Отсутствие управляющих векторов → линия становится ломаной
2. Слишком длинные векторы → появляются «перелёты» и артефакты
3. Несогласованные направления → резкие изломы
4. Частое пересоздание точек → снижение производительности
Якорная точка — это не просто координата, а полноценный инструмент управления геометрией:
Глубокое понимание структуры Two.Anchor позволяет
создавать сложные, плавные и оптимизированные векторные формы в
Two.js.