由两点坐标计算角度算法:象限分割法
假定有两个点,一个固定,另外一个点在移动,这样在不同时刻计算两点所形成的角度,获取该角度用来控制其他空间或者组件等显示对象的状态: 由于两点坐标所算出来的角度是正切三角函数,其值为(Math.PI/2,Math.PI/2);
internal function computeAngleByPoints(point1:Point , point2:Point ):Number
{
var angle:Number = 0;
var midv:Number = Math.sqrt(Math.pow(point2.y - point1.y, 2) + Math.pow(point2.x - point1.x, 2));
var sin:Number = (point2.y - point1.y) / midv;
var cos:Number = (point2.x - point1.x) / midv;
if ((point2.x - point1.x) != 0){
angle = Math.atan((point2.y - point1.y) / (point2.x - point1.x));
//第一象限
if (sin >= 0 && cos >= 0){
// angle = angle ;//90是人为加的
}else if (sin >= 0 && cos < 0){
angle = Math.PI*2 + angle;
}
else if (sin < 0 && cos <= 0){
angle = Math.PI*2 + angle;
}
else if (sin < 0 && cos >= 0){
//第四象限
angle = 2 * Math.PI + angle;
}
}else {
if (point2.y > point1.y){
angle = Math.PI / 2;
}else{
angle = 3 * Math.PI / 2;
}
}
var rotation:Number = (angle * 180 / Math.PI);
return rotation;
}
OK,算法完毕.