public final class Matrix3f extends java.lang.Object implements Savable, java.lang.Cloneable, java.io.Serializable
Matrix3f
defines a 3x3 matrix. Matrix data is maintained
internally and is accessible via the get and set methods. Convenience methods
are used for matrix operations as well as generating a matrix from a given
set of values.Modifier and Type | Field and Description |
---|---|
static Matrix3f |
IDENTITY
an instance of the identity matrix (diagonals = 1, other elements = 0)
|
protected float |
m00
the element in row 0, column 0
|
protected float |
m01
the element in row 0, column 1
|
protected float |
m02
the element in row 0, column 2
|
protected float |
m10
the element in row 1, column 0
|
protected float |
m11
the element in row 1, column 1
|
protected float |
m12
the element in row 1, column 2
|
protected float |
m20
the element in row 2, column 0
|
protected float |
m21
the element in row 2, column 1
|
protected float |
m22
the element in row 2, column 2
|
static Matrix3f |
ZERO
an instance of the zero matrix (all elements = 0)
|
Constructor and Description |
---|
Matrix3f()
Constructor instantiates a new
Matrix3f object. |
Matrix3f(float m00,
float m01,
float m02,
float m10,
float m11,
float m12,
float m20,
float m21,
float m22)
constructs a matrix with the given values.
|
Matrix3f(Matrix3f mat)
Copy constructor that creates a new
Matrix3f object that
is the same as the provided matrix. |
Modifier and Type | Method and Description |
---|---|
void |
absoluteLocal()
Takes the absolute value of all matrix fields locally.
|
Matrix3f |
adjoint()
Returns a new matrix representing the adjoint of this matrix.
|
Matrix3f |
adjoint(Matrix3f store)
Places the adjoint of this matrix in store (creates store if null.)
|
Matrix3f |
clone()
Create a copy of this matrix.
|
float |
determinant()
determinant generates the determinant of this matrix. |
boolean |
equals(java.lang.Object o)
are these two matrices the same? they are is they both have the same mXX values.
|
void |
fillFloatArray(float[] f,
boolean columnMajor)
Copy all elements of this matrix to a float array.
|
java.nio.FloatBuffer |
fillFloatBuffer(java.nio.FloatBuffer fb,
boolean columnMajor)
fillFloatBuffer fills a FloatBuffer object with the matrix
data. |
void |
fromAngleAxis(float angle,
Vector3f axis)
fromAngleAxis sets this matrix4f to the values specified
by an angle and an axis of rotation. |
void |
fromAngleNormalAxis(float angle,
Vector3f axis)
fromAngleNormalAxis sets this matrix4f to the values
specified by an angle and a normalized axis of rotation. |
void |
fromAxes(Vector3f uAxis,
Vector3f vAxis,
Vector3f wAxis)
Recreate Matrix using the provided axis.
|
void |
fromStartEndVectors(Vector3f start,
Vector3f end)
A function for creating a rotation matrix that rotates a vector called
"start" into another vector called "end".
|
void |
get(float[] data,
boolean rowMajor)
get(float[]) returns the matrix in row-major or column-major order. |
float |
get(int i,
int j)
get retrieves a value from the matrix at the given position. |
Vector3f |
getColumn(int i)
getColumn returns one of three columns specified by the
parameter. |
Vector3f |
getColumn(int i,
Vector3f store)
getColumn returns one of three columns specified by the
parameter. |
Vector3f |
getRow(int i)
getColumn returns one of three rows as specified by the
parameter. |
Vector3f |
getRow(int i,
Vector3f store)
getRow returns one of three rows as specified by the
parameter. |
int |
hashCode()
hashCode returns the hash code value as an integer and is
supported for the benefit of hashing based collection classes such as
Hashtable, HashMap, HashSet etc. |
Matrix3f |
invert()
Inverts this matrix as a new Matrix3f.
|
Matrix3f |
invert(Matrix3f store)
Inverts this matrix and stores it in the given store.
|
Matrix3f |
invertLocal()
Inverts this matrix locally.
|
boolean |
isIdentity() |
void |
loadIdentity()
loadIdentity sets this matrix to the identity matrix. |
Matrix3f |
mult(Matrix3f mat)
mult multiplies this matrix by a given matrix. |
Matrix3f |
mult(Matrix3f mat,
Matrix3f product)
mult multiplies this matrix by a given matrix. |
Vector3f |
mult(Vector3f vec)
mult multiplies this matrix by a given
Vector3f object. |
Vector3f |
mult(Vector3f vec,
Vector3f product)
Multiplies this 3x3 matrix by the 1x3 Vector vec and stores the result in
product.
|
Matrix3f |
multLocal(float scale)
multLocal multiplies this matrix internally by
a given float scale factor. |
Matrix3f |
multLocal(Matrix3f mat)
mult multiplies this matrix by a given matrix. |
Vector3f |
multLocal(Vector3f vec)
multLocal multiplies this matrix by a given
Vector3f object. |
Matrix3f |
normalize(Matrix3f store)
Normalize this matrix and store the result in the store parameter that is
returned.
|
Matrix3f |
normalizeLocal()
Normalize this matrix
|
void |
read(JmeImporter e)
De-serialize this matrix from the specified importer, for example
when loading from a J3O file.
|
void |
scale(Vector3f scale)
scale scales the operation performed by this matrix on a
per-component basis. |
Matrix3f |
set(float[] matrix)
set sets the values of this matrix from an array of
values assuming that the data is rowMajor order; |
Matrix3f |
set(float[][] matrix)
set sets the values of the matrix to those supplied by the
3x3 two dimenion array. |
Matrix3f |
set(float[] matrix,
boolean rowMajor)
set sets the values of this matrix from an array of
values; |
Matrix3f |
set(int i,
int j,
float value)
set places a given value into the matrix at the given
position. |
Matrix3f |
set(Matrix3f matrix)
copy transfers the contents of a given matrix to this
matrix. |
Matrix3f |
set(Quaternion quaternion)
set defines the values of the matrix based on a supplied
Quaternion . |
Matrix3f |
setColumn(int i,
Vector3f column)
setColumn sets a particular column of this matrix to that
represented by the provided vector. |
Matrix3f |
setRow(int i,
Vector3f row)
setRow sets a particular row of this matrix to that
represented by the provided vector. |
java.nio.FloatBuffer |
toFloatBuffer()
toFloatBuffer returns a FloatBuffer object that contains
the matrix data. |
java.lang.String |
toString()
toString returns a string representation of this matrix. |
Matrix3f |
transpose()
transpose locally transposes this Matrix. |
Matrix3f |
transposeLocal()
Transposes this matrix in place.
|
Matrix3f |
transposeNew()
transposeNew returns a transposed version of this matrix. |
void |
write(JmeExporter e)
Serialize this matrix to the specified exporter, for example when
saving to a J3O file.
|
Matrix3f |
zero()
Sets all of the values in this matrix to zero.
|
protected float m00
protected float m01
protected float m02
protected float m10
protected float m11
protected float m12
protected float m20
protected float m21
protected float m22
public static final Matrix3f ZERO
public static final Matrix3f IDENTITY
public Matrix3f()
Matrix3f
object. The
initial values for the matrix is that of the identity matrix.public Matrix3f(float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22)
m00
- 0x0 in the matrix.m01
- 0x1 in the matrix.m02
- 0x2 in the matrix.m10
- 1x0 in the matrix.m11
- 1x1 in the matrix.m12
- 1x2 in the matrix.m20
- 2x0 in the matrix.m21
- 2x1 in the matrix.m22
- 2x2 in the matrix.public Matrix3f(Matrix3f mat)
Matrix3f
object that
is the same as the provided matrix.mat
- the matrix to copy.public void absoluteLocal()
public Matrix3f set(Matrix3f matrix)
copy
transfers the contents of a given matrix to this
matrix. If a null matrix is supplied, this matrix is set to the identity
matrix.matrix
- the matrix to copy.public float get(int i, int j)
get
retrieves a value from the matrix at the given position.i
- the row index.j
- the column index.java.lang.IllegalArgumentException
- if either index is invalidpublic void get(float[] data, boolean rowMajor)
get(float[])
returns the matrix in row-major or column-major order.data
- The array to return the data into. This array can be 9 or 16 floats in size.
Only the upper 3x3 are assigned to in the case of a 16 element array.rowMajor
- True for row major storage in the array (translation in elements 3, 7, 11 for a 4x4),
false for column major (translation in elements 12, 13, 14 for a 4x4).public Matrix3f normalize(Matrix3f store)
store
- the matrix to store the result of the normalization. If this
parameter is null a new one is createdpublic Matrix3f normalizeLocal()
public Vector3f getColumn(int i)
getColumn
returns one of three columns specified by the
parameter. This column is returned as a Vector3f
object.i
- the column to retrieve. Must be between 0 and 2.public Vector3f getColumn(int i, Vector3f store)
getColumn
returns one of three columns specified by the
parameter. This column is returned as a Vector3f
object.i
- the column to retrieve. Must be between 0 and 2.store
- the vector object to store the result in. if null, a new one
is created.public Vector3f getRow(int i)
getColumn
returns one of three rows as specified by the
parameter. This row is returned as a Vector3f
object.i
- the row to retrieve. Must be between 0 and 2.public Vector3f getRow(int i, Vector3f store)
getRow
returns one of three rows as specified by the
parameter. This row is returned as a Vector3f
object.i
- the row to retrieve. Must be between 0 and 2.store
- the vector object to store the result in. if null, a new one
is created.public java.nio.FloatBuffer toFloatBuffer()
toFloatBuffer
returns a FloatBuffer object that contains
the matrix data.public java.nio.FloatBuffer fillFloatBuffer(java.nio.FloatBuffer fb, boolean columnMajor)
fillFloatBuffer
fills a FloatBuffer object with the matrix
data.fb
- the buffer to fill, starting at current position. Must have
room for 9 more floats.columnMajor
- true → column-major order, false → row-major orderpublic void fillFloatArray(float[] f, boolean columnMajor)
f
- the array to fill (not null, length≥9)columnMajor
- true → column-major order, false → row-major orderpublic Matrix3f setColumn(int i, Vector3f column)
setColumn
sets a particular column of this matrix to that
represented by the provided vector.i
- the column to set.column
- the data to set.public Matrix3f setRow(int i, Vector3f row)
setRow
sets a particular row of this matrix to that
represented by the provided vector.i
- the row to set.row
- the data to set.public Matrix3f set(int i, int j, float value)
set
places a given value into the matrix at the given
position.i
- the row index.j
- the column index.value
- the value for (i, j).java.lang.IllegalArgumentException
- if either index is invalidpublic Matrix3f set(float[][] matrix)
set
sets the values of the matrix to those supplied by the
3x3 two dimenion array.matrix
- the new values of the matrix.java.lang.IllegalArgumentException
- if the matrix is not 3x3public void fromAxes(Vector3f uAxis, Vector3f vAxis, Vector3f wAxis)
uAxis
- Vector3fvAxis
- Vector3fwAxis
- Vector3fpublic Matrix3f set(float[] matrix)
set
sets the values of this matrix from an array of
values assuming that the data is rowMajor order;matrix
- the matrix to set the value to.public Matrix3f set(float[] matrix, boolean rowMajor)
set
sets the values of this matrix from an array of
values;matrix
- the matrix to set the value to.rowMajor
- whether the incoming data is in row or column major order.public Matrix3f set(Quaternion quaternion)
set
defines the values of the matrix based on a supplied
Quaternion
. It should be noted that all previous values
will be overridden.quaternion
- the quaternion to create a rotational matrix from.public void loadIdentity()
loadIdentity
sets this matrix to the identity matrix.
Where all values are zero except those along the diagonal which are one.public boolean isIdentity()
public void fromAngleAxis(float angle, Vector3f axis)
fromAngleAxis
sets this matrix4f to the values specified
by an angle and an axis of rotation. This method creates an object, so
use fromAngleNormalAxis if your axis is already normalized.angle
- the angle to rotate (in radians).axis
- the axis of rotation.public void fromAngleNormalAxis(float angle, Vector3f axis)
fromAngleNormalAxis
sets this matrix4f to the values
specified by an angle and a normalized axis of rotation.angle
- the angle to rotate (in radians).axis
- the axis of rotation (already normalized).public Matrix3f mult(Matrix3f mat)
mult
multiplies this matrix by a given matrix. The result
matrix is returned as a new object. If the given matrix is null, a null
matrix is returned.mat
- the matrix to multiply this matrix by.public Matrix3f mult(Matrix3f mat, Matrix3f product)
mult
multiplies this matrix by a given matrix. The result
matrix is returned as a new object.mat
- the matrix to multiply this matrix by.product
- the matrix to store the result in. if null, a new matrix3f is
created. It is safe for mat and product to be the same object.public Vector3f mult(Vector3f vec)
mult
multiplies this matrix by a given
Vector3f
object. The result vector is returned. If the
given vector is null, null will be returned.vec
- the vector to multiply this matrix by.public Vector3f mult(Vector3f vec, Vector3f product)
vec
- The Vector3f to multiply.product
- The Vector3f to store the result, it is safe for this to be
the same as vec.public Matrix3f multLocal(float scale)
multLocal
multiplies this matrix internally by
a given float scale factor.scale
- the value to scale by.public Vector3f multLocal(Vector3f vec)
multLocal
multiplies this matrix by a given
Vector3f
object. The result vector is stored inside the
passed vector, then returned . If the given vector is null, null will be
returned.vec
- the vector to multiply this matrix by.public Matrix3f multLocal(Matrix3f mat)
mult
multiplies this matrix by a given matrix. The result
matrix is saved in the current matrix. If the given matrix is null,
nothing happens. The current matrix is returned. This is equivalent to
this*=matmat
- the matrix to multiply this matrix by.public Matrix3f transposeLocal()
public Matrix3f invert()
public Matrix3f invert(Matrix3f store)
store
- storage for the result (modified if not null)public Matrix3f invertLocal()
public Matrix3f adjoint()
public Matrix3f adjoint(Matrix3f store)
store
- The matrix to store the result in. If null, a new matrix is created.public float determinant()
determinant
generates the determinant of this matrix.public Matrix3f zero()
public Matrix3f transpose()
transpose
locally transposes this Matrix.
This is inconsistent with general value vs local semantics, but is
preserved for backwards compatibility. Use transposeNew() to transpose
to a new object (value).public Matrix3f transposeNew()
transposeNew
returns a transposed version of this matrix.public java.lang.String toString()
toString
returns a string representation of this matrix.
For example, an identity matrix would be represented by:
Matrix3f [ 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 ]
toString
in class java.lang.Object
public int hashCode()
hashCode
returns the hash code value as an integer and is
supported for the benefit of hashing based collection classes such as
Hashtable, HashMap, HashSet etc.hashCode
in class java.lang.Object
Object.hashCode()
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
o
- the object to compare for equalitypublic void write(JmeExporter e) throws java.io.IOException
public void read(JmeImporter e) throws java.io.IOException
public void fromStartEndVectors(Vector3f start, Vector3f end)
start
- normalized non-zero starting vectorend
- normalized non-zero ending vector
See Tomas M�ller, John Hughes "Efficiently Building a Matrix to Rotate
One Vector to Another" Journal of Graphics Tools, 4(4):1-4, 1999.public void scale(Vector3f scale)
scale
scales the operation performed by this matrix on a
per-component basis.scale
- The scale applied to each of the X, Y and Z output values.public Matrix3f clone()
clone
in class java.lang.Object