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

时间:2012-01-09 15:38:45

标签: actionscript-3 trigonometry

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

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

看看我的问题图表。

Diagram of problem

2 个答案:

答案 0 :(得分:3)

应该可以为此使用矩阵变换,但您也可以手动执行: http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm

所以基本上;

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相对于旋转中心,因此您必须在开始之前减去中心点,然后在计算后再次添加它以正确放置它。

希望这有帮助!

答案 1 :(得分:1)

对于每个点,请执行:

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

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