Actionscript 3 如何计算旋转形状AS3中点的位置

Actionscript 3 如何计算旋转形状AS3中点的位置,actionscript-3,trigonometry,Actionscript 3,Trigonometry,我正在创建一个游戏,在这个游戏中,我通过围绕一个圆环半径创建点来绘制一系列多边形 稍后,我旋转形状,我需要根据旋转计算点的新位置(X,Y)。我有每个点的旧XY,形状中心的XY,形状半径和旋转 请看一下我的问题图表 应该可以使用矩阵变换进行此操作,但您也可以手动执行此操作: 本质上如此 newX = initialX * Math.cos(angle) - initialY * Math.sin(angle); newY = initialY * Math.cos(angle) + initia

我正在创建一个游戏,在这个游戏中,我通过围绕一个圆环半径创建点来绘制一系列多边形

稍后,我旋转形状,我需要根据旋转计算点的新位置(X,Y)。我有每个点的旧XY,形状中心的XY,形状半径和旋转

请看一下我的问题图表


应该可以使用矩阵变换进行此操作,但您也可以手动执行此操作:

本质上如此

newX = initialX * Math.cos(angle) - initialY * Math.sin(angle);
newY = initialY * Math.cos(angle) + initialX * Math.sin(angle);
//Angle is in radians btw
这假设初始值X/Y相对于旋转中心,因此必须在开始之前减去中心点,然后在计算后再次添加以正确放置

希望这有帮助

对于每个点,请执行以下操作:

alpha = arctan2(x, y)
len = sqrt(x^2 + y^2)
newX = len * cos(alpha + rotation)
newy = len * sin(alpha + rotation)
原始[x,y]和新[newX,newY]坐标都是相对于旋转中心的。如果原始[x,y]为绝对值,则必须首先计算相对值:

x = xAbs - xCenter
y = yAbs - yCenter

确保arctan2函数在x=0时提供PI/2或-PI/2的结果。原始arctan函数不允许x=0。

为此,您还必须计算原点的长度,并将cos/sin的结果与之相乘,以获得正确的位置。是@jonathanhedborg,您是正确的。我已经做了相应的编辑,所以现在应该是正确的。如果你的形状在三维空间中旋转,你会怎么做?