home *** CD-ROM | disk | FTP | other *** search
- class Vector
- {
- var x = 0;
- var y = 0;
- var z = 0;
- function Vector(x, y, z)
- {
- if(x || y || z)
- {
- this.x = Number(x);
- this.y = Number(y);
- this.z = Number(z);
- }
- }
- function loc(x, y, z)
- {
- this.x = x;
- this.y = y;
- this.z = z;
- }
- function copy()
- {
- return new Vector(this.x,this.y,this.z);
- }
- function get magnitude()
- {
- return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
- }
- function get length()
- {
- return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
- }
- function set length(newLength)
- {
- var _loc2_ = newLength / Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
- this.x *= _loc2_;
- this.y *= _loc2_;
- this.z *= _loc2_;
- }
- function dot(v)
- {
- return Math.sqrt(this.x * v.x + this.y * v.y + this.z * v.z);
- }
- function cross(v)
- {
- return new Vector(this.y * v.z - this.z * v.y,this.z * v.x - this.x * v.z,this.x * v.y - this.y * v.x);
- }
- function normalize()
- {
- var _loc2_ = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
- this.x /= _loc2_;
- this.y /= _loc2_;
- this.z /= _loc2_;
- }
- function normalizeTo()
- {
- var _loc2_ = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
- this.x /= _loc2_;
- this.y /= _loc2_;
- this.z /= _loc2_;
- }
- function getNormalized()
- {
- var _loc2_ = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
- return new Vector(this.x / _loc2_,this.y / _loc2_,this.z / _loc2_);
- }
- function multiply(scalar)
- {
- this.x *= scalar;
- this.y *= scalar;
- this.z *= scalar;
- }
- function divide(scalar)
- {
- this.x /= scalar;
- this.y /= scalar;
- this.z /= scalar;
- }
- function reverse()
- {
- this.x *= -1;
- this.y *= -1;
- this.z *= -1;
- }
- function toString()
- {
- return "Vector(" + this.x + "," + this.y + "," + this.z + ")";
- }
- }
-