В библиотеке Two.js линии и контуры объектов формируются с использованием соединений, которые определяют, как будут выглядеть углы и стыки между сегментами. Корректная настройка соединений важна для создания аккуратной графики и точного отображения форм, особенно при работе с полигонами и кривыми.
lineJoinСвойство lineJoin контролирует стиль соединения углов
линии и применяется к объектам, которые имеют контур
(stroke). Оно может принимать следующие значения:
miter – стандартное соединение в
виде острого угла.
Углы остаются острыми, пока длина “острого выступа” не превышает
определённого предела (miterLimit).
Используется для четких геометрических фигур, где важно сохранить угловатую форму.
Пример настройки:
var shape = two.makePolygon(0, 0, 50, 5);
shape.linewidth = 5;
shape.stroke = '#000';
shape.lineJoin = 'miter';round – соединение с закруглёнными
углами.
Обеспечивает плавный переход между сегментами.
Удобно для декоративных линий и мягких контуров.
Пример настройки:
var shape = two.makeRectangle(0, 0, 100, 50);
shape.linewidth = 8;
shape.stroke = '#f00';
shape.lineJoin = 'round';bevel – скошенное соединение.
Угол “срезается”, создавая прямую грань между сегментами.
Используется, когда нужно уменьшить визуальную остроту углов или при ограничении толщины линии.
Пример настройки:
var shape = two.makePolygon(0, 0, 60, 3);
shape.linewidth = 6;
shape.stroke = '#00f';
shape.lineJoin = 'bevel';miterLimitКогда соединение углов выставлено на miter, иногда
острые углы создают очень длинные “выступы”. Чтобы ограничить их длину,
используется свойство miterLimit:
Определяет максимальное отношение длины выступа к толщине линии.
Если отношение превышает значение miterLimit,
соединение автоматически преобразуется в bevel.
Пример:
shape.lineJoin = 'miter';
shape.miterLimit = 4; // ограничение длины острого углаДля сложных кривых и многоугольников выбор типа соединения критичен:
miter делает
углы острыми и геометрически точными, bevel уменьшает
визуальную агрессию.round
обеспечивает плавность и визуальное единство.miterLimit помогает избежать чрезмерного удлинения
углов.Если линия строится из последовательности точек:
var points = [
new Two.Anchor(0, 0),
new Two.Anchor(50, 50),
new Two.Anchor(100, 0)
];
var path = new Two.Path(points, true, false);
path.linewidth = 10;
path.stroke = '#333';
path.lineJoin = 'round';
two.add(path);
Two.Anchor задаёт координаты каждой вершины.lineJoin применяется к каждому соединению между
точками.lineJoin с
miterLimit для контроля остроты углов.При анимировании линий или изменения формы объектов важно учитывать тип соединения:
round предотвращает визуальные “заострения” при
трансформации.bevel может визуально смещать углы при резком изменении
координат.miter с низким miterLimit автоматически
корректирует острые углы, предотвращая визуальные артефакты.miter.round.bevel с контролем miterLimit.Использование этих свойств позволяет управлять визуальной точностью и эстетикой линий в Two.js, делая графику более аккуратной и предсказуемой.