@class
A 3-dimensional Vector class with additional functions necessary for 3D operations

@param {Number} x, y, z
967185
function _Vector3(x, y, z) {
  if(!x) x = 0;
  if(!y) y = 0;
  if(!z) z = 0;

  var values = [x, y, z];
  Vector.apply(this, [3, values]);

  readonly(this, "x", x);
  readonly(this, "y", y);
  readonly(this, "z", z);
  readonly(this, "homogeneous", _getHomogeneous(this));
  readonly(this, "vector4", _getVector4(this));
}
901403
function(v) {
    var m = this.m;
    return new Vector(
      m[0] * v.x + m[1] * v.y + m[2] * v.z,
      m[4] * v.x + m[5] * v.y + m[6] * v.z,
      m[8] * v.x + m[9] * v.y + m[10] * v.z
    );
  }
217403
function rotateVector(vec, z, x, y) {
  if (z) {
    vec3.rotateZ(vec, vec, origin, z);
  }
  if (x) {
    vec3.rotateX(vec, vec, origin, x);
  }
  if (y) {
    vec3.rotateY(vec, vec, origin, y);
  }
}
1073303
function(x,y,z){
        return x>=this.minX&&x<=this.maxX&&y>=this.minY&&y<=this.maxY&&z>=this.minZ&&z<=this.maxZ;
    }
710124
function (x, y, z, w) {
        this.array[0] = x;
        this.array[1] = y;
        this.array[2] = z;
        this.array[3] = w;
        this._dirty = true;
        return this;
    }
550558
public Vector3f add(float x, float y, float z) {
        return add(x, y, z, thisOrNew());
    }
622657
function ceil() {
         return new me.Vector3d(Math.ceil(this.x), Math.ceil(this.y), Math.ceil(this.z));
       }
512214
function set(x, y, z) {
         if (x !== +x || y !== +y || z !== +z) {
           throw new Error("invalid x, y, z parameters (not a number)");
         }
         /**
          * x value of the vector
          * @public
          * @type Number
          * @name x
          * @memberOf me.Vector3d
          */
         //this.x = x;

         /**
          * y value of the vector
          * @public
          * @type Number
          * @name y
          * @memberOf me.Vector3d
          */
         //this.y = y;

         /**
          * z value of the vector
          * @public
          * @type Number
          * @name z
          * @memberOf me.Vector3d
          */
         //this.z = z;


         return this._set(x, y, z);
       }
1100725
public Vector3d reflect(double x, double y, double z) {
        return reflect(x, y, z, thisOrNew());
    }
728034
function(array) {
				array = array || [];
				var i = 0;
				var l = this.vertices.length;
				for (var j=0;j<l;j++) {
					var v = this.vertices[j];
					array[i++] = v.x;
					array[i++] = v.y;
					array[i++] = v.z;
				}
				return array;
			}
737719
public Vector3i add(int x, int y, int z) {
        return add(x, y, z, thisOrNew());
    }
518174
function BoundVector3D( px , py , pz , vx , vy , vz ) {
	this.position = new Vector3D( px , py , pz ) ;
	this.vector = new Vector3D( vx , vy , vz ) ;
}
1065778
private Vector3 middleOfCell(int x_index, int y_index) {
        float middleXCell = (float) (indexRegion.minX() + x_index * x_size + x_size / 2);
        float middleYCell = (float) (indexRegion.minY() + y_index * y_size + y_size / 2);
        return new Vector3(middleXCell, middleYCell, 0);
    }
821111
function Vector(x, y) {
    this.x = x != null ? x : 0.0;
    this.y = y != null ? y : 0.0;
  }
1132265
function(n){
        var mult = Math.sqrt(n*n/this.dot(this));
        return new Vec3(this.x*mult, this.y*mult, this.z*mult);
    }
274765
public void set(Vector3D v1, Vector3D v2, Vector3D v3) {
        this.MODE = TRIANGLE_3D;
        this.x1 = v1.getX();
        this.y1 = v1.getY();
        this.z1 = v1.getZ();
        this.x2 = v2.getX();
        this.y2 = v2.getY();
        this.z1 = v2.getZ();
        this.x3 = v3.getX();
        this.y3 = v3.getY();
        this.z1 = v3.getZ();
        calcG();
    }
430760
public Vector3f div(float x, float y, float z, Vector3f dest) {
        dest.x = this.x / x;
        dest.y = this.y / y;
        dest.z = this.z / z;
        return dest;
    }