Javascript 旋转变换矩阵
我从SVG文件中的元素解析了一个transform属性,类似于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的值。一
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)