com.jme3.math
Class Vector4f

java.lang.Object
  extended by com.jme3.math.Vector4f
All Implemented Interfaces:
Savable, java.io.Serializable, java.lang.Cloneable

public final class Vector4f
extends java.lang.Object
implements Savable, java.lang.Cloneable, java.io.Serializable

Vector4f defines a Vector for a four float value tuple. Vector4f can represent any four dimensional value, such as a vertex, a normal, etc. Utility methods are also included to aid in mathematical calculations.

See Also:
Serialized Form

Field Summary
static Vector4f NAN
           
static Vector4f NEGATIVE_INFINITY
           
static Vector4f POSITIVE_INFINITY
           
static Vector4f UNIT_W
           
static Vector4f UNIT_X
           
static Vector4f UNIT_XYZW
           
static Vector4f UNIT_Y
           
static Vector4f UNIT_Z
           
 float w
          the w value of the vector.
 float x
          the x value of the vector.
 float y
          the y value of the vector.
 float z
          the z value of the vector.
static Vector4f ZERO
           
 
Constructor Summary
Vector4f()
          Constructor instantiates a new Vector3f with default values of (0,0,0).
Vector4f(float x, float y, float z, float w)
          Constructor instantiates a new Vector4f with provides values.
Vector4f(Vector4f copy)
          Constructor instantiates a new Vector3f that is a copy of the provided vector
 
Method Summary
 Vector4f add(float addX, float addY, float addZ, float addW)
          add adds the provided values to this vector, creating a new vector that is then returned.
 Vector4f add(Vector4f vec)
          add adds a provided vector to this vector creating a resultant vector which is returned.
 Vector4f add(Vector4f vec, Vector4f result)
          add adds the values of a provided vector storing the values in the supplied vector.
 Vector4f addLocal(float addX, float addY, float addZ, float addW)
          addLocal adds the provided values to this vector internally, and returns a handle to this vector for easy chaining of calls.
 Vector4f addLocal(Vector4f vec)
          addLocal adds a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls.
 float angleBetween(Vector4f otherVector)
          angleBetween returns (in radians) the angle between two vectors.
 Vector4f clone()
           
 float distance(Vector4f v)
          distance calculates the distance between this vector and vector v.
 float distanceSquared(Vector4f v)
          distanceSquared calculates the distance squared between this vector and vector v.
 Vector4f divide(float scalar)
          divide divides the values of this vector by a scalar and returns the result.
 Vector4f divide(Vector4f scalar)
          divide divides the values of this vector by a scalar and returns the result.
 Vector4f divideLocal(float scalar)
          divideLocal divides this vector by a scalar internally, and returns a handle to this vector for easy chaining of calls.
 Vector4f divideLocal(Vector4f scalar)
          divideLocal divides this vector by a scalar internally, and returns a handle to this vector for easy chaining of calls.
 float dot(Vector4f vec)
          dot calculates the dot product of this vector with a provided vector.
 boolean equals(java.lang.Object o)
          are these two vectors the same? they are is they both have the same x,y, and z values.
 float get(int index)
           
 float getW()
           
 float getX()
           
 float getY()
           
 float getZ()
           
 int hashCode()
          hashCode returns a unique code for this vector object based on it's values.
 Vector4f interpolate(Vector4f finalVec, float changeAmnt)
          Sets this vector to the interpolation by changeAmnt from this to the finalVec this=(1-changeAmnt)*this + changeAmnt * finalVec
 Vector4f interpolate(Vector4f beginVec, Vector4f finalVec, float changeAmnt)
          Sets this vector to the interpolation by changeAmnt from beginVec to finalVec this=(1-changeAmnt)*beginVec + changeAmnt * finalVec
 boolean isUnitVector()
          Returns true if this vector is a unit vector (length() ~= 1), returns false otherwise.
