home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Diversos / Beez.swf / scripts / Box2D / Common / Math / b2Math.as < prev    next >
Encoding:
Text File  |  2008-09-03  |  5.5 KB  |  198 lines

  1. package Box2D.Common.Math
  2. {
  3.    public class b2Math
  4.    {
  5.       
  6.       public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0,new b2Vec2(1,0),new b2Vec2(0,1));
  7.       
  8.       public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0,0);
  9.       
  10.       public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero,b2Mat22_identity);
  11.        
  12.       
  13.       public function b2Math()
  14.       {
  15.          super();
  16.       }
  17.       
  18.       public static function b2CrossVF(a:b2Vec2, s:Number) : b2Vec2
  19.       {
  20.          return new b2Vec2(s * a.y,-s * a.x);
  21.       }
  22.       
  23.       public static function AddVV(a:b2Vec2, b:b2Vec2) : b2Vec2
  24.       {
  25.          return new b2Vec2(a.x + b.x,a.y + b.y);
  26.       }
  27.       
  28.       public static function b2IsValid(x:Number) : Boolean
  29.       {
  30.          return isFinite(x);
  31.       }
  32.       
  33.       public static function b2MinV(a:b2Vec2, b:b2Vec2) : b2Vec2
  34.       {
  35.          return new b2Vec2(b2Min(a.x,b.x),b2Min(a.y,b.y));
  36.       }
  37.       
  38.       public static function b2MulX(T:b2XForm, v:b2Vec2) : b2Vec2
  39.       {
  40.          var a:b2Vec2 = null;
  41.          a = b2MulMV(T.R,v);
  42.          a.x += T.position.x;
  43.          a.y += T.position.y;
  44.          return a;
  45.       }
  46.       
  47.       public static function b2DistanceSquared(a:b2Vec2, b:b2Vec2) : Number
  48.       {
  49.          var cX:Number = a.x - b.x;
  50.          var cY:Number = a.y - b.y;
  51.          return cX * cX + cY * cY;
  52.       }
  53.       
  54.       public static function b2Swap(a:Array, b:Array) : void
  55.       {
  56.          var tmp:* = a[0];
  57.          a[0] = b[0];
  58.          b[0] = tmp;
  59.       }
  60.       
  61.       public static function b2AbsM(A:b2Mat22) : b2Mat22
  62.       {
  63.          return new b2Mat22(0,b2AbsV(A.col1),b2AbsV(A.col2));
  64.       }
  65.       
  66.       public static function SubtractVV(a:b2Vec2, b:b2Vec2) : b2Vec2
  67.       {
  68.          return new b2Vec2(a.x - b.x,a.y - b.y);
  69.       }
  70.       
  71.       public static function b2MulXT(T:b2XForm, v:b2Vec2) : b2Vec2
  72.       {
  73.          var a:b2Vec2 = null;
  74.          var tX:Number = NaN;
  75.          a = SubtractVV(v,T.position);
  76.          tX = a.x * T.R.col1.x + a.y * T.R.col1.y;
  77.          a.y = a.x * T.R.col2.x + a.y * T.R.col2.y;
  78.          a.x = tX;
  79.          return a;
  80.       }
  81.       
  82.       public static function b2Abs(a:Number) : Number
  83.       {
  84.          return a > 0 ? a : -a;
  85.       }
  86.       
  87.       public static function b2Clamp(a:Number, low:Number, high:Number) : Number
  88.       {
  89.          return b2Max(low,b2Min(a,high));
  90.       }
  91.       
  92.       public static function b2AbsV(a:b2Vec2) : b2Vec2
  93.       {
  94.          return new b2Vec2(b2Abs(a.x),b2Abs(a.y));
  95.       }
  96.       
  97.       public static function MulFV(s:Number, a:b2Vec2) : b2Vec2
  98.       {
  99.          return new b2Vec2(s * a.x,s * a.y);
  100.       }
  101.       
  102.       public static function b2CrossVV(a:b2Vec2, b:b2Vec2) : Number
  103.       {
  104.          return a.x * b.y - a.y * b.x;
  105.       }
  106.       
  107.       public static function b2Dot(a:b2Vec2, b:b2Vec2) : Number
  108.       {
  109.          return a.x * b.x + a.y * b.y;
  110.       }
  111.       
  112.       public static function b2CrossFV(s:Number, a:b2Vec2) : b2Vec2
  113.       {
  114.          return new b2Vec2(-s * a.y,s * a.x);
  115.       }
  116.       
  117.       public static function AddMM(A:b2Mat22, B:b2Mat22) : b2Mat22
  118.       {
  119.          return new b2Mat22(0,AddVV(A.col1,B.col1),AddVV(A.col2,B.col2));
  120.       }
  121.       
  122.       public static function b2Distance(a:b2Vec2, b:b2Vec2) : Number
  123.       {
  124.          var cX:Number = a.x - b.x;
  125.          var cY:Number = a.y - b.y;
  126.          return Math.sqrt(cX * cX + cY * cY);
  127.       }
  128.       
  129.       public static function b2MulTMM(A:b2Mat22, B:b2Mat22) : b2Mat22
  130.       {
  131.          var c1:b2Vec2 = new b2Vec2(b2Dot(A.col1,B.col1),b2Dot(A.col2,B.col1));
  132.          var c2:b2Vec2 = new b2Vec2(b2Dot(A.col1,B.col2),b2Dot(A.col2,B.col2));
  133.          return new b2Mat22(0,c1,c2);
  134.       }
  135.       
  136.       public static function b2MaxV(a:b2Vec2, b:b2Vec2) : b2Vec2
  137.       {
  138.          return new b2Vec2(b2Max(a.x,b.x),b2Max(a.y,b.y));
  139.       }
  140.       
  141.       public static function b2IsPowerOfTwo(x:uint) : Boolean
  142.       {
  143.          return x > 0 && (x & x - 1) == 0;
  144.       }
  145.       
  146.       public static function b2ClampV(a:b2Vec2, low:b2Vec2, high:b2Vec2) : b2Vec2
  147.       {
  148.          return b2MaxV(low,b2MinV(a,high));
  149.       }
  150.       
  151.       public static function b2RandomRange(lo:Number, hi:Number) : Number
  152.       {
  153.          var r:Number = Math.random();
  154.          return (hi - lo) * r + lo;
  155.       }
  156.       
  157.       public static function b2MulTMV(A:b2Mat22, v:b2Vec2) : b2Vec2
  158.       {
  159.          return new b2Vec2(b2Dot(v,A.col1),b2Dot(v,A.col2));
  160.       }
  161.       
  162.       public static function b2Min(a:Number, b:Number) : Number
  163.       {
  164.          return a < b ? a : b;
  165.       }
  166.       
  167.       public static function b2Random() : Number
  168.       {
  169.          return Math.random() * 2 - 1;
  170.       }
  171.       
  172.       public static function b2MulMM(A:b2Mat22, B:b2Mat22) : b2Mat22
  173.       {
  174.          return new b2Mat22(0,b2MulMV(A,B.col1),b2MulMV(A,B.col2));
  175.       }
  176.       
  177.       public static function b2NextPowerOfTwo(x:uint) : uint
  178.       {
  179.          x |= x >> 1 & 2147483647;
  180.          x |= x >> 2 & 1073741823;
  181.          x |= x >> 4 & 268435455;
  182.          x |= x >> 8 & 16777215;
  183.          x |= x >> 16 & 65535;
  184.          return x + 1;
  185.       }
  186.       
  187.       public static function b2Max(a:Number, b:Number) : Number
  188.       {
  189.          return a > b ? a : b;
  190.       }
  191.       
  192.       public static function b2MulMV(A:b2Mat22, v:b2Vec2) : b2Vec2
  193.       {
  194.          return new b2Vec2(A.col1.x * v.x + A.col2.x * v.y,A.col1.y * v.x + A.col2.y * v.y);
  195.       }
  196.    }
  197. }
  198.