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

  1. package Box2D.Common.Math
  2. {
  3.    public class b2Sweep
  4.    {
  5.        
  6.       
  7.       public var localCenter:b2Vec2;
  8.       
  9.       public var a:Number;
  10.       
  11.       public var c:b2Vec2;
  12.       
  13.       public var a0:Number;
  14.       
  15.       public var c0:b2Vec2;
  16.       
  17.       public var t0:Number;
  18.       
  19.       public function b2Sweep()
  20.       {
  21.          localCenter = new b2Vec2();
  22.          c0 = new b2Vec2();
  23.          c = new b2Vec2();
  24.          super();
  25.       }
  26.       
  27.       public function Advance(t:Number) : void
  28.       {
  29.          var alpha:Number = NaN;
  30.          if(t0 < t && 1 - t0 > Number.MIN_VALUE)
  31.          {
  32.             alpha = (t - t0) / (1 - t0);
  33.             c0.x = (1 - alpha) * c0.x + alpha * c.x;
  34.             c0.y = (1 - alpha) * c0.y + alpha * c.y;
  35.             a0 = (1 - alpha) * a0 + alpha * a;
  36.             t0 = t;
  37.          }
  38.       }
  39.       
  40.       public function GetXForm(xf:b2XForm, t:Number) : void
  41.       {
  42.          var alpha:Number = NaN;
  43.          var angle:Number = NaN;
  44.          if(1 - t0 > Number.MIN_VALUE)
  45.          {
  46.             alpha = (t - t0) / (1 - t0);
  47.             xf.position.x = (1 - alpha) * c0.x + alpha * c.x;
  48.             xf.position.y = (1 - alpha) * c0.y + alpha * c.y;
  49.             angle = (1 - alpha) * a0 + alpha * a;
  50.             xf.R.Set(angle);
  51.          }
  52.          else
  53.          {
  54.             xf.position.SetV(c);
  55.             xf.R.Set(a);
  56.          }
  57.          var tMat:b2Mat22 = xf.R;
  58.          xf.position.x -= tMat.col1.x * localCenter.x + tMat.col2.x * localCenter.y;
  59.          xf.position.y -= tMat.col1.y * localCenter.x + tMat.col2.y * localCenter.y;
  60.       }
  61.    }
  62. }
  63.