В библиотеке Two.js линии реализуются через объект
Two.Line, который наследует базовые свойства двухмерных
фигур. Линия определяется двумя точками: начальной (x1, y1)
и конечной (x2, y2). Для создания линии необходимо передать
эти координаты при инициализации объекта:
let line = two.makeLine(50, 50, 200, 200);
Ключевые свойства линии:
stroke: цвет линии.linewidth: толщина линии.opacity: прозрачность линии.visible: видимость объекта.line.stroke = '#ff0000';
line.linewidth = 4;
line.opacity = 0.8;
После создания линии важно добавить её в сцену Two.js, используя
метод two.update(), который обновляет отображение всех
объектов на канвасе.
Ломаная линия в Two.js создаётся с помощью объекта
Two.Path, который принимает массив точек. Каждая точка
задаётся в формате [x, y]. Пример создания ломаной
линии:
let points = [
[50, 50],
[150, 100],
[100, 200],
[200, 250]
];
let polyline = two.makePath(points, false); // false – ломаная, true – замкнутый контур
polyline.stroke = '#0000ff';
polyline.linewidth = 3;
Особенности использования ломаных линий:
closed определяет, будет ли линия
замкнутой.vertices объекта polyline:polyline.vertices.push(new Two.Anchor(250, 150));
two.update();
x, y и
relative, позволяющие строить сложные трансформации.Two.js поддерживает анимацию координат точек линии и вершин ломаной.
Для этого используется метод two.bind('upd ate', callback),
который вызывается на каждом кадре:
two.bind('update', function(frameCount) {
line.vertices[1].x = 200 + Math.sin(frameCount * 0.05) * 50;
polyline.vertices[2].y = 200 + Math.cos(frameCount * 0.05) * 50;
}).play();
Важные моменты:
vertices линии или ломаной линии – это массив объектов
Two.Anchor, каждая вершина которого можно изменять
индивидуально.two.play() запускает анимацию, а
two.pause() её останавливает.Two.js позволяет применять визуальные эффекты к линиям и ломаным:
fill) для замкнутых
ломаных.cap (round, square,
butt) для концевых точек.opacity для
создания наложений.polyline.stroke = '#00ff00';
polyline.linewidth = 5;
polyline.cap = 'round';
polyline.opacity = 0.7;
Для сглаживания ломаных линий используется метод Two.Path.smooth(), который превращает резкие углы в плавные кривые. Пример:
polyline.vertices = polyline.vertices.map(v => new Two.Anchor(v.x, v.y));
polyline.smooth();
two.update();
smooth() работает с текущим массивом вершин.polyline.curved = true и модификацию
polyline.smoothing.Two.js поддерживает динамическое взаимодействие с линиями через обработку событий мыши. Пример изменения линии при наведении курсора:
polyline._renderer.elem.addEventListener('mousemove', (e) => {
polyline.vertices[1].x = e.offsetX;
polyline.vertices[1].y = e.offsetY;
two.update();
});
_renderer.elem – это канвас, на котором отрисовывается
объект.В сложных сценах линии и ломаные можно объединять в группы
(Two.Group), что позволяет применять трансформации к набору
объектов:
let group = two.makeGroup(line, polyline);
group.translation.se t(100, 50);
group.rotation = Math.PI / 4;
two.update();