home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Esportes / CrossingCup.swf / scripts / __Packages / sandy / math / Matrix4Math.as next >
Encoding:
Text File  |  2007-12-11  |  14.4 KB  |  315 lines

  1. class sandy.math.Matrix4Math
  2. {
  3.    static var _aSin = new Array(360);
  4.    static var _aCos = new Array(360);
  5.    static var _bIsPrecalculed = false;
  6.    static var _bMatrixExtends = sandy.math.Matrix4Math.preCalc();
  7.    function Matrix4Math()
  8.    {
  9.    }
  10.    static function multiply3x3(m1, m2)
  11.    {
  12.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  13.       var _loc18_ = m1.n11;
  14.       var _loc21_ = m2.n11;
  15.       var _loc13_ = m1.n21;
  16.       var _loc19_ = m2.n21;
  17.       var _loc8_ = m1.n31;
  18.       var _loc14_ = m2.n31;
  19.       var _loc15_ = m1.n12;
  20.       var _loc20_ = m2.n12;
  21.       var _loc9_ = m1.n22;
  22.       var _loc16_ = m2.n22;
  23.       var _loc5_ = m1.n32;
  24.       var _loc10_ = m2.n32;
  25.       var _loc11_ = m1.n13;
  26.       var _loc17_ = m2.n13;
  27.       var _loc6_ = m1.n23;
  28.       var _loc12_ = m2.n23;
  29.       var _loc4_ = m1.n33;
  30.       var _loc7_ = m2.n33;
  31.       _loc1_.n11 = _loc18_ * _loc21_ + _loc15_ * _loc19_ + _loc11_ * _loc14_;
  32.       _loc1_.n12 = _loc18_ * _loc20_ + _loc15_ * _loc16_ + _loc11_ * _loc10_;
  33.       _loc1_.n13 = _loc18_ * _loc17_ + _loc15_ * _loc12_ + _loc11_ * _loc7_;
  34.       _loc1_.n21 = _loc13_ * _loc21_ + _loc9_ * _loc19_ + _loc6_ * _loc14_;
  35.       _loc1_.n22 = _loc13_ * _loc20_ + _loc9_ * _loc16_ + _loc6_ * _loc10_;
  36.       _loc1_.n23 = _loc13_ * _loc17_ + _loc9_ * _loc12_ + _loc6_ * _loc7_;
  37.       _loc1_.n31 = _loc8_ * _loc21_ + _loc5_ * _loc19_ + _loc4_ * _loc14_;
  38.       _loc1_.n32 = _loc8_ * _loc20_ + _loc5_ * _loc16_ + _loc4_ * _loc10_;
  39.       _loc1_.n33 = _loc8_ * _loc17_ + _loc5_ * _loc12_ + _loc4_ * _loc7_;
  40.       return _loc1_;
  41.    }
  42.    static function multiply(m1, m2)
  43.    {
  44.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  45.       var _loc24_ = undefined;
  46.       var _loc27_ = undefined;
  47.       var _loc19_ = undefined;
  48.       var _loc25_ = undefined;
  49.       var _loc13_ = undefined;
  50.       var _loc20_ = undefined;
  51.       var _loc33_ = undefined;
  52.       var _loc35_ = undefined;
  53.       var _loc21_ = undefined;
  54.       var _loc26_ = undefined;
  55.       var _loc14_ = undefined;
  56.       var _loc22_ = undefined;
  57.       var _loc8_ = undefined;
  58.       var _loc15_ = undefined;
  59.       var _loc31_ = undefined;
  60.       var _loc34_ = undefined;
  61.       var _loc16_ = undefined;
  62.       var _loc23_ = undefined;
  63.       var _loc9_ = undefined;
  64.       var _loc17_ = undefined;
  65.       var _loc5_ = undefined;
  66.       var _loc10_ = undefined;
  67.       var _loc29_ = undefined;
  68.       var _loc32_ = undefined;
  69.       var _loc11_ = undefined;
  70.       var _loc18_ = undefined;
  71.       var _loc6_ = undefined;
  72.       var _loc12_ = undefined;
  73.       var _loc4_ = undefined;
  74.       var _loc7_ = undefined;
  75.       var _loc28_ = undefined;
  76.       var _loc30_ = undefined;
  77.       _loc1_.n11 = (_loc24_ = m1.n11) * (_loc27_ = m2.n11) + (_loc21_ = m1.n12) * (_loc25_ = m2.n21) + (_loc16_ = m1.n13) * (_loc20_ = m2.n31) + (_loc11_ = m1.n14) * (_loc35_ = m2.n41);
  78.       _loc1_.n12 = _loc24_ * (_loc26_ = m2.n12) + _loc21_ * (_loc22_ = m2.n22) + _loc16_ * (_loc15_ = m2.n32) + _loc11_ * (_loc34_ = m2.n42);
  79.       _loc1_.n13 = _loc24_ * (_loc23_ = m2.n13) + _loc21_ * (_loc17_ = m2.n23) + _loc16_ * (_loc10_ = m2.n33) + _loc11_ * (_loc32_ = m2.n43);
  80.       _loc1_.n14 = _loc24_ * (_loc18_ = m2.n14) + _loc21_ * (_loc12_ = m2.n24) + _loc16_ * (_loc7_ = m2.n34) + _loc11_ * (_loc30_ = m2.n44);
  81.       _loc1_.n21 = (_loc19_ = m1.n21) * _loc27_ + (_loc14_ = m1.n22) * _loc25_ + (_loc9_ = m1.n23) * _loc20_ + (_loc6_ = m1.n24) * _loc35_;
  82.       _loc1_.n22 = _loc19_ * _loc26_ + _loc14_ * _loc22_ + _loc9_ * _loc15_ + _loc6_ * _loc34_;
  83.       _loc1_.n23 = _loc19_ * _loc23_ + _loc14_ * _loc17_ + _loc9_ * _loc10_ + _loc6_ * _loc32_;
  84.       _loc1_.n24 = _loc19_ * _loc18_ + _loc14_ * _loc12_ + _loc9_ * _loc7_ + _loc6_ * _loc30_;
  85.       _loc1_.n31 = (_loc13_ = m1.n31) * _loc27_ + (_loc8_ = m1.n32) * _loc25_ + (_loc5_ = m1.n33) * _loc20_ + (_loc4_ = m1.n34) * _loc35_;
  86.       _loc1_.n32 = _loc13_ * _loc26_ + _loc8_ * _loc22_ + _loc5_ * _loc15_ + _loc4_ * _loc34_;
  87.       _loc1_.n33 = _loc13_ * _loc23_ + _loc8_ * _loc17_ + _loc5_ * _loc10_ + _loc4_ * _loc32_;
  88.       _loc1_.n34 = _loc13_ * _loc18_ + _loc8_ * _loc12_ + _loc5_ * _loc7_ + _loc4_ * _loc30_;
  89.       _loc1_.n41 = (_loc33_ = m1.n41) * _loc27_ + (_loc31_ = m1.n42) * _loc25_ + (_loc29_ = m1.n43) * _loc20_ + (_loc28_ = m1.n44) * _loc35_;
  90.       _loc1_.n42 = _loc33_ * _loc26_ + _loc31_ * _loc22_ + _loc29_ * _loc15_ + _loc28_ * _loc34_;
  91.       _loc1_.n43 = _loc33_ * _loc23_ + _loc31_ * _loc17_ + _loc29_ * _loc10_ + _loc28_ * _loc32_;
  92.       _loc1_.n44 = _loc33_ * _loc18_ + _loc31_ * _loc12_ + _loc29_ * _loc7_ + _loc28_ * _loc30_;
  93.       return _loc1_;
  94.    }
  95.    static function addMatrix(m1, m2)
  96.    {
  97.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  98.       _loc1_.n11 = m1.n11 + m2.n11;
  99.       _loc1_.n12 = m1.n12 + m2.n12;
  100.       _loc1_.n13 = m1.n13 + m2.n13;
  101.       _loc1_.n14 = m1.n14 + m2.n14;
  102.       _loc1_.n21 = m1.n21 + m2.n21;
  103.       _loc1_.n22 = m1.n22 + m2.n22;
  104.       _loc1_.n23 = m1.n23 + m2.n23;
  105.       _loc1_.n24 = m1.n24 + m2.n24;
  106.       _loc1_.n31 = m1.n31 + m2.n31;
  107.       _loc1_.n32 = m1.n32 + m2.n32;
  108.       _loc1_.n33 = m1.n33 + m2.n33;
  109.       _loc1_.n34 = m1.n34 + m2.n34;
  110.       _loc1_.n41 = m1.n41 + m2.n41;
  111.       _loc1_.n42 = m1.n42 + m2.n42;
  112.       _loc1_.n43 = m1.n43 + m2.n43;
  113.       _loc1_.n44 = m1.n44 + m2.n44;
  114.       return _loc1_;
  115.    }
  116.    static function clone(m)
  117.    {
  118.       return new sandy.core.data.Matrix4(m.n11,m.n12,m.n13,m.n14,m.n21,m.n22,m.n23,m.n24,m.n31,m.n32,m.n33,m.n34,m.n41,m.n42,m.n43,m.n44);
  119.    }
  120.    static function vectorMult(m, v)
  121.    {
  122.       var _loc5_ = undefined;
  123.       var _loc4_ = undefined;
  124.       var _loc3_ = undefined;
  125.       v.x = (_loc5_ = v.x) * m.n11 + (_loc4_ = v.y) * m.n12 + (_loc3_ = v.z) * m.n13 + m.n14;
  126.       v.y = _loc5_ * m.n21 + _loc4_ * m.n22 + _loc3_ * m.n23 + m.n24;
  127.       v.z = _loc5_ * m.n31 + _loc4_ * m.n32 + _loc3_ * m.n33 + m.n34;
  128.    }
  129.    static function vectorMult3x3(m, v)
  130.    {
  131.       var _loc5_ = undefined;
  132.       var _loc4_ = undefined;
  133.       var _loc3_ = undefined;
  134.       v.x = (_loc5_ = v.x) * m.n11 + (_loc4_ = v.y) * m.n12 + (_loc3_ = v.z) * m.n13;
  135.       v.y = _loc5_ * m.n21 + _loc4_ * m.n22 + _loc3_ * m.n23;
  136.       v.z = _loc5_ * m.n31 + _loc4_ * m.n32 + _loc3_ * m.n33;
  137.    }
  138.    static function projectVector(mp, v)
  139.    {
  140.       var _loc3_ = 1 / (v.x * mp.n41 + v.y * mp.n42 + v.z * mp.n43 + mp.n44);
  141.       sandy.math.Matrix4Math.vectorMult(mp,v);
  142.       v.x *= _loc3_;
  143.       v.y *= _loc3_;
  144.       v.z = 0;
  145.    }
  146.    static function eulerRotation(ax, ay, az)
  147.    {
  148.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  149.       ax = sandy.util.NumberUtil.toRadian(ax);
  150.       ay = sandy.util.NumberUtil.toRadian(ay);
  151.       az = sandy.util.NumberUtil.toRadian(az);
  152.       var _loc6_ = Math.cos(ax);
  153.       var _loc5_ = Math.sin(ax);
  154.       var _loc4_ = Math.cos(ay);
  155.       var _loc7_ = Math.sin(ay);
  156.       var _loc2_ = Math.cos(az);
  157.       var _loc3_ = Math.sin(az);
  158.       var _loc12_ = _loc6_ * _loc7_;
  159.       var _loc11_ = _loc5_ * _loc7_;
  160.       _loc1_.n11 = _loc4_ * _loc2_;
  161.       _loc1_.n12 = (- _loc4_) * _loc3_;
  162.       _loc1_.n13 = _loc7_;
  163.       _loc1_.n21 = _loc11_ * _loc2_ + _loc6_ * _loc3_;
  164.       _loc1_.n22 = (- _loc11_) * _loc3_ + _loc6_ * _loc2_;
  165.       _loc1_.n23 = (- _loc5_) * _loc4_;
  166.       _loc1_.n31 = (- _loc12_) * _loc2_ + _loc5_ * _loc3_;
  167.       _loc1_.n32 = _loc12_ * _loc3_ + _loc5_ * _loc2_;
  168.       _loc1_.n33 = _loc6_ * _loc4_;
  169.       return _loc1_;
  170.    }
  171.    static function rotationX(angle)
  172.    {
  173.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  174.       var _loc2_ = sandy.math.Matrix4Math._aCos[int(angle)];
  175.       var _loc3_ = sandy.math.Matrix4Math._aSin[int(angle)];
  176.       _loc1_.n22 = _loc2_;
  177.       _loc1_.n23 = _loc3_;
  178.       _loc1_.n32 = - _loc3_;
  179.       _loc1_.n33 = _loc2_;
  180.       return _loc1_;
  181.    }
  182.    static function rotationY(angle)
  183.    {
  184.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  185.       var _loc2_ = sandy.math.Matrix4Math._aCos[int(angle)];
  186.       var _loc3_ = sandy.math.Matrix4Math._aSin[int(angle)];
  187.       _loc1_.n11 = _loc2_;
  188.       _loc1_.n13 = - _loc3_;
  189.       _loc1_.n31 = _loc3_;
  190.       _loc1_.n33 = _loc2_;
  191.       return _loc1_;
  192.    }
  193.    static function rotationZ(angle)
  194.    {
  195.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  196.       var _loc2_ = sandy.math.Matrix4Math._aCos[int(angle)];
  197.       var _loc3_ = sandy.math.Matrix4Math._aSin[int(angle)];
  198.       _loc1_.n11 = _loc2_;
  199.       _loc1_.n12 = _loc3_;
  200.       _loc1_.n21 = - _loc3_;
  201.       _loc1_.n22 = _loc2_;
  202.       return _loc1_;
  203.    }
  204.    static function axisRotationVector(v, angle)
  205.    {
  206.       return sandy.math.Matrix4Math.axisRotation(v.x,v.y,v.z,angle);
  207.    }
  208.    static function axisRotation(u, v, w, angle)
  209.    {
  210.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  211.       angle = sandy.util.NumberUtil.toRadian(angle);
  212.       var _loc3_ = Math.cos(angle);
  213.       var _loc5_ = Math.sin(angle);
  214.       var _loc2_ = 1 - _loc3_;
  215.       var _loc14_ = u * v * _loc2_;
  216.       var _loc12_ = v * w * _loc2_;
  217.       var _loc13_ = u * w * _loc2_;
  218.       var _loc8_ = _loc5_ * w;
  219.       var _loc9_ = _loc5_ * v;
  220.       var _loc10_ = _loc5_ * u;
  221.       _loc1_.n11 = _loc3_ + u * u * _loc2_;
  222.       _loc1_.n12 = - _loc8_ + _loc14_;
  223.       _loc1_.n13 = _loc9_ + _loc13_;
  224.       _loc1_.n21 = _loc8_ + _loc14_;
  225.       _loc1_.n22 = _loc3_ + v * v * _loc2_;
  226.       _loc1_.n23 = - _loc10_ + _loc12_;
  227.       _loc1_.n31 = - _loc9_ + _loc13_;
  228.       _loc1_.n32 = _loc10_ + _loc12_;
  229.       _loc1_.n33 = _loc3_ + w * w * _loc2_;
  230.       return _loc1_;
  231.    }
  232.    static function translation(nTx, nTy, nTz)
  233.    {
  234.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  235.       _loc1_.n14 = nTx;
  236.       _loc1_.n24 = nTy;
  237.       _loc1_.n34 = nTz;
  238.       return _loc1_;
  239.    }
  240.    static function translationVector(v)
  241.    {
  242.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  243.       _loc1_.n14 = v.x;
  244.       _loc1_.n24 = v.y;
  245.       _loc1_.n34 = v.z;
  246.       return _loc1_;
  247.    }
  248.    static function scale(nXScale, nYScale, nZScale)
  249.    {
  250.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  251.       _loc1_.n11 = nXScale;
  252.       _loc1_.n22 = nYScale;
  253.       _loc1_.n33 = nZScale;
  254.       return _loc1_;
  255.    }
  256.    static function scaleVector(v)
  257.    {
  258.       var _loc1_ = sandy.core.data.Matrix4.createIdentity();
  259.       _loc1_.n11 = v.x;
  260.       _loc1_.n22 = v.y;
  261.       _loc1_.n33 = v.z;
  262.       return _loc1_;
  263.    }
  264.    static function det(m)
  265.    {
  266.       return (m.n11 * m.n22 - m.n21 * m.n12) * (m.n33 * m.n44 - m.n42 * m.n34) - (m.n11 * m.n32 - m.n31 * m.n12) * (m.n23 * m.n44 - m.n41 * m.n24) + (m.n11 * m.n42 - m.n41 * m.n12) * (m.n23 * m.n34 - m.n33 * m.n24) + (m.n21 * m.n32 - m.n31 * m.n22) * (m.n13 * m.n44 - m.n43 * m.n14) - (m.n21 * m.n42 - m.n41 * m.n22) * (m.n13 * m.n34 - m.n33 * m.n14) + (m.n31 * m.n42 - m.n41 * m.n32) * (m.n13 * m.n24 - m.n23 * m.n14);
  267.    }
  268.    static function getTrace(m)
  269.    {
  270.       return m.n11 + m.n22 + m.n33 + m.n44;
  271.    }
  272.    static function getInverse(m)
  273.    {
  274.       var _loc1_ = sandy.math.Matrix4Math.det(m);
  275.       if(Math.abs(_loc1_) < 0.001)
  276.       {
  277.          return null;
  278.       }
  279.       _loc1_ = 1 / _loc1_;
  280.       var _loc14_ = m.n11;
  281.       var _loc11_ = m.n21;
  282.       var _loc8_ = m.n31;
  283.       var _loc18_ = m.n41;
  284.       var _loc12_ = m.n12;
  285.       var _loc9_ = m.n22;
  286.       var _loc5_ = m.n32;
  287.       var _loc17_ = m.n42;
  288.       var _loc10_ = m.n13;
  289.       var _loc6_ = m.n23;
  290.       var _loc3_ = m.n33;
  291.       var _loc16_ = m.n43;
  292.       var _loc7_ = m.n14;
  293.       var _loc4_ = m.n24;
  294.       var _loc2_ = m.n34;
  295.       var _loc15_ = m.n44;
  296.       return new sandy.core.data.Matrix4(_loc1_ * (_loc9_ * (_loc3_ * _loc15_ - _loc16_ * _loc2_) + _loc5_ * (_loc16_ * _loc4_ - _loc6_ * _loc15_) + _loc17_ * (_loc6_ * _loc2_ - _loc3_ * _loc4_)),_loc1_ * (_loc6_ * (_loc8_ * _loc15_ - _loc18_ * _loc2_) + _loc3_ * (_loc18_ * _loc4_ - _loc11_ * _loc15_) + _loc16_ * (_loc11_ * _loc2_ - _loc8_ * _loc4_)),_loc1_ * (_loc4_ * (_loc8_ * _loc17_ - _loc18_ * _loc5_) + _loc2_ * (_loc18_ * _loc9_ - _loc11_ * _loc17_) + _loc15_ * (_loc11_ * _loc5_ - _loc8_ * _loc9_)),_loc1_ * (_loc11_ * (_loc17_ * _loc3_ - _loc5_ * _loc16_) + _loc8_ * (_loc9_ * _loc16_ - _loc17_ * _loc6_) + _loc18_ * (_loc5_ * _loc6_ - _loc9_ * _loc3_)),_loc1_ * (_loc5_ * (_loc10_ * _loc15_ - _loc16_ * _loc7_) + _loc17_ * (_loc3_ * _loc7_ - _loc10_ * _loc2_) + _loc12_ * (_loc16_ * _loc2_ - _loc3_ * _loc15_)),_loc1_ * (_loc3_ * (_loc14_ * _loc15_ - _loc18_ * _loc7_) + _loc16_ * (_loc8_ * _loc7_ - _loc14_ * _loc2_) + _loc10_ * (_loc18_ * _loc2_ - _loc8_ * _loc15_)),_loc1_ * (_loc2_ * (_loc14_ * _loc17_ - _loc18_ * _loc12_) + _loc15_ * (_loc8_ * _loc12_ - _loc14_ * _loc5_) + _loc7_ * (_loc18_ * _loc5_ - _loc8_ * _loc17_)),_loc1_ * (_loc8_ * (_loc17_ * _loc10_ - _loc12_ * _loc16_) + _loc18_ * (_loc12_ * _loc3_ - _loc5_ * _loc10_) + _loc14_ * (_loc5_ * _loc16_ - _loc17_ * _loc3_)),_loc1_ * (_loc17_ * (_loc10_ * _loc4_ - _loc6_ * _loc7_) + _loc12_ * (_loc6_ * _loc15_ - _loc16_ * _loc4_) + _loc9_ * (_loc16_ * _loc7_ - _loc10_ * _loc15_)),_loc1_ * (_loc16_ * (_loc14_ * _loc4_ - _loc11_ * _loc7_) + _loc10_ * (_loc11_ * _loc15_ - _loc18_ * _loc4_) + _loc6_ * (_loc18_ * _loc7_ - _loc14_ * _loc15_)),_loc1_ * (_loc15_ * (_loc14_ * _loc9_ - _loc11_ * _loc12_) + _loc7_ * (_loc11_ * _loc17_ - _loc18_ * _loc9_) + _loc4_ * (_loc18_ * _loc12_ - _loc14_ * _loc17_)),_loc1_ * (_loc18_ * (_loc9_ * _loc10_ - _loc12_ * _loc6_) + _loc14_ * (_loc17_ * _loc6_ - _loc9_ * _loc16_) + _loc11_ * (_loc12_ * _loc16_ - _loc17_ * _loc10_)),_loc1_ * (_loc12_ * (_loc3_ * _loc4_ - _loc6_ * _loc2_) + _loc9_ * (_loc10_ * _loc2_ - _loc3_ * _loc7_) + _loc5_ * (_loc6_ * _loc7_ - _loc10_ * _loc4_)),_loc1_ * (_loc10_ * (_loc8_ * _loc4_ - _loc11_ * _loc2_) + _loc6_ * (_loc14_ * _loc2_ - _loc8_ * _loc7_) + _loc3_ * (_loc11_ * _loc7_ - _loc14_ * _loc4_)),_loc1_ * (_loc7_ * (_loc8_ * _loc9_ - _loc11_ * _loc5_) + _loc4_ * (_loc14_ * _loc5_ - _loc8_ * _loc12_) + _loc2_ * (_loc11_ * _loc12_ - _loc14_ * _loc9_)),_loc1_ * (_loc14_ * (_loc9_ * _loc3_ - _loc5_ * _loc6_) + _loc11_ * (_loc5_ * _loc10_ - _loc12_ * _loc3_) + _loc8_ * (_loc12_ * _loc6_ - _loc9_ * _loc10_)));
  297.    }
  298.    static function preCalc()
  299.    {
  300.       if(sandy.math.Matrix4Math._bIsPrecalculed)
  301.       {
  302.          return true;
  303.       }
  304.       sandy.math.Matrix4Math._bIsPrecalculed = true;
  305.       var _loc1_ = 0;
  306.       while(_loc1_ < 360)
  307.       {
  308.          sandy.math.Matrix4Math._aSin[_loc1_] = Math.sin(_loc1_ * 3.141592653589793 / 180);
  309.          sandy.math.Matrix4Math._aCos[_loc1_] = Math.cos(_loc1_ * 3.141592653589793 / 180);
  310.          _loc1_ = _loc1_ + 1;
  311.       }
  312.       return true;
  313.    }
  314. }
  315.