![](https://pic002.cnblogs.com/images/2011/245448/2011041910083383.png)
//cos(A+B)=cosAcosB-sinAsinB;
//sin(A+B)=sinAcosB+cosAsinB;
cos(a+b)=s/r;
s=r*cos(a+b);
s=r*cos(a)cos(b)-r*sin(a)sin(b);
cos(a)=x/r;
x=r*cos(a);
sin(a+b)=t/r;
t=r*sin(a+b);
t=r*sin(a)cos(b)+r*cos(a)sin(b);
sin(a)=y/r;
y=r*sin(a);
x=r*cos(a);
y=r*sin(a);
s=r*cos(a)cos(b)-r*sin(a)sin(b);
t=r*sin(a)cos(b)+r*cos(a)sin(b);
s=x*cos(b)-y*sin(b);//p'.x=p.x*cos(b)-p.y*sin(b);
t=y*cos(b)+x*sin(b);//p'.y=p.y*cos(b)+p.x*sin(b);
![](https://pic002.cnblogs.com/images/2011/245448/2011041910231736.png)
var ball:Ball = new Ball(10);
var centerX:Number = stage.stageWidth / 2;
var centerY:Number = stage.stageHeight / 2;
var radius:Number = 50;
var angle:Number = 0;
//旋转角速度
ball.vr = 0.02;
//反向旋转只需要变为负数
//ball.vr = -0.02;
ball.x = centerX + radius;
ball.y = centerY;
var cos:Number = Math.cos(ball.vr);
var sin:Number = Math.sin(ball.vr);
addChild(ball);
addEventListener(Event.ENTER_FRAME,EnterFrameHandler);
graphics.lineStyle(1,0x999999);
graphics.moveTo(ball.x,ball.y);
var i:Number = 0;
function EnterFrameHandler(e:Event):void
{
var dx:Number = ball.x - centerX;
var dy:Number = ball.y - centerY;
var x2:Number = cos * dx - sin * dy;
var y2:Number = cos * dy + sin * dx;
ball.x = centerX + x2;
ball.y = centerY + y2;
i++;
if (i<=(2*Math.PI+ball.vr)/ball.vr)
{
trace(i);
graphics.lineTo(ball.x,ball.y);
}
}