笔记:坐标旋转

 

简单的坐标旋转

假设知道一个中心点,一个物体,一个半径和一个角度。通过不断地增加或减少角度,并运用基本的三角学知识让物体绕着中心点旋转。我们可将变量设为 vr (旋转速度)来控制角度的增加或减少。还有,不要忘记角度应用弧度制来表示。代码的结构如下所示:

// 在 enterFrame 处理函数中:

sprite.x = centerX + cos(angle) * radius;

sprite.y = centerY + sin(angle) * radius;

angle += vr;

 

高级坐标旋转 

如果物体要绕着某一点旋转,并且以物体本身的位置作为旋转的起点,那么下面给大家一个公式。这个公式只需要给出物体距离中心点的相对 x,y 坐标和旋转的角度。它就会返回物体相对于中心点的新的坐标位置。基本公式如下:

x1 = cos(angle) * x - sin(angle) * y;

y1 = cos(angle) * y + sin(angle) * x;

这里的角度(angle)并非当前的角度,也不是旋转后的角度,而是这两者之间的差值。换句话讲,如果物体在离中心点 45 度的位置,而这次的角度是 5 度,我们就要在当前角度的基础上再旋转 5 度,到达 50 度这个位置上。这里我们并不关心最初或最终的角度,只关心旋转了多少度。通常来讲,这个角度都是用弧度制表示的。

运用:

var vr:Number = 0.05

// 在 enterFrame 处理函数中:

var x1:Number = ball.x - centerX;

var y1:Number = ball.y - centerY;

var x2:Number = Math.cos(vr) * x1 - Math.sin(vr) * y1;

var y2:Number = Math.cos(vr) * y1 + Math.sin(vr) * x1;

ball.x = centerX + x2;

ball.y = centerY + y2;

posted @ 2010-09-03 01:19  rock506  阅读(220)  评论(0编辑  收藏  举报