我正在创建一个游戏,在游戏中,我通过在板球半径周围创建点来绘制一系列多边形。
稍后我旋转形状,我需要基于旋转计算点的新位置(X,Y)。我有每个点的旧XY,形状中心的XY,形状半径和旋转。
看一下我的问题图表。
发布于 2012-01-09 15:47:42
为此,应该可以使用矩阵转换,但也可以手动完成: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是相对于旋转中心的,因此您必须在开始之前减去中心点,然后在计算后再次添加它以正确放置它。
希望这能有所帮助!
发布于 2012-01-09 15:49:00
对于每个点,请执行以下操作:
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函数提供的结果为PI/2,如果为x=0,则为-PI/2。原始的arctan函数不允许使用x=0。
https://stackoverflow.com/questions/8790931
复制相似问题