// // @auteur : YopSolo // @mail : mail@yopsolo.fr // @site : http://www.yopsolo.fr // @date : 12/2004 // class Trigo { static function distance(x1:Number, y1:Number, x2:Number, y2:Number):Number { var dx = x2-x1; var dy = y2-y1; return Math.sqrt(dx*dx+dy*dy); } static function rad2Deg(a:Number):Number { return a*(180/Math.PI); } static function deg2Rad(a:Number):Number { return a*(Math.PI/180); } static function sinD(a:Number):Number { return Math.sin(a*(Math.PI/180)); } static function cosD(a:Number):Number { return Math.cos(a*(Math.PI/180)); } static function tanD(a:Number):Number { return Math.tan(a*(Math.PI/180)); } static function atan2D(y:Number, x:Number):Number { return Math.atan2(y, x)*(180/Math.PI); } static function angle(x1:Number, y1:Number, x2:Number, y2:Number):Number { return atan2D(y2-y1, x2-x1); } // rappel : r [-1..1] static function acosD(r:Number):Number { return Math.acos(r)*(180/Math.PI); } static function asinD(r:Number):Number { return Math.asin(r)*(180/Math.PI); } // p est un objet generique "point" avec 2 props x/y, p = {x:cx,y:cy}; // renvoi un point dont les props sont un rayon (r) et un angle theta (t), p {r:rayon, t:theta}; static function cart2Polar(p:Object):Object { var rayon = Math.sqrt(p.x*p.x+p.y*p.y); // aka la distance var theta = atan2D(p.y, p.x); // aka l'angle en degré return {r:rayon, t:theta}; } // complementaire de cart2Polar static function polar2Cart(p:Object):Object { var x = p.r*cosD(p.t); var y = p.r*sinD(p.t); return {x:x, y:y}; } }