UNPKG

1.68 kBJavaScriptView Raw
1import { ext } from '@antv/matrix-util';
2var transform = ext.transform;
3export { transform };
4/**
5 * 对元素进行平移操作。
6 * @param element 进行变换的元素
7 * @param x x 方向位移
8 * @param y y 方向位移
9 */
10export function translate(element, x, y) {
11 var matrix = transform(element.getMatrix(), [['t', x, y]]);
12 element.setMatrix(matrix);
13}
14/**
15 * 获取元素旋转矩阵 (以元素的左上角为旋转点)
16 * @param element 进行变换的元素
17 * @param rotateRadian 旋转弧度
18 */
19export function getRotateMatrix(element, rotateRadian) {
20 var _a = element.attr(), x = _a.x, y = _a.y;
21 var matrix = transform(element.getMatrix(), [
22 ['t', -x, -y],
23 ['r', rotateRadian],
24 ['t', x, y],
25 ]);
26 return matrix;
27}
28/**
29 * 对元素进行旋转操作。
30 * @param element 进行变换的元素
31 * @param rotateRadian 旋转弧度
32 */
33export function rotate(element, rotateRadian) {
34 var matrix = getRotateMatrix(element, rotateRadian);
35 element.setMatrix(matrix);
36}
37/**
38 * 获取元矩阵。
39 * @returns identity matrix
40 */
41export function getIdentityMatrix() {
42 return [1, 0, 0, 0, 1, 0, 0, 0, 1];
43}
44/**
45 * 围绕图形中心点进行缩放
46 * @param element 进行缩放的图形元素
47 * @param ratio 缩放比例
48 */
49export function zoom(element, ratio) {
50 var bbox = element.getBBox();
51 var x = (bbox.minX + bbox.maxX) / 2;
52 var y = (bbox.minY + bbox.maxY) / 2;
53 element.applyToMatrix([x, y, 1]);
54 var matrix = transform(element.getMatrix(), [
55 ['t', -x, -y],
56 ['s', ratio, ratio],
57 ['t', x, y],
58 ]);
59 element.setMatrix(matrix);
60}
61//# sourceMappingURL=transform.js.map
\No newline at end of file