Javascript 旋转变换矩阵

Javascript 旋转变换矩阵,javascript,matrix,svg,Javascript,Matrix,Svg,我从SVG文件中的元素解析了一个transform属性,类似于rotate(45,30,50),我想将它转换为矩阵形式。 我搜索了它,只找到了rotate(a),没有像这样的坐标[cos(a)sin(a)-sin(a)cos(a)0] 有谁能告诉我如何将旋转(角度,x,y)转换为矩阵形式吗?旋转矩阵只能描述(0,0)左右的旋转,因此必须使用平移 编辑请参见。它绘制一个矩形,该矩形由偏移、宽度和高度定义,并围绕轴心点旋转。有趣的部分是最后10行左右,其中计算了offsetX和offsetY的值。一

我从SVG文件中的元素解析了一个transform属性,类似于
rotate(45,30,50)
,我想将它转换为矩阵形式。 我搜索了它,只找到了
rotate(a)
,没有像这样的坐标
[cos(a)sin(a)-sin(a)cos(a)0]


有谁能告诉我如何将
旋转(角度,x,y)
转换为矩阵形式吗?

旋转矩阵只能描述(0,0)左右的旋转,因此必须使用平移

编辑请参见。它绘制一个矩形,该矩形由偏移、宽度和高度定义,并围绕轴心点旋转。有趣的部分是最后10行左右,其中计算了
offsetX
offsetY
的值。一旦你有了这些,你可以建立你的平移和旋转矩阵。然后,只需将平移乘以旋转,就可以得到最终结果。不幸的是,Javascript不提供任何矩阵功能,所以如果您不提供代码,我只能这样做

如何制作翻译矩阵

1   0   offsetX
0   1   offsetY
0   0      1
cos   -sin    0
sin    cos    0
 0      0     1
如何制作旋转矩阵

1   0   offsetX
0   1   offsetY
0   0      1
cos   -sin    0
sin    cos    0
 0      0     1

我找到了一种更简单的方法来获取SVG元素的转换矩阵。
使用SVG元素
getCTM()
方法,我可以获得元素的变换矩阵,包括旋转、平移和其他所有内容。

要从带有轴心点的旋转中获得SVG变换矩阵

检查这个问题的答案


添加翻译将移动元素,这不是我想要的。点的作用是,它使旋转围绕它发生,而不是围绕(0,0)元素已经就位,但需要围绕某个点旋转。我不知道他是不是说净效果是相同的-通过围绕中心旋转然后偏移,你可以实现相同的效果?净效果不一样。我只想简单地得到变换矩阵,这样我就可以把它应用到形状上的某个点上,在旋转后得到它的位置,如果我偏移形状(平移它),我就可以在另一个位置得到点。我希望点在同一个位置,但围绕另一个点旋转,就像你的解决方案看起来很有效一样,但对我来说理解起来很复杂,我只需要一个函数,它取一个点并围绕一个点旋转,返回点的新位置或该点的矩阵表示形式solution@zeacuss实际上,我的代码中唯一复杂的部分是最后10行,其中我展示了如何计算
O'
,即
O(0,0)
围绕轴心点旋转
P(x,x)
。只要考虑一个新的坐标空间,任意点
a(xA,yA)
变为
(0,0)