static boolean isValidVector(Vector4f vector)
          Check a vector...
 float length()
          length calculates the magnitude of this vector.
 float lengthSquared()
          lengthSquared calculates the squared value of the magnitude of the vector.
 void maxLocal(Vector4f other)
          maxLocal computes the maximum value for each component in this and other vector.
 void minLocal(Vector4f other)
          minLocal computes the minimum value for each component in this and other vector.
 Vector4f mult(float scalar)
          mult multiplies this vector by a scalar.
 Vector4f mult(float scalar, Vector4f product)
          mult multiplies this vector by a scalar.
 Vector4f mult(Vector4f vec)
          multLocal multiplies a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls.
 Vector4f mult(Vector4f vec, Vector4f store)
          multLocal multiplies a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls.
 Vector4f multLocal(float scalar)
          multLocal multiplies this vector by a scalar internally, and returns a handle to this vector for easy chaining of calls.
 Vector4f multLocal(float x, float y, float z, float w)
          multLocal multiplies this vector by 3 scalars internally, and returns a handle to this vector for easy chaining of calls.
 Vector4f multLocal(Vector4f vec)
          multLocal multiplies a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls.
 Vector4f negate()
          negate returns the negative of this vector.
 Vector4f negateLocal()
          negateLocal negates the internal values of this vector.
 Vector4f normalize()
          normalize returns the unit vector of this vector.
 Vector4f normalizeLocal()
          normalizeLocal makes this vector into a unit vector of itself.
 Vector4f project(Vector4f other)
           
 void read(JmeImporter e)
           
 Vector4f scaleAdd(float scalar, Vector4f add)
          scaleAdd multiplies this vector by a scalar then adds the given Vector3f.
 Vector4f scaleAdd(float scalar, Vector4f mult, Vector4f add)
          scaleAdd multiplies the given vector by a scalar then adds the given vector.
 Vector4f set(float x, float y, float z, float w)
          set sets the x,y,z,w values of the vector based on passed parameters.
 void set(int index, float value)
           
 Vector4f set(Vector4f vect)
          set sets the x,y,z values of the vector by copying the supplied vector.
 Vector4f setW(float w)
           
 Vector4f setX(float x)
           
 Vector4f setY(float y)
           
 Vector4f setZ(float z)
           
 Vector4f subtract(float subtractX, float subtractY, float subtractZ, float subtractW)
          subtract subtracts the provided values from this vector, creating a new vector that is then returned.
 Vector4f subtract(Vector4f vec)
          subtract subtracts the values of a given vector from those of this vector creating a new vector object.
 Vector4f subtract(Vector4f vec, Vector4f result)
          subtract
 Vector4f subtractLocal(float subtractX, float subtractY, float subtractZ, float subtractW)
          subtractLocal subtracts the provided values from this vector internally, and returns a handle to this vector for easy chaining of calls.
 Vector4f subtractLocal(Vector4f vec)
          subtractLocal subtracts a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls.
 float[] toArray(float[] floats)
          Saves this Vector3f into the given float[] object.
 java.lang.String toString()
          toString returns the string representation of this vector.
 void write(JmeExporter e)
           
 Vector4f zero()
          zero resets this vector's data to zero internally.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ZERO

public static final Vector4f ZERO

NAN

public static final Vector4f NAN

UNIT_X

public static final Vector4f UNIT_X

UNIT_Y

public static final Vector4f UNIT_Y

UNIT_Z

public static final Vector4f UNIT_Z

UNIT_W

public static final Vector4f UNIT_W

UNIT_XYZW

public static final Vector4f UNIT_XYZW

POSITIVE_INFINITY

public static final Vector4f POSITIVE_INFINITY

NEGATIVE_INFINITY

public static final Vector4f NEGATIVE_INFINITY

x

public float x
the x value of the vector.


y

public float y
the y value of the vector.


z

public float z
the z value of the vector.


w

public float w
the w value of the vector.

Constructor Detail

Vector4f

public Vector4f()
Constructor instantiates a new Vector3f with default values of (0,0,0).


Vector4f

public Vector4f(float x,
                float y,
                float z,
                float w)
Constructor instantiates a new Vector4f with provides values.

Parameters:
x - the x value of the vector.
y - the y value of the vector.
z - the z value of the vector.
w - the w value of the vector.

