Функция rotate является ключевым инструментом для
управления поворотом элементов SVG в библиотеке Snap.svg. Она позволяет
изменять угол наклона объектов относительно заданной точки, что особенно
полезно для анимаций, динамических графиков и интерактивной графики.
Синтаксис метода:
element.rotate(angle, cx, cy);
x и y.Например, простой поворот:
var s = Snap("#svg");
var rect = s.rect(50, 50, 100, 100);
rect.attr({ fill: "#3498db" });
rect.rotate(45); // Поворот на 45 градусов вокруг точки (0,0)
Если необходимо вращать объект вокруг его центра, вычисление координат центра происходит вручную:
var cx = rect.getBBox().cx;
var cy = rect.getBBox().cy;
rect.rotate(45, cx, cy);
getBBox() возвращает объект с параметрами
x, y, width, height,
cx, cy, что позволяет точно определить центр
для вращения.
rect.transform("r45,100,100t50,0");
r45,100,100 – поворот на 45 градусов вокруг точки
(100,100).t50,0 – смещение на 50 пикселей по оси X.Относительные и абсолютные повороты
rotate(angle, cx, cy).transform
с символом ...:rect.transform(rect.transform().localMatrix.rotate(30, cx, cy));
animate:rect.animate({ transform: "r360," + cx + "," + cy }, 2000, mina.easeinout);
r360,cx,cy – вращение на 360 градусов вокруг точки (cx,
cy).2000 – время анимации в миллисекундах.mina.easeinout – функция плавности изменения.getBBox(), особенно для сложных
фигур.var angle = 0;
setInterval(function() {
angle += 5;
rect.rotate(angle, cx, cy);
}, 50);
g, вращение можно применить к группе, что позволяет
одновременно поворачивать несколько объектов.var g = s.group(rect, circle);
g.rotate(30, 150, 150);
Snap.svg предоставляет гибкость в выборе оси вращения:
var arbitraryX = 200;
var arbitraryY = 100;
rect.rotate(90, arbitraryX, arbitraryY);
cx и
cy.rotate добавляет поворот к предыдущему состоянию. Для
абсолютного поворота лучше сбрасывать трансформацию:rect.transform(""); // сброс трансформации
rect.rotate(45, cx, cy);
animate и прямых трансформаций
лучше работать с функцией transform() вместо
rotate(), чтобы избежать конфликтов.Функция rotate в Snap.svg является универсальным
инструментом для управления ориентацией объектов SVG. Она обеспечивает
простое и интуитивное управление углами, центрами вращения и позволяет
создавать как статические повороты, так и сложные анимации с
динамическими изменениями углов. Правильное использование
getBBox(), комбинаций трансформаций и функций анимации
позволяет добиться профессионального уровня работы с векторной графикой
на JavaScript.