AS3 在坐标系中操作时,通常有一些常用的计算函数,比如求线的角度、两点间的距离、两点的中点、某个点是否在我选中的区域中等等
下面是一些常用函数,我在做程序时自己写的。
/**
*获取两点间的中间点坐标
* @return
*
*/
private function getMiddlePoint(fromPoint:Point,toPoint:Point):Point{
var rp:Point = new Point;
rp.x = fromPoint.x/2 +toPoint.x/2;
rp.y = fromPoint.y/2 +toPoint.y/2;
return rp;
}
/**
*获取线的角度 范围为 -180~180
* @param xFrom
* @param yFrom
* @param xTo
* @param yTo
* @return
*
*/
private function getAngle(xFrom:Number,yFrom:Number,xTo:Number,yTo:Number):Number{
var tmpx:Number=xTo - xFrom;
var tmpy:Number=yFrom - yTo;
var angle:Number= Math.atan2(tmpy,tmpx)*(180/Math.PI);
return angle;
}
/**
*判断两个Point的坐标是否相等
* @param point1
* @param point2
* @return
*
*/
private function isEqualPoint(point1:Point,point2:Point):Boolean{
if(point1.x == point2.x && point1.y == point2.y){
return true;
}else{
return false;
}
}
/**
*获取两点间的距离
* @param onePoint
* @param twoPoint
* @return
*
*/
private function getPoint2PointDistance(fromPoint:Point,toPoint:Point):Number{
return Math.sqrt(Math.pow(toPoint.x-fromPoint.x,2)+Math.pow(toPoint.y-fromPoint.y,2))
}
/**
*判断一个点是否在某个矩形(rectangular)区域内
*
*/
private function pointInRect(point_x:Number,point_y:Number,rect_x1:Number,rect_y1:Number,rect_x2:Number,rect_y2:Number):Boolean{
var x_in:Boolean=((point_x>rect_x1)&&(point_x<rect_x2)) || ((point_x>rect_x2)&&(point_x<rect_x1));
var y_in:Boolean=((point_y>rect_y1)&&(point_y<rect_y2)) || ((point_y>rect_y2)&&(point_y<rect_y1));
if (x_in && y_in){
return true;
}else{
return false;
}
}