坐标旋转

//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);
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);
	}
}
原文地址:https://www.cnblogs.com/602147629/p/2020569.html