Two.js предоставляет мощные инструменты для работы с векторной
графикой, включая возможность создания дуг и секторов, которые могут
использоваться как отдельные элементы или как часть сложных композиций.
Основным объектом для построения таких фигур является
Two.Path, а также специализированный метод
makeArcSegment.
makeArcSegmentМетод makeArcSegment позволяет создать сегмент
окружности или дугу с указанными параметрами:
const arc = two.makeArcSegment(x, y, radius, startAngle, endAngle, clockwise);
Параметры:
x, y — координаты центра окружности.radius — радиус дуги.startAngle, endAngle — начальный и
конечный углы в радианах.clockwise — логическое значение (true/false),
определяющее направление построения дуги.Пример:
const two = new Two({ width: 400, height: 400 }).appendTo(document.body);
const arc = two.makeArcSegment(
200, 200, // центр
100, // радиус
0, Math.PI / 2, // углы: от 0 до 90 градусов
false // против часовой стрелки
);
arc.stroke = '#FF0000';
arc.linewidth = 4;
two.update();
В данном примере создается четверть круга с красной линией толщиной 4 пикселя.
Цвет и толщина линии
stroke — цвет контура.linewidth — толщина линии.fill — цвет заливки (для замкнутых дуг, например с
секторами).arc.stroke = '#0000FF';
arc.linewidth = 2;
arc.fill = 'rgba(0,0,255,0.2)';
Замкнутые дуги (сектора)
Для создания сектора необходимо замкнуть дугу с центром:
arc.closed = true;
После этого fill будет окрашивать внутреннюю часть
сектора.
Two.js поддерживает анимацию свойств объектов через обновление в
two.update() внутри цикла
requestAnimationFrame.
Пример анимации угла:
let endAngle = 0;
two.bind('upd ate', function(frameCount) {
endAngle += 0.02;
arc.vertices = two.makeArcSegment(200, 200, 100, 0, endAngle, false).vertices;
}).play();
В этом примере сектор постепенно увеличивается, создавая эффект «нарастающей дуги».
Можно создавать несколько дуг и секторов с разными свойствами:
const arcs = [];
for (let i = 0; i < 5; i++) {
const a = two.makeArcSegment(
200, 200,
50 + i * 20,
0,
Math.PI / (i + 2),
false
);
a.stroke = `hsl(${i*60}, 80%, 50%)`;
a.linewidth = 3;
arcs.push(a);
}
Каждая дуга будет отличаться радиусом, углом и цветом, создавая динамическую композицию.
Объекты дуг и секторов поддерживают стандартные трансформации:
translate(x, y) — смещение.rotate(angle) — вращение.scale(sx, sy) — масштабирование.Пример вращающегося сектора:
two.bind('update', function(frameCount) {
arc.rotation += 0.01;
}).play();
Дуги в Two.js являются полноценными объектами сцены и могут
комбинироваться с прямыми линиями, кругами и другими фигурами.
Использование групп (Two.Group) позволяет объединять дуги и
применять к ним общие трансформации:
const group = two.makeGroup(arc, anotherArc);
group.rotation = Math.PI / 4;
group.translation.se t(100, 50);
Math.PI / 180 * degrees для перевода из градусов.vertices, чем пересоздавать объект заново.Дуги и секторы поддерживают события мыши через стандартные слушатели DOM, но для более сложной интерактивности можно использовать Two.js в связке с библиотеками для отслеживания столкновений или кликов по векторным объектам.
Этот подход к дугам и секторам позволяет создавать визуально насыщенные графики, анимации и интерактивные диаграммы, полностью используя возможности Two.js.