home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Esportes / CrossingCup.swf / scripts / __Packages / sandy / math / VectorMath.as < prev    next >
Text File  |  2007-12-11  |  2KB  |  66 lines

  1. class sandy.math.VectorMath
  2. {
  3.    function VectorMath()
  4.    {
  5.    }
  6.    static function getNorm(v)
  7.    {
  8.       return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
  9.    }
  10.    static function negate(v)
  11.    {
  12.       return new sandy.core.data.Vector(- v.x,- v.y,- v.z);
  13.    }
  14.    static function addVector(v, w)
  15.    {
  16.       return new sandy.core.data.Vector(v.x + w.x,v.y + w.y,v.z + w.z);
  17.    }
  18.    static function sub(v, w)
  19.    {
  20.       return new sandy.core.data.Vector(v.x - w.x,v.y - w.y,v.z - w.z);
  21.    }
  22.    static function pow(v, pow)
  23.    {
  24.       return new sandy.core.data.Vector(Math.pow(v.x,pow),Math.pow(v.x,pow),Math.pow(v.x,pow));
  25.    }
  26.    static function scale(v, n)
  27.    {
  28.       return new sandy.core.data.Vector(v.x * n,v.y * n,v.z * n);
  29.    }
  30.    static function dot(v, w)
  31.    {
  32.       return v.x * w.x + v.y * w.y + w.z * v.z;
  33.    }
  34.    static function cross(w, v)
  35.    {
  36.       return new sandy.core.data.Vector(w.y * v.z - w.z * v.y,w.z * v.x - w.x * v.z,w.x * v.y - w.y * v.x);
  37.    }
  38.    static function normalize(v)
  39.    {
  40.       var _loc1_ = sandy.math.VectorMath.getNorm(v);
  41.       if(_loc1_ == 0 || _loc1_ == 1)
  42.       {
  43.          return false;
  44.       }
  45.       v.x /= _loc1_;
  46.       v.y /= _loc1_;
  47.       v.z /= _loc1_;
  48.       return true;
  49.    }
  50.    static function getAngle(v, w)
  51.    {
  52.       var _loc1_ = sandy.math.VectorMath.dot(v,w) / (sandy.math.VectorMath.getNorm(v) * sandy.math.VectorMath.getNorm(w));
  53.       var _loc2_ = 1 - _loc1_ * _loc1_;
  54.       if(_loc2_ < 0)
  55.       {
  56.          trace(" wrong " + _loc1_);
  57.          _loc2_ = 0;
  58.       }
  59.       return Math.atan2(Math.sqrt(_loc2_),_loc1_);
  60.    }
  61.    static function clone(v)
  62.    {
  63.       return new sandy.core.data.Vector(v.x,v.y,v.z);
  64.    }
  65. }
  66.