1
10
11 import com.sekati.geom.Point;
12 import com.sekati.geom.Point3D;
13 import com.sekati.math.MathBase;
14
17 class com.sekati.geom.TrigoBase {
18
21 public static function angle2radian(a:Number):Number {
22 return TrigoBase.resolveAngle( a ) * Math.PI / 180;
23 }
24
27 public static function radian2angle(r:Number):Number {
28 return TrigoBase.resolveAngle( r * 180 / Math.PI );
29 }
30
33 public static function resolveAngle(a:Number):Number {
34 var mod:Number = a % 360;
35 return (mod < 0) ? 360 + mod : mod;
36 }
37
40 public static function getAngle(p1:Point, p2:Point):Number {
41 var r:Number = Math.atan2( p2.y - p1.y, p2.x - p1.x );
42 return TrigoBase.radian2angle( r );
43 }
44
47 public static function getRadian(p1:Point, p2:Point):Number {
48 return TrigoBase.angle2radian( TrigoBase.getAngle( p1, p2 ) );
49 }
50
53 public static function getDistance(p1:Point, p2:Point):Number {
54 var xd:Number = p1.x - p2.x;
55 var yd:Number = p1.y - p2.y;
56 return Math.sqrt( xd * xd + yd * yd );
57 }
58 public static function getZDistance(p1:Point3D, p2:Point3D):Number {
59 return p1.z - p2.z;
60 }
61
67 public static function getPointFromDistanceAndAngle(centerPoint:Point, dist:Number, angle:Number):Point {
68 var rad:Number = TrigoBase.angle2radian( angle );
69 return new Point( MathBase.round( centerPoint.x + Math.cos( rad ) * dist, 3 ), MathBase.round( centerPoint.y + Math.sin( rad ) * dist, 3 ) );
70 }
71 private function TrigoBase() {
72 }
73 }