Math 在SVG中模拟围绕枢轴的旋转

Math 在SVG中模拟围绕枢轴的旋转,math,svg,computational-geometry,Math,Svg,Computational Geometry,我试图在SVG组元素上模拟轴心旋转(围绕某个点旋转元素,而不是围绕其中心) 我仅有两种工具: 一种可以逐步将元素移动到x-y方向的函数。 让我们称之为moveElement(x,y) 另一个可以围绕元素中心旋转元素的函数 步骤。我们称之为setRotationAngle(角度) 我试着用下面的公式来做,但没有用 setRotationAngle(angle) step_x = cos(angle) * (element.x - x) - sin(angle) * (element.y - y

我试图在SVG组元素上模拟轴心旋转(围绕某个点旋转元素,而不是围绕其中心)

我仅有两种工具:

  • 一种可以逐步将元素移动到x-y方向的函数。 让我们称之为
    moveElement(x,y)
  • 另一个可以围绕元素中心旋转元素的函数 步骤。我们称之为
    setRotationAngle(角度)
我试着用下面的公式来做,但没有用

setRotationAngle(angle)
step_x = cos(angle) * (element.x - x) - sin(angle) * (element.y - y)
step_y = sin(angle) * (element.x - x) + cos(angle) * (element.y - y)
moveElement( step_x, step_y)
我知道这可以使用规范中已经存在的变换中心旋转来完成,但不幸的是,我不能使用这些旋转,因为我不想更改元素的变换中心


如果可能的话,我希望只使用上面的函数

通常,您需要做的是:

moveElement(-centerX, -centerY);
rotateElement(angle);
moveElement(centerX, centerY);

如果你想绕任意旋转中心(centerX,centerY)旋转一个对象,那么我上面写的就是如何分解所需的转换序列。谢谢-现在有意义了