Vector4f

public Vector4f(Vector4f copy)
Constructor instantiates a new Vector3f that is a copy of the provided vector

Parameters:
copy - The Vector3f to copy
Method Detail

set

public Vector4f set(float x,
                    float y,
                    float z,
                    float w)
set sets the x,y,z,w values of the vector based on passed parameters.

Parameters:
x - the x value of the vector.
y - the y value of the vector.
z - the z value of the vector.
w - the w value of the vector.
Returns:
this vector

set

public Vector4f set(Vector4f vect)
set sets the x,y,z values of the vector by copying the supplied vector.

Parameters:
vect - the vector to copy.
Returns:
this vector

add

public Vector4f add(Vector4f vec)
add adds a provided vector to this vector creating a resultant vector which is returned. If the provided vector is null, null is returned.

Parameters:
vec - the vector to add to this.
Returns:
the resultant vector.

add

public Vector4f add(Vector4f vec,
                    Vector4f result)
add adds the values of a provided vector storing the values in the supplied vector.

Parameters:
vec - the vector to add to this
result - the vector to store the result in
Returns:
result returns the supplied result vector.

addLocal

public Vector4f addLocal(Vector4f vec)
addLocal adds a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls. If the provided vector is null, null is returned.

Parameters:
vec - the vector to add to this vector.
Returns:
this

add

public Vector4f add(float addX,
                    float addY,
                    float addZ,
                    float addW)
add adds the provided values to this vector, creating a new vector that is then returned.

Parameters:
addX - the x value to add.
addY - the y value to add.
addZ - the z value to add.
Returns:
the result vector.

addLocal

public Vector4f addLocal(float addX,
                         float addY,
                         float addZ,
                         float addW)
addLocal adds the provided values to this vector internally, and returns a handle to this vector for easy chaining of calls.

Parameters:
addX - value to add to x
addY - value to add to y
addZ - value to add to z
Returns:
this

scaleAdd

public Vector4f scaleAdd(float scalar,
                         Vector4f add)
scaleAdd multiplies this vector by a scalar then adds the given Vector3f.

Parameters:
scalar - the value to multiply this vector by.
add - the value to add

scaleAdd

public Vector4f scaleAdd(float scalar,
                         Vector4f mult,
                         Vector4f add)
scaleAdd multiplies the given vector by a scalar then adds the given vector.

Parameters:
scalar - the value to multiply this vector by.
mult - the value to multiply the scalar by
add - the value to add

dot

public float dot(Vector4f vec)
dot calculates the dot product of this vector with a provided vector. If the provided vector is null, 0 is returned.

Parameters:
vec - the vector to dot with this vector.
Returns:
the resultant dot product of this vector and a given vector.

project

public Vector4f project(Vector4f other)

isUnitVector

public boolean isUnitVector()
Returns true if this vector is a unit vector (length() ~= 1), returns false otherwise.

Returns:
true if this vector is a unit vector (length() ~= 1), or false otherwise.

length

public float length()
length calculates the magnitude of this vector.

Returns:
the length or magnitude of the vector.

lengthSquared

public float lengthSquared()
lengthSquared calculates the squared value of the magnitude of the vector.

Returns:
the magnitude squared of the vector.

distanceSquared

public float distanceSquared(Vector4f v)
distanceSquared calculates the distance squared between this vector and vector v.

Parameters:
v - the second vector to determine the distance squared.
Returns:
the distance squared between the two vectors.

distance

public float distance(Vector4f v)
distance calculates the distance between this vector and vector v.

Parameters:
v - the second vector to determine the distance.
Returns:
the distance between the two vectors.

mult

public Vector4f mult(float scalar)
mult multiplies this vector by a scalar. The resultant vector is returned.

Parameters:
scalar - the value to multiply this vector by.
Returns:
the new vector.

mult

public Vector4f mult(float scalar,
                     Vector4f product)
mult multiplies this vector by a scalar. The resultant vector is supplied as the second parameter and returned.

