Для работы с графическими объектами в SVG.js ключевым является
создание элементов с помощью метода rect(). Этот метод
возвращает объект SVG.Rect, который предоставляет полный
набор инструментов для управления размерами, положением и стилем
прямоугольников.
const draw = SVG().addTo('body').size(500, 500);
const rectangle = draw.rect(200, 100).attr({ fill: '#3498db', x: 50, y: 50 });
Здесь создается прямоугольник шириной 200px и высотой 100px,
расположенный по координатам (50,50). Атрибут fill задает
заливку объекта.
SVG.js не предоставляет прямых методов для вычисления площади и
периметра, но это легко реализуется через свойства width()
и height() объекта SVG.Rect:
const width = rectangle.width();
const height = rectangle.height();
const area = width * height;
const perimeter = 2 * (width + height);
console.log(`Площадь: ${area}, Периметр: ${perimeter}`);
Изменение размеров автоматически обновляет визуальное отображение на холсте:
rectangle.size(300, 150);
console.log(`Новая площадь: ${rectangle.width() * rectangle.height()}`);
Для создания окружности используется метод
circle(radius). Объект SVG.Circle позволяет
управлять радиусом и координатами центра через атрибуты cx
и cy.
const circle = draw.circle(100).attr({ fill: '#e74c3c', cx: 250, cy: 250 });
В SVG.js радиус можно получить через метод radius():
const r = circle.radius();
const circleArea = Math.PI * r * r;
const circumference = 2 * Math.PI * r;
console.log(`Площадь круга: ${circleArea}, Периметр: ${circumference}`);
Эллипсы создаются методом ellipse(width, height).
Атрибуты cx и cy задают центр, а
width и height — длины полуосей.
const ellipse = draw.ellipse(200, 100).attr({ fill: '#2ecc71', cx: 400, cy: 150 });
a и b — полуоси по горизонтали и
вертикали.const a = ellipse.width() / 2;
const b = ellipse.height() / 2;
const ellipseArea = Math.PI * a * b;
const ellipsePerimeter = Math.PI * (3 * (a + b) - Math.sqrt((3*a + b)*(a + 3*b)));
console.log(`Площадь эллипса: ${ellipseArea}, Периметр: ${ellipsePerimeter}`);
SVG.js позволяет создавать многоугольники через метод
polygon(points). Параметр points задается
строкой координат или массивом массивов координат:
const triangle = draw.polygon('100,10 40,198 190,78').attr({ fill: '#f1c40f' });
function polygonArea(points) {
let area = 0;
const n = points.length;
for (let i = 0; i < n; i++) {
const [x1, y1] = points[i];
const [x2, y2] = points[(i + 1) % n];
area += (x1 * y2 - x2 * y1);
}
return Math.abs(area / 2);
}
function polygonPerimeter(points) {
let perimeter = 0;
const n = points.length;
for (let i = 0; i < n; i++) {
const [x1, y1] = points[i];
const [x2, y2] = points[(i + 1) % n];
perimeter += Math.hypot(x2 - x1, y2 - y1);
}
return perimeter;
}
SVG.js предоставляет методы scale(), move()
и size(), которые позволяют динамически изменять размеры и
положение объектов, что автоматически изменяет их площадь и
периметр:
rectangle.scale(1.5);
console.log(`Масштабированная площадь: ${rectangle.width() * rectangle.height()}`);
Для сложных фигур, таких как многоугольники или эллипсы, изменение
размеров через scale() или size() требует
пересчета всех координат и полуосей для корректного вычисления площади и
периметра.
width() и height().Использование SVG.js позволяет гибко управлять графическими объектами и динамически вычислять их геометрические характеристики в интерактивных приложениях.