gpt4 book ai didi

svg - 如何从旋转/平移/缩放值计算 SVG 变换矩阵?

转载 作者:行者123 更新时间:2023-12-03 09:03:26 26 4
gpt4 key购买 nike

我有以下详细信息:

<g transform="translate(20, 50) scale(1, 1) rotate(-30 10 25)">

需要将以上行更改为:
<g transform="matrix(?,?,?,?,?,?)">

任何人都可以帮助我实现这一目标吗?

最佳答案

Translate(tx, ty) 可以写成矩阵:

1  0  tx
0 1 ty
0 0 1

Scale(sx, sy) 可以写成矩阵:
sx  0  0
0 sy 0
0 0 1

Rotate(a) 可以写成一个矩阵:
cos(a)  -sin(a)  0
sin(a) cos(a) 0
0 0 1

Rotate(a, cx, cy) 是由 (-cx, cy) 进行的平移、旋转一个度和返回到 (cx, cy) 的平移的组合,它给出:
cos(a)  -sin(a)  -cx × cos(a) + cy × sin(a) + cx
sin(a) cos(a) -cx × sin(a) - cy × cos(a) + cy
0 0 1

如果你只是将它与翻译矩阵相乘,你会得到:
cos(a)  -sin(a)  -cx × cos(a) + cy × sin(a) + cx + tx
sin(a) cos(a) -cx × sin(a) - cy × cos(a) + cy + ty
0 0 1

其中对应于 SVG 变换矩阵:
(cos(a), sin(a), -sin(a), cos(a), -cx × cos(a) + cy × sin(a) + cx + tx, -cx × sin(a) - cy × cos(a) + cy + ty) .

在你的情况下是: matrix(0.866, -0.5 0.5 0.866 8.84 58.35) .

如果包括比例 (sx, sy) 变换,矩阵为:
(sx × cos(a), sy × sin(a), -sx × sin(a), sy × cos(a), (-cx × cos(a) + cy × sin(a) + cx) × sx + tx, (-cx × sin(a) - cy × cos(a) + cy) × sy + ty)
请注意,这假设您正在按照您编写它们的顺序进行转换。

关于svg - 如何从旋转/平移/缩放值计算 SVG 变换矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com