Parameters:
scalar - the scalar to multiply this vector by.
product - the product to store the result in.
Returns:
product

multLocal

public Vector4f multLocal(float scalar)
multLocal multiplies this vector by a scalar internally, and returns a handle to this vector for easy chaining of calls.

Parameters:
scalar - the value to multiply this vector by.
Returns:
this

multLocal

public Vector4f multLocal(Vector4f vec)
multLocal multiplies a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls. If the provided vector is null, null is returned.

Parameters:
vec - the vector to mult to this vector.
Returns:
this

multLocal

public Vector4f multLocal(float x,
                          float y,
                          float z,
                          float w)
multLocal multiplies this vector by 3 scalars internally, and returns a handle to this vector for easy chaining of calls.

Parameters:
x -
y -
z -
w -
Returns:
this

mult

public Vector4f mult(Vector4f vec)
multLocal multiplies a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls. If the provided vector is null, null is returned.

Parameters:
vec - the vector to mult to this vector.
Returns:
this

mult

public Vector4f mult(Vector4f vec,
                     Vector4f store)
multLocal multiplies a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls. If the provided vector is null, null is returned.

Parameters:
vec - the vector to mult to this vector.
store - result vector (null to create a new vector)
Returns:
this

divide

public Vector4f divide(float scalar)
divide divides the values of this vector by a scalar and returns the result. The values of this vector remain untouched.

Parameters:
scalar - the value to divide this vectors attributes by.
Returns:
the result Vector.

divideLocal

public Vector4f divideLocal(float scalar)
divideLocal divides this vector by a scalar internally, and returns a handle to this vector for easy chaining of calls. Dividing by zero will result in an exception.

Parameters:
scalar - the value to divides this vector by.
Returns:
this

divide

public Vector4f divide(Vector4f scalar)
divide divides the values of this vector by a scalar and returns the result. The values of this vector remain untouched.

Parameters:
scalar - the value to divide this vectors attributes by.
Returns:
the result Vector.

divideLocal

public Vector4f divideLocal(Vector4f scalar)
divideLocal divides this vector by a scalar internally, and returns a handle to this vector for easy chaining of calls. Dividing by zero will result in an exception.

Parameters:
scalar - the value to divides this vector by.
Returns:
this

negate

public Vector4f negate()
negate returns the negative of this vector. All values are negated and set to a new vector.

Returns:
the negated vector.

negateLocal

public Vector4f negateLocal()
negateLocal negates the internal values of this vector.

Returns:
this.

subtract

public Vector4f subtract(Vector4f vec)
subtract subtracts the values of a given vector from those of this vector creating a new vector object. If the provided vector is null, null is returned.

Parameters:
vec - the vector to subtract from this vector.
Returns:
the result vector.

subtractLocal

public Vector4f subtractLocal(Vector4f vec)
subtractLocal subtracts a provided vector to this vector internally, and returns a handle to this vector for easy chaining of calls. If the provided vector is null, null is returned.

Parameters:
vec - the vector to subtract
Returns:
this

subtract

public Vector4f subtract(Vector4f vec,
                         Vector4f result)
subtract

Parameters:
vec - the vector to subtract from this
result - the vector to store the result in
Returns:
result

subtract

public Vector4f subtract(float subtractX,
                         float subtractY,
                         float subtractZ,
                         float subtractW)
subtract subtracts the provided values from this vector, creating a new vector that is then returned.

Parameters:
subtractX - the x value to subtract.
subtractY - the y value to subtract.
subtractZ - the z value to subtract.
subtractW - the w value to subtract.
Returns:
the result vector.

subtractLocal

public Vector4f subtractLocal(float subtractX,
                              float subtractY,
                              float subtractZ,
                              float subtractW)
subtractLocal subtracts the provided values from this vector internally, and returns a handle to this vector for easy chaining of calls.

Parameters:
subtractX - the x value to subtract.
subtractY - the y value to subtract.
subtractZ - the z value to subtract.
subtractW - the w value to subtract.
Returns:
this

normalize

public Vector4f normalize()
normalize returns the unit vector of this vector.

