Замыкание пути — это операция, при которой последняя точка фигуры автоматически соединяется с первой, образуя замкнутый контур. В контексте Two.js это критически важный механизм, влияющий на отрисовку, заливку и поведение геометрических объектов.
Любой путь (Two.Path) в библиотеке может существовать в
двух состояниях:
Замкнутые пути используются для построения фигур с заливкой, таких как многоугольники, круги и сложные формы.
closedКлючевым инструментом управления замыканием является свойство:
path.closed = true;
true — путь замыкается, последняя вершина соединяется с
первойfalse — путь остаётся открытымconst points = [
new Two.Anchor(0, 0),
new Two.Anchor(100, 0),
new Two.Anchor(100, 100)
];
const path = new Two.Path(points, true);
two.add(path);
Во втором аргументе конструктора сразу передаётся значение
closed.
fill)Заливка применяется только к замкнутым путям:
path.fill = 'red';
Если путь не замкнут:
stroke)stroke)Обводка работает для любых путей, но визуально отличается:
path.stroke = 'black';
path.linewidth = 2;
При замыкании автоматически добавляется дополнительный сегмент:
последняя точка → первая точка
Это влияет на:
Некоторые встроенные методы Two.js создают уже замкнутые фигуры:
two.makeRectangle(...)
two.makeCircle(...)
two.makePolygon(...)
Во всех этих случаях:
shape.closed === true
Иногда требуется динамически менять состояние пути:
path.closed = false;
two.update();
path.closed = true;
two.update();
Это полезно:
vertices)Замыкание влияет на интерпретацию массива вершин:
path.vertices
A → B → C
A → B → C → A
При этом первая точка не дублируется в массиве, замыкание происходит логически.
Если используются кривые Безье:
anchor.controls.left
anchor.controls.right
замыкание влияет на:
Важно учитывать:
automaticУ путей есть свойство:
path.automatic = true;
При отключении:
path.automatic = false;
разработчик полностью контролирует геометрию.
const polygon = new Two.Path(points, true);
polygon.fill = 'blue';
const graph = new Two.Path(points, false);
graph.stroke = 'green';
graph.fill = 'none';
function toggle(path) {
path.closed = !path.closed;
}
Причина:
path.closed = false;
Если путь замкнут, появляется соединение:
конец → начало
Иногда это выглядит как «лишняя линия».
При замыкании кривых:
Замкнутые пути:
Однако в большинстве случаев разница минимальна и не критична.
При экспорте в SVG:
closed = true → используется команда
Zclosed = false → путь остаётся открытымПример:
M 0 0 L 100 0 L 100 100 Z
Z обозначает замыкание.
При анимации пути:
path.beginning = 0;
path.ending = 1;
замыкание влияет на:
Для замкнутых путей:
Two.js реализует замыкание через:
closed в геометрииЭто означает:
Замкнутые пути корректно работают с:
path.translation
path.rotation
path.scale
Но важно учитывать:
bounds)const path = new Two.Path(vertices, closed, curved, manual);
Где:
vertices — массив точекclosed — замкнут ли путьcurved — используются ли кривыеmanual — ручное управлениеЗамыкание пути — фундаментальная часть работы с геометрией в Two.js, напрямую влияющая на визуальный результат, поведение анимаций и структуру данных. Правильное использование этого механизма позволяет строить как простые фигуры, так и сложные динамические формы.