Returns:
unit vector of this vector.

normalizeLocal

public Vector4f normalizeLocal()
normalizeLocal makes this vector into a unit vector of itself.

Returns:
this.

maxLocal

public void maxLocal(Vector4f other)
maxLocal computes the maximum value for each component in this and other vector. The result is stored in this vector.

Parameters:
other -

minLocal

public void minLocal(Vector4f other)
minLocal computes the minimum value for each component in this and other vector. The result is stored in this vector.

Parameters:
other -

zero

public Vector4f zero()
zero resets this vector's data to zero internally.


angleBetween

public float angleBetween(Vector4f otherVector)
angleBetween returns (in radians) the angle between two vectors. It is assumed that both this vector and the given vector are unit vectors (iow, normalized).

Parameters:
otherVector - a unit vector to find the angle against
Returns:
the angle in radians.

interpolate

public Vector4f interpolate(Vector4f finalVec,
                            float changeAmnt)
Sets this vector to the interpolation by changeAmnt from this to the finalVec this=(1-changeAmnt)*this + changeAmnt * finalVec

Parameters:
finalVec - The final vector to interpolate towards
changeAmnt - An amount between 0.0 - 1.0 representing a precentage change from this towards finalVec

interpolate

public Vector4f interpolate(Vector4f beginVec,
                            Vector4f finalVec,
                            float changeAmnt)
Sets this vector to the interpolation by changeAmnt from beginVec to finalVec this=(1-changeAmnt)*beginVec + changeAmnt * finalVec

Parameters:
beginVec - the beging vector (changeAmnt=0)
finalVec - The final vector to interpolate towards
changeAmnt - An amount between 0.0 - 1.0 representing a precentage change from beginVec towards finalVec

isValidVector

public static boolean isValidVector(Vector4f vector)
Check a vector... if it is null or its floats are NaN or infinite, return false. Else return true.

Parameters:
vector - the vector to check
Returns:
true or false as stated above.

clone

public Vector4f clone()
Overrides:
clone in class java.lang.Object

toArray

public float[] toArray(float[] floats)
Saves this Vector3f into the given float[] object.

Parameters:
floats - The float[] to take this Vector3f. If null, a new float[3] is created.
Returns:
The array, with X, Y, Z float values in that order

equals

public boolean equals(java.lang.Object o)
are these two vectors the same? they are is they both have the same x,y, and z values.

Overrides:
equals in class java.lang.Object
Parameters:
o - the object to compare for equality
Returns:
true if they are equal

hashCode

public int hashCode()
hashCode returns a unique code for this vector object based on it's values. If two vectors are logically equivalent, they will return the same hash code value.

Overrides:
hashCode in class java.lang.Object
Returns:
the hash code value of this vector.

toString

public java.lang.String toString()
toString returns the string representation of this vector. The format is: org.jme.math.Vector3f [X=XX.XXXX, Y=YY.YYYY, Z=ZZ.ZZZZ, W=WW.WWWW]

Overrides:
toString in class java.lang.Object
Returns:
the string representation of this vector.

write

public void write(JmeExporter e)
           throws java.io.IOException
Specified by:
write in interface Savable
Throws:
java.io.IOException

read

public void read(JmeImporter e)
          throws java.io.IOException
Specified by:
read in interface Savable
Throws:
java.io.IOException

getX

public float getX()

setX

public Vector4f setX(float x)

getY

public float getY()

setY

public Vector4f setY(float y)

getZ

public float getZ()

setZ

public Vector4f setZ(float z)

getW

public float getW()

setW

public Vector4f setW(float w)

get

public float get(int index)
Parameters:
index -
Returns:
x value if index == 0, y value if index == 1 or z value if index == 2
Throws:
java.lang.IllegalArgumentException - if index is not one of 0, 1, 2.

set

public void set(int index,
                float value)
Parameters:
index - which field index in this vector to set.
value - to set to one of x, y, z or w.
Throws:
java.lang.IllegalArgumentException - if index is not one of 0, 1, 2, 3.