public class Matrix4x3f extends Object implements Externalizable, Matrix4x3fc
m00 m10 m20 m30
m01 m11 m21 m31
m02 m12 m22 m32
PROPERTY_IDENTITY, PROPERTY_TRANSLATION
Constructor and Description |
---|
Matrix4x3f()
Create a new
Matrix4x3f and set it to identity . |
Matrix4x3f(FloatBuffer buffer)
Create a new
Matrix4x3f by reading its 12 float components from the given FloatBuffer
at the buffer's current position. |
Matrix4x3f(float m00,
float m01,
float m02,
float m10,
float m11,
float m12,
float m20,
float m21,
float m22,
float m30,
float m31,
float m32)
Create a new 4x4 matrix using the supplied float values.
|
Matrix4x3f(Matrix3fc mat)
Create a new
Matrix4x3f by setting its left 3x3 submatrix to the values of the given Matrix3fc
and the rest to identity. |
Matrix4x3f(Matrix4x3fc mat)
Create a new
Matrix4x3f and make it a copy of the given matrix. |
Matrix4x3f(Vector3fc col0,
Vector3fc col1,
Vector3fc col2,
Vector3fc col3)
Create a new
Matrix4x3f and initialize its four columns using the supplied vectors. |
Modifier and Type | Method and Description |
---|---|
Matrix4x3f |
add(Matrix4x3fc other)
Component-wise add
this and other . |
Matrix4x3f |
add(Matrix4x3fc other,
Matrix4x3f dest)
Component-wise add
this and other and store the result in dest . |
Matrix4x3f |
arcball(float radius,
float centerX,
float centerY,
float centerZ,
float angleX,
float angleY)
Apply an arcball view transformation to this matrix with the given
radius and center (centerX, centerY, centerZ)
position of the arcball and the specified X and Y rotation angles. |
Matrix4x3f |
arcball(float radius,
float centerX,
float centerY,
float centerZ,
float angleX,
float angleY,
Matrix4x3f dest)
Apply an arcball view transformation to this matrix with the given
radius and center (centerX, centerY, centerZ)
position of the arcball and the specified X and Y rotation angles, and store the result in dest . |
Matrix4x3f |
arcball(float radius,
Vector3fc center,
float angleX,
float angleY)
Apply an arcball view transformation to this matrix with the given
radius and center
position of the arcball and the specified X and Y rotation angles. |
Matrix4x3f |
arcball(float radius,
Vector3fc center,
float angleX,
float angleY,
Matrix4x3f dest)
Apply an arcball view transformation to this matrix with the given
radius and center
position of the arcball and the specified X and Y rotation angles, and store the result in dest . |
Matrix4x3f |
assumeNothing()
Assume no properties of the matrix.
|
Matrix4x3f |
billboardCylindrical(Vector3fc objPos,
Vector3fc targetPos,
Vector3fc up)
Set this matrix to a cylindrical billboard transformation that rotates the local +Z axis of a given object with position
objPos towards
a target position at targetPos while constraining a cylindrical rotation around the given up vector. |
Matrix4x3f |
billboardSpherical(Vector3fc objPos,
Vector3fc targetPos)
Set this matrix to a spherical billboard transformation that rotates the local +Z axis of a given object with position
objPos towards
a target position at targetPos using a shortest arc rotation by not preserving any up vector of the object. |
Matrix4x3f |
billboardSpherical(Vector3fc objPos,
Vector3fc targetPos,
Vector3fc up)
Set this matrix to a spherical billboard transformation that rotates the local +Z axis of a given object with position
objPos towards
a target position at targetPos . |
float |
determinant()
Return the determinant of this matrix.
|
boolean |
equals(Object obj) |
Matrix4x3f |
fma(Matrix4x3fc other,
float otherFactor)
Component-wise add
this and other
by first multiplying each component of other by otherFactor and
adding that result to this . |
Matrix4x3f |
fma(Matrix4x3fc other,
float otherFactor,
Matrix4x3f dest)
Component-wise add
this and other
by first multiplying each component of other by otherFactor ,
adding that to this and storing the final result in dest . |
ByteBuffer |
get(ByteBuffer buffer)
Store this matrix in column-major order into the supplied
ByteBuffer at the current
buffer position . |
float[] |
get(float[] arr)
Store this matrix into the supplied float array in column-major order.
|
float[] |
get(float[] arr,
int offset)
Store this matrix into the supplied float array in column-major order at the given offset.
|
FloatBuffer |
get(FloatBuffer buffer)
Store this matrix in column-major order into the supplied
FloatBuffer at the current
buffer position . |
ByteBuffer |
get(int index,
ByteBuffer buffer)
Store this matrix in column-major order into the supplied
ByteBuffer starting at the specified
absolute buffer position/index. |
FloatBuffer |
get(int index,
FloatBuffer buffer)
Store this matrix in column-major order into the supplied
FloatBuffer starting at the specified
absolute buffer position/index. |
Matrix4d |
get(Matrix4d dest)
Get the current values of
this matrix and store them into the upper 4x3 submatrix of dest . |
Matrix4f |
get(Matrix4f dest)
Get the current values of
this matrix and store them into the upper 4x3 submatrix of dest . |
Matrix4x3d |
get(Matrix4x3d dest)
Get the current values of
this matrix and store them into
dest . |
Matrix4x3f |
get(Matrix4x3f dest)
Get the current values of
this matrix and store them into
dest . |
ByteBuffer |
get4x4(ByteBuffer buffer)
Store a 4x4 matrix in column-major order into the supplied
ByteBuffer at the current
buffer position , where the upper 4x3 submatrix is this and the last row is (0, 0, 0, 1). |
FloatBuffer |
get4x4(FloatBuffer buffer)
Store a 4x4 matrix in column-major order into the supplied
FloatBuffer at the current
buffer position , where the upper 4x3 submatrix is this and the last row is (0, 0, 0, 1). |
ByteBuffer |
get4x4(int index,
ByteBuffer buffer)
Store a 4x4 matrix in column-major order into the supplied
ByteBuffer starting at the specified
absolute buffer position/index, where the upper 4x3 submatrix is this and the last row is (0, 0, 0, 1). |
FloatBuffer |
get4x4(int index,
FloatBuffer buffer)
Store a 4x4 matrix in column-major order into the supplied
FloatBuffer starting at the specified
absolute buffer position/index, where the upper 4x3 submatrix is this and the last row is (0, 0, 0, 1). |
Vector3f |
getColumn(int column,
Vector3f dest)
Get the column at the given
column index, starting with 0 . |
Vector3f |
getEulerAnglesZYX(Vector3f dest)
Extract the Euler angles from the rotation represented by the upper left 3x3 submatrix of
this
and store the extracted Euler angles in dest . |
Quaterniond |
getNormalizedRotation(Quaterniond dest)
Get the current values of
this matrix and store the represented rotation
into the given Quaterniond . |
Quaternionf |
getNormalizedRotation(Quaternionf dest)
Get the current values of
this matrix and store the represented rotation
into the given Quaternionf . |
AxisAngle4d |
getRotation(AxisAngle4d dest)
Get the rotational component of
this matrix and store the represented rotation
into the given AxisAngle4d . |
AxisAngle4f |
getRotation(AxisAngle4f dest)
Get the rotational component of
this matrix and store the represented rotation
into the given AxisAngle4f . |
Vector4f |
getRow(int row,
Vector4f dest)
Get the row at the given
row index, starting with 0 . |
Vector3f |
getScale(Vector3f dest)
Get the scaling factors of
this matrix for the three base axes. |
Vector3f |
getTranslation(Vector3f dest)
Get only the translation components (m30, m31, m32) of this matrix and store them in the given vector
xyz . |
ByteBuffer |
getTransposed(ByteBuffer buffer)
Store this matrix in row-major order into the supplied
ByteBuffer at the current
buffer position . |
float[] |
getTransposed(float[] arr)
Store this matrix into the supplied float array in row-major order.
|
float[] |
getTransposed(float[] arr,
int offset)
Store this matrix into the supplied float array in row-major order at the given offset.
|
FloatBuffer |
getTransposed(FloatBuffer buffer)
Store this matrix in row-major order into the supplied
FloatBuffer at the current
buffer position . |
ByteBuffer |
getTransposed(int index,
ByteBuffer buffer)
Store this matrix in row-major order into the supplied
ByteBuffer starting at the specified
absolute buffer position/index. |
FloatBuffer |
getTransposed(int index,
FloatBuffer buffer)
Store this matrix in row-major order into the supplied
FloatBuffer starting at the specified
absolute buffer position/index. |
Quaterniond |
getUnnormalizedRotation(Quaterniond dest)
Get the current values of
this matrix and store the represented rotation
into the given Quaterniond . |
Quaternionf |
getUnnormalizedRotation(Quaternionf dest)
Get the current values of
this matrix and store the represented rotation
into the given Quaternionf . |
int |
hashCode() |
Matrix4x3f |
identity()
Reset this matrix to the identity.
|
Matrix4x3f |
invert()
Invert this matrix.
|
Matrix4x3f |
invert(Matrix4x3f dest)
Invert this matrix and write the result into
dest . |
Matrix4x3f |
invertOrtho()
Invert
this orthographic projection matrix. |
Matrix4x3f |
invertOrtho(Matrix4x3f dest)
Invert
this orthographic projection matrix and store the result into the given dest . |
Matrix4x3f |
invertUnitScale()
Invert this matrix by assuming that it has unit scaling (i.e.
|
Matrix4x3f |
invertUnitScale(Matrix4x3f dest)
Invert this matrix by assuming that it has unit scaling (i.e.
|
Matrix4x3f |
lerp(Matrix4x3fc other,
float t)
Linearly interpolate
this and other using the given interpolation factor t
and store the result in this . |
Matrix4x3f |
lerp(Matrix4x3fc other,
float t,
Matrix4x3f dest)
Linearly interpolate
this and other using the given interpolation factor t
and store the result in dest . |
Matrix4x3f |
lookAlong(float dirX,
float dirY,
float dirZ,
float upX,
float upY,
float upZ)
Apply a rotation transformation to this matrix to make
-z point along dir . |
Matrix4x3f |
lookAlong(float dirX,
float dirY,
float dirZ,
float upX,
float upY,
float upZ,
Matrix4x3f dest)
Apply a rotation transformation to this matrix to make
-z point along dir
and store the result in dest . |
Matrix4x3f |
lookAlong(Vector3fc dir,
Vector3fc up)
Apply a rotation transformation to this matrix to make
-z point along dir . |
Matrix4x3f |
lookAlong(Vector3fc dir,
Vector3fc up,
Matrix4x3f dest)
Apply a rotation transformation to this matrix to make
-z point along dir
and store the result in dest . |
Matrix4x3f |
lookAt(float eyeX,
float eyeY,
float eyeZ,
float centerX,
float centerY,
float centerZ,
float upX,
float upY,
float upZ)
Apply a "lookat" transformation to this matrix for a right-handed coordinate system,
that aligns
-z with center - eye . |
Matrix4x3f |
lookAt(float eyeX,
float eyeY,
float eyeZ,
float centerX,
float centerY,
float centerZ,
float upX,
float upY,
float upZ,
Matrix4x3f dest)
Apply a "lookat" transformation to this matrix for a right-handed coordinate system,
that aligns
-z with center - eye and store the result in dest . |
Matrix4x3f |
lookAt(Vector3fc eye,
Vector3fc center,
Vector3fc up)
Apply a "lookat" transformation to this matrix for a right-handed coordinate system,
that aligns
-z with center - eye . |
Matrix4x3f |
lookAt(Vector3fc eye,
Vector3fc center,
Vector3fc up,
Matrix4x3f dest)
Apply a "lookat" transformation to this matrix for a right-handed coordinate system,
that aligns
-z with center - eye and store the result in dest . |
Matrix4x3f |
lookAtLH(float eyeX,
float eyeY,
float eyeZ,
float centerX,
float centerY,
float centerZ,
float upX,
float upY,
float upZ)
Apply a "lookat" transformation to this matrix for a left-handed coordinate system,
that aligns
+z with center - eye . |
Matrix4x3f |
lookAtLH(float eyeX,
float eyeY,
float eyeZ,
float centerX,
float centerY,
float centerZ,
float upX,
float upY,
float upZ,
Matrix4x3f dest)
Apply a "lookat" transformation to this matrix for a left-handed coordinate system,
that aligns
+z with center - eye and store the result in dest . |
Matrix4x3f |
lookAtLH(Vector3fc eye,
Vector3fc center,
Vector3fc up)
Apply a "lookat" transformation to this matrix for a left-handed coordinate system,
that aligns
+z with center - eye . |
Matrix4x3f |
lookAtLH(Vector3fc eye,
Vector3fc center,
Vector3fc up,
Matrix4x3f dest)
Apply a "lookat" transformation to this matrix for a left-handed coordinate system,
that aligns
+z with center - eye and store the result in dest . |
float |
m00()
Return the value of the matrix element at column 0 and row 0.
|
Matrix4x3f |
m00(float m00)
Set the value of the matrix element at column 0 and row 0
|
float |
m01()
Return the value of the matrix element at column 0 and row 1.
|
Matrix4x3f |
m01(float m01)
Set the value of the matrix element at column 0 and row 1
|
float |
m02()
Return the value of the matrix element at column 0 and row 2.
|
Matrix4x3f |
m02(float m02)
Set the value of the matrix element at column 0 and row 2
|
float |
m10()
Return the value of the matrix element at column 1 and row 0.
|
Matrix4x3f |
m10(float m10)
Set the value of the matrix element at column 1 and row 0
|
float |
m11()
Return the value of the matrix element at column 1 and row 1.
|
Matrix4x3f |
m11(float m11)
Set the value of the matrix element at column 1 and row 1
|
float |
m12()
Return the value of the matrix element at column 1 and row 2.
|
Matrix4x3f |
m12(float m12)
Set the value of the matrix element at column 1 and row 2
|
float |
m20()
Return the value of the matrix element at column 2 and row 0.
|
Matrix4x3f |
m20(float m20)
Set the value of the matrix element at column 2 and row 0
|
float |
m21()
Return the value of the matrix element at column 2 and row 1.
|
Matrix4x3f |
m21(float m21)
Set the value of the matrix element at column 2 and row 1
|
float |
m22()
Return the value of the matrix element at column 2 and row 2.
|
Matrix4x3f |
m22(float m22)
Set the value of the matrix element at column 2 and row 2
|
float |
m30()
Return the value of the matrix element at column 3 and row 0.
|
Matrix4x3f |
m30(float m30)
Set the value of the matrix element at column 3 and row 0
|
float |
m31()
Return the value of the matrix element at column 3 and row 1.
|
Matrix4x3f |
m31(float m31)
Set the value of the matrix element at column 3 and row 1
|
float |
m32()
Return the value of the matrix element at column 3 and row 2.
|
Matrix4x3f |
m32(float m32)
Set the value of the matrix element at column 3 and row 2
|
Matrix4x3f |
mul(Matrix4x3fc right)
Multiply this matrix by the supplied
right matrix and store the result in this . |
Matrix4x3f |
mul(Matrix4x3fc right,
Matrix4x3f dest)
Multiply this matrix by the supplied
right matrix and store the result in dest . |
Matrix4x3f |
mulComponentWise(Matrix4x3fc other)
Component-wise multiply
this by other . |
Matrix4x3f |
mulComponentWise(Matrix4x3fc other,
Matrix4x3f dest)
Component-wise multiply
this by other and store the result in dest . |
Matrix4x3f |
mulOrtho(Matrix4x3fc view)
Multiply
this orthographic projection matrix by the supplied view matrix. |
Matrix4x3f |
mulOrtho(Matrix4x3fc view,
Matrix4x3f dest)
Multiply
this orthographic projection matrix by the supplied view matrix
and store the result in dest . |
Matrix4x3f |
mulTranslation(Matrix4x3fc right,
Matrix4x3f dest)
Multiply this matrix, which is assumed to only contain a translation, by the supplied
right matrix and store the result in dest . |
Matrix4x3f |
normal()
Compute a normal matrix from the left 3x3 submatrix of
this
and store it into the left 3x3 submatrix of this . |
Matrix3f |
normal(Matrix3f dest)
Compute a normal matrix from the left 3x3 submatrix of
this and store it into dest . |
Matrix4x3f |
normal(Matrix4x3f dest)
Compute a normal matrix from the left 3x3 submatrix of
this
and store it into the left 3x3 submatrix of dest . |
Matrix4x3f |
normalize3x3()
Normalize the left 3x3 submatrix of this matrix.
|
Matrix3f |
normalize3x3(Matrix3f dest)
Normalize the left 3x3 submatrix of this matrix and store the result in
dest . |
Matrix4x3f |
normalize3x3(Matrix4x3f dest)
Normalize the left 3x3 submatrix of this matrix and store the result in
dest . |
Vector3f |
normalizedPositiveX(Vector3f dir)
Obtain the direction of +X before the transformation represented by
this orthogonal matrix is applied. |
Vector3f |
normalizedPositiveY(Vector3f dir)
Obtain the direction of +Y before the transformation represented by
this orthogonal matrix is applied. |
Vector3f |
normalizedPositiveZ(Vector3f dir)
Obtain the direction of +Z before the transformation represented by
this orthogonal matrix is applied. |
Vector3f |
origin(Vector3f origin)
Obtain the position that gets transformed to the origin by
this matrix. |
Matrix4x3f |
ortho(float left,
float right,
float bottom,
float top,
float zNear,
float zFar)
Apply an orthographic projection transformation for a right-handed coordinate system
using OpenGL's NDC z range of [-1..+1] to this matrix.
|
Matrix4x3f |
ortho(float left,
float right,
float bottom,
float top,
float zNear,
float zFar,
boolean zZeroToOne)
Apply an orthographic projection transformation for a right-handed coordinate system using the given NDC z range to this matrix.
|
Matrix4x3f |
ortho(float left,
float right,
float bottom,
float top,
float zNear,
float zFar,
boolean zZeroToOne,
Matrix4x3f dest)
Apply an orthographic projection transformation for a right-handed coordinate system
using the given NDC z range to this matrix and store the result in
dest . |
Matrix4x3f |
ortho(float left,
float right,
float bottom,
float top,
float zNear,
float zFar,
Matrix4x3f dest)
Apply an orthographic projection transformation for a right-handed coordinate system
using OpenGL's NDC z range of [-1..+1] to this matrix and store the result in
dest . |
Matrix4x3f |
ortho2D(float left,
float right,
float bottom,
float top)
Apply an orthographic projection transformation for a right-handed coordinate system to this matrix.
|
Matrix4x3f |
ortho2D(float left,
float right,
float bottom,
float top,
Matrix4x3f dest)
Apply an orthographic projection transformation for a right-handed coordinate system to this matrix
and store the result in
dest . |
Matrix4x3f |
ortho2DLH(float left,
float right,
float bottom,
float top)
Apply an orthographic projection transformation for a left-handed coordinate system to this matrix.
|
Matrix4x3f |
ortho2DLH(float left,
float right,
float bottom,
float top,
Matrix4x3f dest)
Apply an orthographic projection transformation for a left-handed coordinate system to this matrix and store the result in
dest . |
Matrix4x3f |
orthoLH(float left,
float right,
float bottom,
float top,
float zNear,
float zFar)
Apply an orthographic projection transformation for a left-handed coordiante system
using OpenGL's NDC z range of [-1..+1] to this matrix.
|
Matrix4x3f |
orthoLH(float left,
float right,
float bottom,
float top,
float zNear,
float zFar,
boolean zZeroToOne)
Apply an orthographic projection transformation for a left-handed coordiante system
using the given NDC z range to this matrix.
|
Matrix4x3f |
orthoLH(float left,
float right,
float bottom,
float top,
float zNear,
float zFar,
boolean zZeroToOne,
Matrix4x3f dest)
Apply an orthographic projection transformation for a left-handed coordiante system
using the given NDC z range to this matrix and store the result in
dest . |
Matrix4x3f |
orthoLH(float left,
float right,
float bottom,
float top,
float zNear,
float zFar,
Matrix4x3f dest)
Apply an orthographic projection transformation for a left-handed coordiante system
using OpenGL's NDC z range of [-1..+1] to this matrix and store the result in
dest . |
Matrix4x3f |
orthoSymmetric(float width,
float height,
float zNear,
float zFar)
Apply a symmetric orthographic projection transformation for a right-handed coordinate system
using OpenGL's NDC z range of [-1..+1] to this matrix.
|
Matrix4x3f |
orthoSymmetric(float width,
float height,
float zNear,
float zFar,
boolean zZeroToOne)
Apply a symmetric orthographic projection transformation for a right-handed coordinate system
using the given NDC z range to this matrix.
|
Matrix4x3f |
orthoSymmetric(float width,
float height,
float zNear,
float zFar,
boolean zZeroToOne,
Matrix4x3f dest)
Apply a symmetric orthographic projection transformation for a right-handed coordinate system
using the given NDC z range to this matrix and store the result in
dest . |
Matrix4x3f |
orthoSymmetric(float width,
float height,
float zNear,
float zFar,
Matrix4x3f dest)
Apply a symmetric orthographic projection transformation for a right-handed coordinate system
using OpenGL's NDC z range of [-1..+1] to this matrix and store the result in
dest . |
Matrix4x3f |
orthoSymmetricLH(float width,
float height,
float zNear,
float zFar)
Apply a symmetric orthographic projection transformation for a left-handed coordinate system
using OpenGL's NDC z range of [-1..+1] to this matrix.
|
Matrix4x3f |
orthoSymmetricLH(float width,
float height,
float zNear,
float zFar,
boolean zZeroToOne)
Apply a symmetric orthographic projection transformation for a left-handed coordinate system
using the given NDC z range to this matrix.
|
Matrix4x3f |
orthoSymmetricLH(float width,
float height,
float zNear,
float zFar,
boolean zZeroToOne,
Matrix4x3f dest)
Apply a symmetric orthographic projection transformation for a left-handed coordinate system
using the given NDC z range to this matrix and store the result in
dest . |
Matrix4x3f |
orthoSymmetricLH(float width,
float height,
float zNear,
float zFar,
Matrix4x3f dest)
Apply a symmetric orthographic projection transformation for a left-handed coordinate system
using OpenGL's NDC z range of [-1..+1] to this matrix and store the result in
dest . |
Matrix4x3f |
pick(float x,
float y,
float width,
float height,
int[] viewport)
Apply a picking transformation to this matrix using the given window coordinates (x, y) as the pick center
and the given (width, height) as the size of the picking region in window coordinates.
|
Matrix4x3f |
pick(float x,
float y,
float width,
float height,
int[] viewport,
Matrix4x3f dest)
Apply a picking transformation to this matrix using the given window coordinates (x, y) as the pick center
and the given (width, height) as the size of the picking region in window coordinates, and store the result
in
dest . |
Vector3f |
positiveX(Vector3f dir)
Obtain the direction of +X before the transformation represented by
this matrix is applied. |
Vector3f |
positiveY(Vector3f dir)
Obtain the direction of +Y before the transformation represented by
this matrix is applied. |
Vector3f |
positiveZ(Vector3f dir)
Obtain the direction of +Z before the transformation represented by
this matrix is applied. |
byte |
properties() |
void |
readExternal(ObjectInput in) |
Matrix4x3f |
reflect(float a,
float b,
float c,
float d)
Apply a mirror/reflection transformation to this matrix that reflects about the given plane
specified via the equation x*a + y*b + z*c + d = 0.
|
Matrix4x3f |
reflect(float nx,
float ny,
float nz,
float px,
float py,
float pz)
Apply a mirror/reflection transformation to this matrix that reflects about the given plane
specified via the plane normal and a point on the plane.
|
Matrix4x3f |
reflect(float nx,
float ny,
float nz,
float px,
float py,
float pz,
Matrix4x3f dest)
Apply a mirror/reflection transformation to this matrix that reflects about the given plane
specified via the plane normal and a point on the plane, and store the result in
dest . |
Matrix4x3f |
reflect(float a,
float b,
float c,
float d,
Matrix4x3f dest)
Apply a mirror/reflection transformation to this matrix that reflects about the given plane
specified via the equation x*a + y*b + z*c + d = 0 and store the result in
dest . |
Matrix4x3f |
reflect(Quaternionfc orientation,
Vector3fc point)
Apply a mirror/reflection transformation to this matrix that reflects about a plane
specified via the plane orientation and a point on the plane.
|
Matrix4x3f |
reflect(Quaternionfc orientation,
Vector3fc point,
Matrix4x3f dest)
Apply a mirror/reflection transformation to this matrix that reflects about a plane
specified via the plane orientation and a point on the plane, and store the result in
dest . |
Matrix4x3f |
reflect(Vector3fc normal,
Vector3fc point)
Apply a mirror/reflection transformation to this matrix that reflects about the given plane
specified via the plane normal and a point on the plane.
|
Matrix4x3f |
reflect(Vector3fc normal,
Vector3fc point,
Matrix4x3f dest)
Apply a mirror/reflection transformation to this matrix that reflects about the given plane
specified via the plane normal and a point on the plane, and store the result in
dest . |
Matrix4x3f |
reflection(float a,
float b,
float c,
float d)
Set this matrix to a mirror/reflection transformation that reflects about the given plane
specified via the equation x*a + y*b + z*c + d = 0.
|
Matrix4x3f |
reflection(float nx,
float ny,
float nz,
float px,
float py,
float pz)
Set this matrix to a mirror/reflection transformation that reflects about the given plane
specified via the plane normal and a point on the plane.
|
Matrix4x3f |
reflection(Quaternionfc orientation,
Vector3fc point)
Set this matrix to a mirror/reflection transformation that reflects about a plane
specified via the plane orientation and a point on the plane.
|
Matrix4x3f |
reflection(Vector3fc normal,
Vector3fc point)
Set this matrix to a mirror/reflection transformation that reflects about the given plane
specified via the plane normal and a point on the plane.
|
Matrix4x3f |
rotate(AxisAngle4f axisAngle)
Apply a rotation transformation, rotating about the given
AxisAngle4f , to this matrix. |
Matrix4x3f |
rotate(AxisAngle4f axisAngle,
Matrix4x3f dest)
Apply a rotation transformation, rotating about the given
AxisAngle4f and store the result in dest . |
Matrix4x3f |
rotate(float ang,
float x,
float y,
float z)
Apply rotation to this matrix by rotating the given amount of radians
about the specified (x, y, z) axis.
|
Matrix4x3f |
rotate(float ang,
float x,
float y,
float z,
Matrix4x3f dest)
Apply rotation to this matrix by rotating the given amount of radians
about the specified (x, y, z) axis and store the result in
dest . |
Matrix4x3f |
rotate(float angle,
Vector3fc axis)
Apply a rotation transformation, rotating the given radians about the specified axis, to this matrix.
|
Matrix4x3f |
rotate(float angle,
Vector3fc axis,
Matrix4x3f dest)
Apply a rotation transformation, rotating the given radians about the specified axis and store the result in
dest . |
Matrix4x3f |
rotate(Quaternionfc quat)
Apply the rotation transformation of the given
Quaternionfc to this matrix. |
Matrix4x3f |
rotate(Quaternionfc quat,
Matrix4x3f dest)
Apply the rotation transformation of the given
Quaternionfc to this matrix and store
the result in dest . |
Matrix4x3f |
rotateLocal(float ang,
float x,
float y,
float z)
Pre-multiply a rotation to this matrix by rotating the given amount of radians
about the specified (x, y, z) axis.
|
Matrix4x3f |
rotateLocal(float ang,
float x,
float y,
float z,
Matrix4x3f dest)
Pre-multiply a rotation to this matrix by rotating the given amount of radians
about the specified (x, y, z) axis and store the result in
dest . |
Matrix4x3f |
rotateLocal(Quaternionfc quat)
Pre-multiply the rotation transformation of the given
Quaternionfc to this matrix. |
Matrix4x3f |
rotateLocal(Quaternionfc quat,
Matrix4x3f dest)
Pre-multiply the rotation transformation of the given
Quaternionfc to this matrix and store
the result in dest . |
Matrix4x3f |
rotateTowards(float dirX,
float dirY,
float dirZ,
float upX,
float upY,
float upZ)
Apply a model transformation to this matrix for a right-handed coordinate system,
that aligns the local
+Z axis with (dirX, dirY, dirZ) . |
Matrix4x3f |
rotateTowards(float dirX,
float dirY,
float dirZ,
float upX,
float upY,
float upZ,
Matrix4x3f dest)
Apply a model transformation to this matrix for a right-handed coordinate system,
that aligns the local
+Z axis with (dirX, dirY, dirZ)
and store the result in dest . |
Matrix4x3f |
rotateTowards(Vector3fc dir,
Vector3fc up)
Apply a model transformation to this matrix for a right-handed coordinate system,
that aligns the local
+Z axis with dir . |
Matrix4x3f |
rotateTowards(Vector3fc dir,
Vector3fc up,
Matrix4x3f dest)
Apply a model transformation to this matrix for a right-handed coordinate system,
that aligns the local
+Z axis with dir
and store the result in dest . |
Matrix4x3f |
rotateTranslation(float ang,
float x,
float y,
float z,
Matrix4x3f dest)
Apply rotation to this matrix, which is assumed to only contain a translation, by rotating the given amount of radians
about the specified (x, y, z) axis and store the result in
dest . |
Matrix4x3f |
rotateTranslation(Quaternionfc quat,
Matrix4x3f dest)
Apply the rotation transformation of the given
Quaternionfc to this matrix, which is assumed to only contain a translation, and store
the result in dest . |
Matrix4x3f |
rotateX(float ang)
Apply rotation about the X axis to this matrix by rotating the given amount of radians.
|
Matrix4x3f |
rotateX(float ang,
Matrix4x3f dest)
Apply rotation about the X axis to this matrix by rotating the given amount of radians
and store the result in
dest . |
Matrix4x3f |
rotateXYZ(float angleX,
float angleY,
float angleZ)
Apply rotation of
angleX radians about the X axis, followed by a rotation of angleY radians about the Y axis and
followed by a rotation of angleZ radians about the Z axis. |
Matrix4x3f |
rotateXYZ(float angleX,
float angleY,
float angleZ,
Matrix4x3f dest)
Apply rotation of
angleX radians about the X axis, followed by a rotation of angleY radians about the Y axis and
followed by a rotation of angleZ radians about the Z axis and store the result in dest . |
Matrix4x3f |
rotateXYZ(Vector3f angles)
Apply rotation of
angles.x radians about the X axis, followed by a rotation of angles.y radians about the Y axis and
followed by a rotation of angles.z radians about the Z axis. |
Matrix4x3f |
rotateY(float ang)
Apply rotation about the Y axis to this matrix by rotating the given amount of radians.
|
Matrix4x3f |
rotateY(float ang,
Matrix4x3f dest)
Apply rotation about the Y axis to this matrix by rotating the given amount of radians
and store the result in
dest . |
Matrix4x3f |
rotateYXZ(float angleY,
float angleX,
float angleZ)
Apply rotation of
angleY radians about the Y axis, followed by a rotation of angleX radians about the X axis and
followed by a rotation of angleZ radians about the Z axis. |
Matrix4x3f |
rotateYXZ(float angleY,
float angleX,
float angleZ,
Matrix4x3f dest)
Apply rotation of
angleY radians about the Y axis, followed by a rotation of angleX radians about the X axis and
followed by a rotation of angleZ radians about the Z axis and store the result in dest . |
Matrix4x3f |
rotateYXZ(Vector3f angles)
Apply rotation of
angles.y radians about the Y axis, followed by a rotation of angles.x radians about the X axis and
followed by a rotation of angles.z radians about the Z axis. |
Matrix4x3f |
rotateZ(float ang)
Apply rotation about the Z axis to this matrix by rotating the given amount of radians.
|
Matrix4x3f |
rotateZ(float ang,
Matrix4x3f dest)
Apply rotation about the Z axis to this matrix by rotating the given amount of radians
and store the result in
dest . |
Matrix4x3f |
rotateZYX(float angleZ,
float angleY,
float angleX)
Apply rotation of
angleZ radians about the Z axis, followed by a rotation of angleY radians about the Y axis and
followed by a rotation of angleX radians about the X axis. |
Matrix4x3f |
rotateZYX(float angleZ,
float angleY,
float angleX,
Matrix4x3f dest)
Apply rotation of
angleZ radians about the Z axis, followed by a rotation of angleY radians about the Y axis and
followed by a rotation of angleX radians about the X axis and store the result in dest . |
Matrix4x3f |
rotateZYX(Vector3f angles)
Apply rotation of
angles.z radians about the Z axis, followed by a rotation of angles.y radians about the Y axis and
followed by a rotation of angles.x radians about the X axis. |
Matrix4x3f |
rotation(AxisAngle4f axisAngle)
Set this matrix to a rotation transformation using the given
AxisAngle4f . |
Matrix4x3f |
rotation(float angle,
float x,
float y,
float z)
Set this matrix to a rotation matrix which rotates the given radians about a given axis.
|
Matrix4x3f |
rotation(float angle,
Vector3fc axis)
Set this matrix to a rotation matrix which rotates the given radians about a given axis.
|
Matrix4x3f |
rotation(Quaternionfc quat)
Set this matrix to the rotation transformation of the given
Quaternionfc . |
Matrix4x3f |
rotationTowards(float dirX,
float dirY,
float dirZ,
float upX,
float upY,
float upZ)
Set this matrix to a model transformation for a right-handed coordinate system,
that aligns the local
-z axis with (dirX, dirY, dirZ) . |
Matrix4x3f |
rotationTowards(Vector3fc dir,
Vector3fc up)
Set this matrix to a model transformation for a right-handed coordinate system,
that aligns the local
-z axis with dir . |
Matrix4x3f |
rotationX(float ang)
Set this matrix to a rotation transformation about the X axis.
|
Matrix4x3f |
rotationXYZ(float angleX,
float angleY,
float angleZ)
Set this matrix to a rotation of
angleX radians about the X axis, followed by a rotation
of angleY radians about the Y axis and followed by a rotation of angleZ radians about the Z axis. |
Matrix4x3f |
rotationY(float ang)
Set this matrix to a rotation transformation about the Y axis.
|
Matrix4x3f |
rotationYXZ(float angleY,
float angleX,
float angleZ)
Set this matrix to a rotation of
angleY radians about the Y axis, followed by a rotation
of angleX radians about the X axis and followed by a rotation of angleZ radians about the Z axis. |
Matrix4x3f |
rotationZ(float ang)
Set this matrix to a rotation transformation about the Z axis.
|
Matrix4x3f |
rotationZYX(float angleZ,
float angleY,
float angleX)
Set this matrix to a rotation of
angleZ radians about the Z axis, followed by a rotation
of angleY radians about the Y axis and followed by a rotation of angleX radians about the X axis. |
Matrix4x3f |
scale(float xyz)
Apply scaling to this matrix by uniformly scaling all base axes by the given
xyz factor. |
Matrix4x3f |
scale(float x,
float y,
float z)
Apply scaling to this matrix by scaling the base axes by the given x,
y and z factors.
|
Matrix4x3f |
scale(float x,
float y,
float z,
Matrix4x3f dest)
Apply scaling to
this matrix by scaling the base axes by the given x,
y and z factors and store the result in dest . |
Matrix4x3f |
scale(float xyz,
Matrix4x3f dest)
Apply scaling to this matrix by uniformly scaling all base axes by the given
xyz factor
and store the result in dest . |
Matrix4x3f |
scale(Vector3fc xyz)
Apply scaling to this matrix by scaling the base axes by the given xyz.x,
xyz.y and xyz.z factors, respectively.
|
Matrix4x3f |
scale(Vector3fc xyz,
Matrix4x3f dest)
Apply scaling to
this matrix by scaling the base axes by the given xyz.x,
xyz.y and xyz.z factors, respectively and store the result in dest . |
Matrix4x3f |
scaleLocal(float x,
float y,
float z)
Pre-multiply scaling to this matrix by scaling the base axes by the given x,
y and z factors.
|
Matrix4x3f |
scaleLocal(float x,
float y,
float z,
Matrix4x3f dest)
Pre-multiply scaling to
this matrix by scaling the base axes by the given x,
y and z factors and store the result in dest . |
Matrix4x3f |
scaling(float factor)
Set this matrix to be a simple scale matrix, which scales all axes uniformly by the given factor.
|
Matrix4x3f |
scaling(float x,
float y,
float z)
Set this matrix to be a simple scale matrix.
|
Matrix4x3f |
scaling(Vector3fc xyz)
Set this matrix to be a simple scale matrix which scales the base axes by xyz.x, xyz.y and xyz.z respectively.
|
Matrix4x3f |
set(AxisAngle4d axisAngle)
Set this matrix to be equivalent to the rotation specified by the given
AxisAngle4d . |
Matrix4x3f |
set(AxisAngle4f axisAngle)
Set this matrix to be equivalent to the rotation specified by the given
AxisAngle4f . |
Matrix4x3f |
set(ByteBuffer buffer)
Set the values of this matrix by reading 12 float values from the given
ByteBuffer in column-major order,
starting at its current position. |
Matrix4x3f |
set(float[] m)
Set the values in the matrix using a float array that contains the matrix elements in column-major order.
|
Matrix4x3f |
set(float[] m,
int off)
Set the values in the matrix using a float array that contains the matrix elements in column-major order.
|
Matrix4x3f |
set(FloatBuffer buffer)
Set the values of this matrix by reading 12 float values from the given
FloatBuffer in column-major order,
starting at its current position. |
Matrix4x3f |
set(float m00,
float m01,
float m02,
float m10,
float m11,
float m12,
float m20,
float m21,
float m22,
float m30,
float m31,
float m32)
Set the values within this matrix to the supplied float values.
|
Matrix4x3f |
set(Matrix3fc mat)
Set the left 3x3 submatrix of this
Matrix4x3f to the given Matrix3fc
and the rest to identity. |
Matrix4x3f |
set(Matrix4fc m)
Store the values of the upper 4x3 submatrix of
m into this matrix. |
Matrix4x3f |
set(Matrix4x3fc m)
Store the values of the given matrix
m into this matrix. |
Matrix4x3f |
set(Quaterniond q)
Set this matrix to be equivalent to the rotation specified by the given
Quaterniond . |
Matrix4x3f |
set(Quaternionfc q)
Set this matrix to be equivalent to the rotation specified by the given
Quaternionfc . |
Matrix4x3f |
set(Vector3fc col0,
Vector3fc col1,
Vector3fc col2,
Vector3fc col3)
Set the four columns of this matrix to the supplied vectors, respectively.
|
Matrix4x3f |
set3x3(Matrix3fc mat)
Set the left 3x3 submatrix of this
Matrix4x3f to the given Matrix3fc and don't change the other elements. |
Matrix4x3f |
set3x3(Matrix4x3fc mat)
Set the left 3x3 submatrix of this
Matrix4x3f to that of the given Matrix4x3fc
and don't change the other elements. |
Matrix4x3f |
setColumn(int column,
Vector3fc src)
Set the column at the given
column index, starting with 0 . |
Matrix4x3f |
setLookAlong(float dirX,
float dirY,
float dirZ,
float upX,
float upY,
float upZ)
Set this matrix to a rotation transformation to make
-z
point along dir . |
Matrix4x3f |
setLookAlong(Vector3fc dir,
Vector3fc up)
Set this matrix to a rotation transformation to make
-z
point along dir . |
Matrix4x3f |
setLookAt(float eyeX,
float eyeY,
float eyeZ,
float centerX,
float centerY,
float centerZ,
float upX,
float upY,
float upZ)
Set this matrix to be a "lookat" transformation for a right-handed coordinate system,
that aligns
-z with center - eye . |
Matrix4x3f |
setLookAt(Vector3fc eye,
Vector3fc center,
Vector3fc up)
Set this matrix to be a "lookat" transformation for a right-handed coordinate system, that aligns
-z with center - eye . |
Matrix4x3f |
setLookAtLH(float eyeX,
float eyeY,
float eyeZ,
float centerX,
float centerY,
float centerZ,
float upX,
float upY,
float upZ)
Set this matrix to be a "lookat" transformation for a left-handed coordinate system,
that aligns
+z with center - eye . |
Matrix4x3f |
setLookAtLH(Vector3fc eye,
Vector3fc center,
Vector3fc up)
Set this matrix to be a "lookat" transformation for a left-handed coordinate system, that aligns
+z with center - eye . |
Matrix4x3f |
setOrtho(float left,
float right,
float bottom,
float top,
float zNear,
float zFar)
Set this matrix to be an orthographic projection transformation for a right-handed coordinate system
using OpenGL's NDC z range of [-1..+1].
|
Matrix4x3f |
setOrtho(float left,
float right,
float bottom,
float top,
float zNear,
float zFar,
boolean zZeroToOne)
Set this matrix to be an orthographic projection transformation for a right-handed coordinate system
using the given NDC z range.
|
Matrix4x3f |
setOrtho2D(float left,
float right,
float bottom,
float top)
Set this matrix to be an orthographic projection transformation for a right-handed coordinate system.
|
Matrix4x3f |
setOrtho2DLH(float left,
float right,
float bottom,
float top)
Set this matrix to be an orthographic projection transformation for a left-handed coordinate system.
|
Matrix4x3f |
setOrthoLH(float left,
float right,
float bottom,
float top,
float zNear,
float zFar)
Set this matrix to be an orthographic projection transformation for a left-handed coordinate system
using OpenGL's NDC z range of [-1..+1].
|
Matrix4x3f |
setOrthoLH(float left,
float right,
float bottom,
float top,
float zNear,
float zFar,
boolean zZeroToOne)
Set this matrix to be an orthographic projection transformation for a left-handed coordinate system
using the given NDC z range.
|
Matrix4x3f |
setOrthoSymmetric(float width,
float height,
float zNear,
float zFar)
Set this matrix to be a symmetric orthographic projection transformation for a right-handed coordinate system
using OpenGL's NDC z range of [-1..+1].
|
Matrix4x3f |
setOrthoSymmetric(float width,
float height,
float zNear,
float zFar,
boolean zZeroToOne)
Set this matrix to be a symmetric orthographic projection transformation for a right-handed coordinate system using the given NDC z range.
|
Matrix4x3f |
setOrthoSymmetricLH(float width,
float height,
float zNear,
float zFar)
Set this matrix to be a symmetric orthographic projection transformation for a left-handed coordinate system
using OpenGL's NDC z range of [-1..+1].
|
Matrix4x3f |
setOrthoSymmetricLH(float width,
float height,
float zNear,
float zFar,
boolean zZeroToOne)
Set this matrix to be a symmetric orthographic projection transformation for a left-handed coordinate system using the given NDC z range.
|
Matrix4x3f |
setRotationXYZ(float angleX,
float angleY,
float angleZ)
Set only the left 3x3 submatrix of this matrix to a rotation of
angleX radians about the X axis, followed by a rotation
of angleY radians about the Y axis and followed by a rotation of angleZ radians about the Z axis. |
Matrix4x3f |
setRotationYXZ(float angleY,
float angleX,
float angleZ)
Set only the left 3x3 submatrix of this matrix to a rotation of
angleY radians about the Y axis, followed by a rotation
of angleX radians about the X axis and followed by a rotation of angleZ radians about the Z axis. |
Matrix4x3f |
setRotationZYX(float angleZ,
float angleY,
float angleX)
Set only the left 3x3 submatrix of this matrix to a rotation of
angleZ radians about the Z axis, followed by a rotation
of angleY radians about the Y axis and followed by a rotation of angleX radians about the X axis. |
Matrix4x3f |
setRow(int row,
Vector4fc src)
Set the row at the given
row index, starting with 0 . |
Matrix4x3f |
setTranslation(float x,
float y,
float z)
Set only the translation components (m30, m31, m32) of this matrix to the given values (x, y, z).
|
Matrix4x3f |
setTranslation(Vector3fc xyz)
Set only the translation components (m30, m31, m32) of this matrix to the values (xyz.x, xyz.y, xyz.z).
|
Matrix4x3f |
shadow(float lightX,
float lightY,
float lightZ,
float lightW,
float a,
float b,
float c,
float d)
Apply a projection transformation to this matrix that projects onto the plane specified via the general plane equation
x*a + y*b + z*c + d = 0 as if casting a shadow from a given light position/direction (lightX, lightY, lightZ, lightW).
|
Matrix4x3f |
shadow(float lightX,
float lightY,
float lightZ,
float lightW,
float a,
float b,
float c,
float d,
Matrix4x3f dest)
Apply a projection transformation to this matrix that projects onto the plane specified via the general plane equation
x*a + y*b + z*c + d = 0 as if casting a shadow from a given light position/direction (lightX, lightY, lightZ, lightW)
and store the result in
dest . |
Matrix4x3f |
shadow(float lightX,
float lightY,
float lightZ,
float lightW,
Matrix4x3f planeTransform)
Apply a projection transformation to this matrix that projects onto the plane with the general plane equation
y = 0 as if casting a shadow from a given light position/direction (lightX, lightY, lightZ, lightW).
|
Matrix4x3f |
shadow(float lightX,
float lightY,
float lightZ,
float lightW,
Matrix4x3fc planeTransform,
Matrix4x3f dest)
Apply a projection transformation to this matrix that projects onto the plane with the general plane equation
y = 0 as if casting a shadow from a given light position/direction (lightX, lightY, lightZ, lightW)
and store the result in
dest . |
Matrix4x3f |
shadow(Vector4fc light,
float a,
float b,
float c,
float d)
Apply a projection transformation to this matrix that projects onto the plane specified via the general plane equation
x*a + y*b + z*c + d = 0 as if casting a shadow from a given light position/direction
light . |
Matrix4x3f |
shadow(Vector4fc light,
float a,
float b,
float c,
float d,
Matrix4x3f dest)
Apply a projection transformation to this matrix that projects onto the plane specified via the general plane equation
x*a + y*b + z*c + d = 0 as if casting a shadow from a given light position/direction
light
and store the result in dest . |
Matrix4x3f |
shadow(Vector4fc light,
Matrix4x3fc planeTransform)
Apply a projection transformation to this matrix that projects onto the plane with the general plane equation
y = 0 as if casting a shadow from a given light position/direction
light . |
Matrix4x3f |
shadow(Vector4fc light,
Matrix4x3fc planeTransform,
Matrix4x3f dest)
Apply a projection transformation to this matrix that projects onto the plane with the general plane equation
y = 0 as if casting a shadow from a given light position/direction
light
and store the result in dest . |
Matrix4x3f |
sub(Matrix4x3fc subtrahend)
Component-wise subtract
subtrahend from this . |
Matrix4x3f |
sub(Matrix4x3fc subtrahend,
Matrix4x3f dest)
Component-wise subtract
subtrahend from this and store the result in dest . |
Matrix4x3f |
swap(Matrix4x3f other)
Exchange the values of
this matrix with the given other matrix. |
Matrix4x3fc |
toImmutable()
Create a new immutable view of this
Matrix4x3f . |
String |
toString()
Return a string representation of this matrix.
|
String |
toString(NumberFormat formatter)
Return a string representation of this matrix by formatting the matrix elements with the given
NumberFormat . |
Vector4f |
transform(Vector4f v)
Transform/multiply the given vector by this matrix and store the result in that vector.
|
Vector4f |
transform(Vector4fc v,
Vector4f dest)
Transform/multiply the given vector by this matrix and store the result in
dest . |
Matrix4x3f |
transformAab(float minX,
float minY,
float minZ,
float maxX,
float maxY,
float maxZ,
Vector3f outMin,
Vector3f outMax)
Transform the axis-aligned box given as the minimum corner (minX, minY, minZ) and maximum corner (maxX, maxY, maxZ)
by
this matrix and compute the axis-aligned box of the result whose minimum corner is stored in outMin
and maximum corner stored in outMax . |
Matrix4x3f |
transformAab(Vector3fc min,
Vector3fc max,
Vector3f outMin,
Vector3f outMax)
Transform the axis-aligned box given as the minimum corner
min and maximum corner max
by this matrix and compute the axis-aligned box of the result whose minimum corner is stored in outMin
and maximum corner stored in outMax . |
Vector3f |
transformDirection(Vector3f v)
Transform/multiply the given 3D-vector, as if it was a 4D-vector with w=0, by
this matrix and store the result in that vector.
|
Vector3f |
transformDirection(Vector3fc v,
Vector3f dest)
Transform/multiply the given 3D-vector, as if it was a 4D-vector with w=0, by
this matrix and store the result in
dest . |
Vector3f |
transformPosition(Vector3f v)
Transform/multiply the given 3D-vector, as if it was a 4D-vector with w=1, by
this matrix and store the result in that vector.
|
Vector3f |
transformPosition(Vector3fc v,
Vector3f dest)
Transform/multiply the given 3D-vector, as if it was a 4D-vector with w=1, by
this matrix and store the result in
dest . |
Matrix4x3f |
translate(float x,
float y,
float z)
Apply a translation to this matrix by translating by the given number of
units in x, y and z.
|
Matrix4x3f |
translate(float x,
float y,
float z,
Matrix4x3f dest)
Apply a translation to this matrix by translating by the given number of
units in x, y and z and store the result in
dest . |
Matrix4x3f |
translate(Vector3fc offset)
Apply a translation to this matrix by translating by the given number of
units in x, y and z.
|
Matrix4x3f |
translate(Vector3fc offset,
Matrix4x3f dest)
Apply a translation to this matrix by translating by the given number of
units in x, y and z and store the result in
dest . |
Matrix4x3f |
translateLocal(float x,
float y,
float z)
Pre-multiply a translation to this matrix by translating by the given number of
units in x, y and z.
|
Matrix4x3f |
translateLocal(float x,
float y,
float z,
Matrix4x3f dest)
Pre-multiply a translation to this matrix by translating by the given number of
units in x, y and z and store the result in
dest . |
Matrix4x3f |
translateLocal(Vector3fc offset)
Pre-multiply a translation to this matrix by translating by the given number of
units in x, y and z.
|
Matrix4x3f |
translateLocal(Vector3fc offset,
Matrix4x3f dest)
Pre-multiply a translation to this matrix by translating by the given number of
units in x, y and z and store the result in
dest . |
Matrix4x3f |
translation(float x,
float y,
float z)
Set this matrix to be a simple translation matrix.
|
Matrix4x3f |
translation(Vector3fc offset)
Set this matrix to be a simple translation matrix.
|
Matrix4x3f |
translationRotate(float tx,
float ty,
float tz,
Quaternionfc quat)
Set
this matrix to T * R, where T is a translation by the given (tx, ty, tz) and
R is a rotation transformation specified by the given quaternion. |
Matrix4x3f |
translationRotateScale(float tx,
float ty,
float tz,
float qx,
float qy,
float qz,
float qw,
float sx,
float sy,
float sz)
Set
this matrix to T * R * S, where T is a translation by the given (tx, ty, tz),
R is a rotation transformation specified by the quaternion (qx, qy, qz, qw), and S is a scaling transformation
which scales the three axes x, y and z by (sx, sy, sz). |
Matrix4x3f |
translationRotateScale(Vector3fc translation,
Quaternionfc quat,
Vector3fc scale)
Set
this matrix to T * R * S, where T is the given translation ,
R is a rotation transformation specified by the given quaternion, and S is a scaling transformation
which scales the axes by scale . |
Matrix4x3f |
translationRotateScaleMul(float tx,
float ty,
float tz,
float qx,
float qy,
float qz,
float qw,
float sx,
float sy,
float sz,
Matrix4x3f m)
Set
this matrix to T * R * S * M, where T is a translation by the given (tx, ty, tz),
R is a rotation transformation specified by the quaternion (qx, qy, qz, qw), S is a scaling transformation
which scales the three axes x, y and z by (sx, sy, sz). |
Matrix4x3f |
translationRotateScaleMul(Vector3fc translation,
Quaternionfc quat,
Vector3fc scale,
Matrix4x3f m)
Set
this matrix to T * R * S * M, where T is the given translation ,
R is a rotation transformation specified by the given quaternion, S is a scaling transformation
which scales the axes by scale . |
Matrix4x3f |
translationRotateTowards(float posX,
float posY,
float posZ,
float dirX,
float dirY,
float dirZ,
float upX,
float upY,
float upZ)
Set this matrix to a model transformation for a right-handed coordinate system,
that translates to the given
(posX, posY, posZ) and aligns the local -z
axis with (dirX, dirY, dirZ) . |
Matrix4x3f |
translationRotateTowards(Vector3fc pos,
Vector3fc dir,
Vector3fc up)
Set this matrix to a model transformation for a right-handed coordinate system,
that translates to the given
pos and aligns the local -z
axis with dir . |
Matrix4x3f |
transpose3x3()
Transpose only the left 3x3 submatrix of this matrix and set the rest of the matrix elements to identity.
|
Matrix3f |
transpose3x3(Matrix3f dest)
Transpose only the left 3x3 submatrix of this matrix and store the result in
dest . |
Matrix4x3f |
transpose3x3(Matrix4x3f dest)
Transpose only the left 3x3 submatrix of this matrix and store the result in
dest . |
void |
writeExternal(ObjectOutput out) |
Matrix4x3f |
zero()
Set all the values within this matrix to
0 . |
public Matrix4x3f()
Matrix4x3f
and set it to identity
.public Matrix4x3f(Matrix3fc mat)
Matrix4x3f
by setting its left 3x3 submatrix to the values of the given Matrix3fc
and the rest to identity.mat
- the Matrix3fc
public Matrix4x3f(Matrix4x3fc mat)
Matrix4x3f
and make it a copy of the given matrix.mat
- the Matrix4x3fc
to copy the values frompublic Matrix4x3f(float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22, float m30, float m31, float m32)
m00
- the value of m00m01
- the value of m01m02
- the value of m02m10
- the value of m10m11
- the value of m11m12
- the value of m12m20
- the value of m20m21
- the value of m21m22
- the value of m22m30
- the value of m30m31
- the value of m31m32
- the value of m32public Matrix4x3f(FloatBuffer buffer)
Matrix4x3f
by reading its 12 float components from the given FloatBuffer
at the buffer's current position.
That FloatBuffer is expected to hold the values in column-major order.
The buffer's position will not be changed by this method.
buffer
- the FloatBuffer
to read the matrix values frompublic Matrix4x3f(Vector3fc col0, Vector3fc col1, Vector3fc col2, Vector3fc col3)
Matrix4x3f
and initialize its four columns using the supplied vectors.col0
- the first columncol1
- the second columncol2
- the third columncol3
- the fourth columnpublic Matrix4x3f assumeNothing()
public byte properties()
properties
in interface Matrix4x3fc
public float m00()
Matrix4x3fc
m00
in interface Matrix4x3fc
public float m01()
Matrix4x3fc
m01
in interface Matrix4x3fc
public float m02()
Matrix4x3fc
m02
in interface Matrix4x3fc
public float m10()
Matrix4x3fc
m10
in interface Matrix4x3fc
public float m11()
Matrix4x3fc
m11
in interface Matrix4x3fc
public float m12()
Matrix4x3fc
m12
in interface Matrix4x3fc
public float m20()
Matrix4x3fc
m20
in interface Matrix4x3fc
public float m21()
Matrix4x3fc
m21
in interface Matrix4x3fc
public float m22()
Matrix4x3fc
m22
in interface Matrix4x3fc
public float m30()
Matrix4x3fc
m30
in interface Matrix4x3fc
public float m31()
Matrix4x3fc
m31
in interface Matrix4x3fc
public float m32()
Matrix4x3fc
m32
in interface Matrix4x3fc
public Matrix4x3f m00(float m00)
m00
- the new valuepublic Matrix4x3f m01(float m01)
m01
- the new valuepublic Matrix4x3f m02(float m02)
m02
- the new valuepublic Matrix4x3f m10(float m10)
m10
- the new valuepublic Matrix4x3f m11(float m11)
m11
- the new valuepublic Matrix4x3f m12(float m12)
m12
- the new valuepublic Matrix4x3f m20(float m20)
m20
- the new valuepublic Matrix4x3f m21(float m21)
m21
- the new valuepublic Matrix4x3f m22(float m22)
m22
- the new valuepublic Matrix4x3f m30(float m30)
m30
- the new valuepublic Matrix4x3f m31(float m31)
m31
- the new valuepublic Matrix4x3f m32(float m32)
m32
- the new valuepublic Matrix4x3f identity()
Please note that if a call to identity()
is immediately followed by a call to:
translate
,
rotate
,
scale
,
ortho
,
ortho2D
,
lookAt
,
lookAlong
,
or any of their overloads, then the call to identity()
can be omitted and the subsequent call replaced with:
translation
,
rotation
,
scaling
,
setOrtho
,
setOrtho2D
,
setLookAt
,
setLookAlong
,
or any of their overloads.
public Matrix4x3f set(Matrix4x3fc m)
m
into this
matrix.m
- the matrix to copy the values fromMatrix4x3f(Matrix4x3fc)
,
get(Matrix4x3f)
public Matrix4x3f set(Matrix4fc m)
m
into this
matrix.m
- the matrix to copy the values fromMatrix4fc.get4x3(Matrix4x3f)
public Matrix4f get(Matrix4f dest)
Matrix4x3fc
this
matrix and store them into the upper 4x3 submatrix of dest
.
The other elements of dest
will not be modified.
get
in interface Matrix4x3fc
dest
- the destination matrixMatrix4f.set4x3(Matrix4x3fc)
public Matrix4d get(Matrix4d dest)
Matrix4x3fc
this
matrix and store them into the upper 4x3 submatrix of dest
.
The other elements of dest
will not be modified.
get
in interface Matrix4x3fc
dest
- the destination matrixMatrix4d.set4x3(Matrix4x3fc)
public Matrix4x3f set(Matrix3fc mat)
Matrix4x3f
to the given Matrix3fc
and the rest to identity.mat
- the Matrix3fc
Matrix4x3f(Matrix3fc)
public Matrix4x3f set(AxisAngle4f axisAngle)
AxisAngle4f
.axisAngle
- the AxisAngle4f
public Matrix4x3f set(AxisAngle4d axisAngle)
AxisAngle4d
.axisAngle
- the AxisAngle4d
public Matrix4x3f set(Quaternionfc q)
Quaternionfc
.
This method is equivalent to calling: rotation(q)
q
- the Quaternionfc
rotation(Quaternionfc)
public Matrix4x3f set(Quaterniond q)
Quaterniond
.
This method is equivalent to calling: rotation(q)
q
- the Quaterniond
public Matrix4x3f set(Vector3fc col0, Vector3fc col1, Vector3fc col2, Vector3fc col3)
col0
- the first columncol1
- the second columncol2
- the third columncol3
- the fourth columnpublic Matrix4x3f set3x3(Matrix4x3fc mat)
Matrix4x3f
to that of the given Matrix4x3fc
and don't change the other elements.mat
- the Matrix4x3fc
public Matrix4x3f mul(Matrix4x3fc right)
right
matrix and store the result in this
.
If M
is this
matrix and R
the right
matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
transformation of the right matrix will be applied first!
right
- the right operand of the matrix multiplicationpublic Matrix4x3f mul(Matrix4x3fc right, Matrix4x3f dest)
Matrix4x3fc
right
matrix and store the result in dest
.
If M
is this
matrix and R
the right
matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
transformation of the right matrix will be applied first!
mul
in interface Matrix4x3fc
right
- the right operand of the matrix multiplicationdest
- the destination matrix, which will hold the resultpublic Matrix4x3f mulTranslation(Matrix4x3fc right, Matrix4x3f dest)
Matrix4x3fc
right
matrix and store the result in dest
.
This method assumes that this
matrix only contains a translation.
This method will not modify either the last row of this
or the last row of right
.
If M
is this
matrix and R
the right
matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
transformation of the right matrix will be applied first!
mulTranslation
in interface Matrix4x3fc
right
- the right operand of the matrix multiplicationdest
- the destination matrix, which will hold the resultpublic Matrix4x3f mulOrtho(Matrix4x3fc view)
this
orthographic projection matrix by the supplied view
matrix.
If M
is this
matrix and V
the view
matrix,
then the new matrix will be M * V
. So when transforming a
vector v
with the new matrix by using M * V * v
, the
transformation of the view
matrix will be applied first!
view
- the matrix which to multiply this
withpublic Matrix4x3f mulOrtho(Matrix4x3fc view, Matrix4x3f dest)
Matrix4x3fc
this
orthographic projection matrix by the supplied view
matrix
and store the result in dest
.
If M
is this
matrix and V
the view
matrix,
then the new matrix will be M * V
. So when transforming a
vector v
with the new matrix by using M * V * v
, the
transformation of the view
matrix will be applied first!
mulOrtho
in interface Matrix4x3fc
view
- the matrix which to multiply this
withdest
- the destination matrix, which will hold the resultpublic Matrix4x3f fma(Matrix4x3fc other, float otherFactor)
this
and other
by first multiplying each component of other
by otherFactor
and
adding that result to this
.
The matrix other
will not be changed.
other
- the other matrixotherFactor
- the factor to multiply each of the other matrix's componentspublic Matrix4x3f fma(Matrix4x3fc other, float otherFactor, Matrix4x3f dest)
Matrix4x3fc
this
and other
by first multiplying each component of other
by otherFactor
,
adding that to this
and storing the final result in dest
.
The other components of dest
will be set to the ones of this
.
The matrices this
and other
will not be changed.
fma
in interface Matrix4x3fc
other
- the other matrixotherFactor
- the factor to multiply each of the other matrix's componentsdest
- will hold the resultpublic Matrix4x3f add(Matrix4x3fc other)
this
and other
.other
- the other addendpublic Matrix4x3f add(Matrix4x3fc other, Matrix4x3f dest)
Matrix4x3fc
this
and other
and store the result in dest
.add
in interface Matrix4x3fc
other
- the other addenddest
- will hold the resultpublic Matrix4x3f sub(Matrix4x3fc subtrahend)
subtrahend
from this
.subtrahend
- the subtrahendpublic Matrix4x3f sub(Matrix4x3fc subtrahend, Matrix4x3f dest)
Matrix4x3fc
subtrahend
from this
and store the result in dest
.sub
in interface Matrix4x3fc
subtrahend
- the subtrahenddest
- will hold the resultpublic Matrix4x3f mulComponentWise(Matrix4x3fc other)
this
by other
.other
- the other matrixpublic Matrix4x3f mulComponentWise(Matrix4x3fc other, Matrix4x3f dest)
Matrix4x3fc
this
by other
and store the result in dest
.mulComponentWise
in interface Matrix4x3fc
other
- the other matrixdest
- will hold the resultpublic Matrix4x3f set(float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22, float m30, float m31, float m32)
m00
- the new value of m00m01
- the new value of m01m02
- the new value of m02m10
- the new value of m10m11
- the new value of m11m12
- the new value of m12m20
- the new value of m20m21
- the new value of m21m22
- the new value of m22m30
- the new value of m30m31
- the new value of m31m32
- the new value of m32public Matrix4x3f set(float[] m, int off)
The results will look like this:
0, 3, 6, 9
1, 4, 7, 10
2, 5, 8, 11
m
- the array to read the matrix values fromoff
- the offset into the arrayset(float[])
public Matrix4x3f set(float[] m)
The results will look like this:
0, 3, 6, 9
1, 4, 7, 10
2, 5, 8, 11
m
- the array to read the matrix values fromset(float[], int)
public Matrix4x3f set(FloatBuffer buffer)
FloatBuffer
in column-major order,
starting at its current position.
The FloatBuffer is expected to contain the values in column-major order.
The position of the FloatBuffer will not be changed by this method.
buffer
- the FloatBuffer to read the matrix values from in column-major orderpublic Matrix4x3f set(ByteBuffer buffer)
ByteBuffer
in column-major order,
starting at its current position.
The ByteBuffer is expected to contain the values in column-major order.
The position of the ByteBuffer will not be changed by this method.
buffer
- the ByteBuffer to read the matrix values from in column-major orderpublic float determinant()
Matrix4x3fc
determinant
in interface Matrix4x3fc
public Matrix4x3f invert(Matrix4x3f dest)
Matrix4x3fc
dest
.invert
in interface Matrix4x3fc
dest
- will hold the resultpublic Matrix4x3f invert()
public Matrix4x3f invertOrtho(Matrix4x3f dest)
Matrix4x3fc
this
orthographic projection matrix and store the result into the given dest
.
This method can be used to quickly obtain the inverse of an orthographic projection matrix.
invertOrtho
in interface Matrix4x3fc
dest
- will hold the inverse of this
public Matrix4x3f invertOrtho()
this
orthographic projection matrix.
This method can be used to quickly obtain the inverse of an orthographic projection matrix.
public Matrix4x3f invertUnitScale(Matrix4x3f dest)
Matrix4x3fc
transformDirection
does not change the length
of the vector)
and write the result into dest
.
Reference: http://www.gamedev.net/
invertUnitScale
in interface Matrix4x3fc
dest
- will hold the resultpublic Matrix4x3f invertUnitScale()
transformDirection
does not change the length
of the vector).
Reference: http://www.gamedev.net/
public Matrix4x3f transpose3x3()
public Matrix4x3f transpose3x3(Matrix4x3f dest)
Matrix4x3fc
dest
.
All other matrix elements are left unchanged.
transpose3x3
in interface Matrix4x3fc
dest
- will hold the resultpublic Matrix3f transpose3x3(Matrix3f dest)
Matrix4x3fc
dest
.transpose3x3
in interface Matrix4x3fc
dest
- will hold the resultpublic Matrix4x3f translation(float x, float y, float z)
The resulting matrix can be multiplied against another transformation matrix to obtain an additional translation.
In order to post-multiply a translation transformation directly to a
matrix, use translate()
instead.
x
- the offset to translate in xy
- the offset to translate in yz
- the offset to translate in ztranslate(float, float, float)
public Matrix4x3f translation(Vector3fc offset)
The resulting matrix can be multiplied against another transformation matrix to obtain an additional translation.
In order to post-multiply a translation transformation directly to a
matrix, use translate()
instead.
offset
- the offsets in x, y and z to translatetranslate(float, float, float)
public Matrix4x3f setTranslation(float x, float y, float z)
To build a translation matrix instead, use translation(float, float, float)
.
To apply a translation, use translate(float, float, float)
.
x
- the offset to translate in xy
- the offset to translate in yz
- the offset to translate in ztranslation(float, float, float)
,
translate(float, float, float)
public Matrix4x3f setTranslation(Vector3fc xyz)
To build a translation matrix instead, use translation(Vector3fc)
.
To apply a translation, use translate(Vector3fc)
.
xyz
- the units to translate in (x, y, z)translation(Vector3fc)
,
translate(Vector3fc)
public Vector3f getTranslation(Vector3f dest)
Matrix4x3fc
xyz
.getTranslation
in interface Matrix4x3fc
dest
- will hold the translation components of this matrixpublic Vector3f getScale(Vector3f dest)
Matrix4x3fc
this
matrix for the three base axes.getScale
in interface Matrix4x3fc
dest
- will hold the scaling factors for x, y and zpublic String toString()
This method creates a new DecimalFormat
on every invocation with the format string " 0.000E0; -".
public String toString(NumberFormat formatter)
NumberFormat
.formatter
- the NumberFormat
used to format the matrix values withpublic Matrix4x3f get(Matrix4x3f dest)
this
matrix and store them into
dest
.
This is the reverse method of set(Matrix4x3fc)
and allows to obtain
intermediate calculation results when chaining multiple transformations.
get
in interface Matrix4x3fc
dest
- the destination matrixset(Matrix4x3fc)
public Matrix4x3d get(Matrix4x3d dest)
this
matrix and store them into
dest
.
This is the reverse method of Matrix4x3d.set(Matrix4x3fc)
and allows to obtain
intermediate calculation results when chaining multiple transformations.
get
in interface Matrix4x3fc
dest
- the destination matrixMatrix4x3d.set(Matrix4x3fc)
public AxisAngle4f getRotation(AxisAngle4f dest)
Matrix4x3fc
this
matrix and store the represented rotation
into the given AxisAngle4f
.getRotation
in interface Matrix4x3fc
dest
- the destination AxisAngle4f
AxisAngle4f.set(Matrix4x3fc)
public AxisAngle4d getRotation(AxisAngle4d dest)
Matrix4x3fc
this
matrix and store the represented rotation
into the given AxisAngle4d
.getRotation
in interface Matrix4x3fc
dest
- the destination AxisAngle4d
AxisAngle4f.set(Matrix4x3fc)
public Quaternionf getUnnormalizedRotation(Quaternionf dest)
Matrix4x3fc
this
matrix and store the represented rotation
into the given Quaternionf
.
This method assumes that the first three column vectors of the left 3x3 submatrix are not normalized and thus allows to ignore any additional scaling factor that is applied to the matrix.
getUnnormalizedRotation
in interface Matrix4x3fc
dest
- the destination Quaternionf
Quaternionf.setFromUnnormalized(Matrix4x3fc)
public Quaternionf getNormalizedRotation(Quaternionf dest)
Matrix4x3fc
this
matrix and store the represented rotation
into the given Quaternionf
.
This method assumes that the first three column vectors of the left 3x3 submatrix are normalized.
getNormalizedRotation
in interface Matrix4x3fc
dest
- the destination Quaternionf
Quaternionf.setFromNormalized(Matrix4x3fc)
public Quaterniond getUnnormalizedRotation(Quaterniond dest)
Matrix4x3fc
this
matrix and store the represented rotation
into the given Quaterniond
.
This method assumes that the first three column vectors of the left 3x3 submatrix are not normalized and thus allows to ignore any additional scaling factor that is applied to the matrix.
getUnnormalizedRotation
in interface Matrix4x3fc
dest
- the destination Quaterniond
Quaterniond.setFromUnnormalized(Matrix4x3fc)
public Quaterniond getNormalizedRotation(Quaterniond dest)
Matrix4x3fc
this
matrix and store the represented rotation
into the given Quaterniond
.
This method assumes that the first three column vectors of the left 3x3 submatrix are normalized.
getNormalizedRotation
in interface Matrix4x3fc
dest
- the destination Quaterniond
Quaterniond.setFromNormalized(Matrix4x3fc)
public FloatBuffer get(FloatBuffer buffer)
Matrix4x3fc
FloatBuffer
at the current
buffer position
.
This method will not increment the position of the given FloatBuffer.
In order to specify the offset into the FloatBuffer at which
the matrix is stored, use Matrix4x3fc.get(int, FloatBuffer)
, taking
the absolute position as parameter.
get
in interface Matrix4x3fc
buffer
- will receive the values of this matrix in column-major order at its current positionMatrix4x3fc.get(int, FloatBuffer)
public FloatBuffer get(int index, FloatBuffer buffer)
Matrix4x3fc
FloatBuffer
starting at the specified
absolute buffer position/index.
This method will not increment the position of the given FloatBuffer.
get
in interface Matrix4x3fc
index
- the absolute position into the FloatBufferbuffer
- will receive the values of this matrix in column-major orderpublic ByteBuffer get(ByteBuffer buffer)
Matrix4x3fc
ByteBuffer
at the current
buffer position
.
This method will not increment the position of the given ByteBuffer.
In order to specify the offset into the ByteBuffer at which
the matrix is stored, use Matrix4x3fc.get(int, ByteBuffer)
, taking
the absolute position as parameter.
get
in interface Matrix4x3fc
buffer
- will receive the values of this matrix in column-major order at its current positionMatrix4x3fc.get(int, ByteBuffer)
public ByteBuffer get(int index, ByteBuffer buffer)
Matrix4x3fc
ByteBuffer
starting at the specified
absolute buffer position/index.
This method will not increment the position of the given ByteBuffer.
get
in interface Matrix4x3fc
index
- the absolute position into the ByteBufferbuffer
- will receive the values of this matrix in column-major orderpublic float[] get(float[] arr, int offset)
Matrix4x3fc
get
in interface Matrix4x3fc
arr
- the array to write the matrix values intooffset
- the offset into the arraypublic float[] get(float[] arr)
Matrix4x3fc
In order to specify an explicit offset into the array, use the method Matrix4x3fc.get(float[], int)
.
get
in interface Matrix4x3fc
arr
- the array to write the matrix values intoMatrix4x3fc.get(float[], int)
public FloatBuffer get4x4(FloatBuffer buffer)
Matrix4x3fc
FloatBuffer
at the current
buffer position
, where the upper 4x3 submatrix is this
and the last row is (0, 0, 0, 1).
This method will not increment the position of the given FloatBuffer.
In order to specify the offset into the FloatBuffer at which
the matrix is stored, use Matrix4x3fc.get4x4(int, FloatBuffer)
, taking
the absolute position as parameter.
get4x4
in interface Matrix4x3fc
buffer
- will receive the values of this matrix in column-major order at its current positionMatrix4x3fc.get4x4(int, FloatBuffer)
public FloatBuffer get4x4(int index, FloatBuffer buffer)
Matrix4x3fc
FloatBuffer
starting at the specified
absolute buffer position/index, where the upper 4x3 submatrix is this
and the last row is (0, 0, 0, 1).
This method will not increment the position of the given FloatBuffer.
get4x4
in interface Matrix4x3fc
index
- the absolute position into the FloatBufferbuffer
- will receive the values of this matrix in column-major orderpublic ByteBuffer get4x4(ByteBuffer buffer)
Matrix4x3fc
ByteBuffer
at the current
buffer position
, where the upper 4x3 submatrix is this
and the last row is (0, 0, 0, 1).
This method will not increment the position of the given ByteBuffer.
In order to specify the offset into the ByteBuffer at which
the matrix is stored, use Matrix4x3fc.get4x4(int, ByteBuffer)
, taking
the absolute position as parameter.
get4x4
in interface Matrix4x3fc
buffer
- will receive the values of this matrix in column-major order at its current positionMatrix4x3fc.get4x4(int, ByteBuffer)
public ByteBuffer get4x4(int index, ByteBuffer buffer)
Matrix4x3fc
ByteBuffer
starting at the specified
absolute buffer position/index, where the upper 4x3 submatrix is this
and the last row is (0, 0, 0, 1).
This method will not increment the position of the given ByteBuffer.
get4x4
in interface Matrix4x3fc
index
- the absolute position into the ByteBufferbuffer
- will receive the values of this matrix in column-major orderpublic FloatBuffer getTransposed(FloatBuffer buffer)
Matrix4x3fc
FloatBuffer
at the current
buffer position
.
This method will not increment the position of the given FloatBuffer.
In order to specify the offset into the FloatBuffer at which
the matrix is stored, use Matrix4x3fc.getTransposed(int, FloatBuffer)
, taking
the absolute position as parameter.
getTransposed
in interface Matrix4x3fc
buffer
- will receive the values of this matrix in row-major order at its current positionMatrix4x3fc.getTransposed(int, FloatBuffer)
public FloatBuffer getTransposed(int index, FloatBuffer buffer)
Matrix4x3fc
FloatBuffer
starting at the specified
absolute buffer position/index.
This method will not increment the position of the given FloatBuffer.
getTransposed
in interface Matrix4x3fc
index
- the absolute position into the FloatBufferbuffer
- will receive the values of this matrix in row-major orderpublic ByteBuffer getTransposed(ByteBuffer buffer)
Matrix4x3fc
ByteBuffer
at the current
buffer position
.
This method will not increment the position of the given ByteBuffer.
In order to specify the offset into the ByteBuffer at which
the matrix is stored, use Matrix4x3fc.getTransposed(int, ByteBuffer)
, taking
the absolute position as parameter.
getTransposed
in interface Matrix4x3fc
buffer
- will receive the values of this matrix in row-major order at its current positionMatrix4x3fc.getTransposed(int, ByteBuffer)
public ByteBuffer getTransposed(int index, ByteBuffer buffer)
Matrix4x3fc
ByteBuffer
starting at the specified
absolute buffer position/index.
This method will not increment the position of the given ByteBuffer.
getTransposed
in interface Matrix4x3fc
index
- the absolute position into the ByteBufferbuffer
- will receive the values of this matrix in row-major orderpublic float[] getTransposed(float[] arr, int offset)
Matrix4x3fc
getTransposed
in interface Matrix4x3fc
arr
- the array to write the matrix values intooffset
- the offset into the arraypublic float[] getTransposed(float[] arr)
Matrix4x3fc
In order to specify an explicit offset into the array, use the method Matrix4x3fc.getTransposed(float[], int)
.
getTransposed
in interface Matrix4x3fc
arr
- the array to write the matrix values intoMatrix4x3fc.getTransposed(float[], int)
public Matrix4x3f zero()
0
.public Matrix4x3f scaling(float factor)
The resulting matrix can be multiplied against another transformation matrix to obtain an additional scaling.
In order to post-multiply a scaling transformation directly to a
matrix, use scale()
instead.
factor
- the scale factor in x, y and zscale(float)
public Matrix4x3f scaling(float x, float y, float z)
The resulting matrix can be multiplied against another transformation matrix to obtain an additional scaling.
In order to post-multiply a scaling transformation directly to a
matrix, use scale()
instead.
x
- the scale in xy
- the scale in yz
- the scale in zscale(float, float, float)
public Matrix4x3f scaling(Vector3fc xyz)
The resulting matrix can be multiplied against another transformation matrix to obtain an additional scaling.
In order to post-multiply a scaling transformation directly to a
matrix use scale()
instead.
xyz
- the scale in x, y and z respectivelyscale(Vector3fc)
public Matrix4x3f rotation(float angle, Vector3fc axis)
The axis described by the axis
vector needs to be a unit vector.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
The resulting matrix can be multiplied against another transformation matrix to obtain an additional rotation.
In order to post-multiply a rotation transformation directly to a
matrix, use rotate()
instead.
angle
- the angle in radiansaxis
- the axis to rotate about (needs to be normalized
)rotate(float, Vector3fc)
public Matrix4x3f rotation(AxisAngle4f axisAngle)
AxisAngle4f
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
The resulting matrix can be multiplied against another transformation matrix to obtain an additional rotation.
In order to apply the rotation transformation to an existing transformation,
use rotate()
instead.
Reference: http://en.wikipedia.org
axisAngle
- the AxisAngle4f
(needs to be normalized
)rotate(AxisAngle4f)
public Matrix4x3f rotation(float angle, float x, float y, float z)
The axis described by the three components needs to be a unit vector.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
The resulting matrix can be multiplied against another transformation matrix to obtain an additional rotation.
In order to apply the rotation transformation to an existing transformation,
use rotate()
instead.
Reference: http://en.wikipedia.org
angle
- the angle in radiansx
- the x-component of the rotation axisy
- the y-component of the rotation axisz
- the z-component of the rotation axisrotate(float, float, float, float)
public Matrix4x3f rotationX(float ang)
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
Reference: http://en.wikipedia.org
ang
- the angle in radianspublic Matrix4x3f rotationY(float ang)
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
Reference: http://en.wikipedia.org
ang
- the angle in radianspublic Matrix4x3f rotationZ(float ang)
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
Reference: http://en.wikipedia.org
ang
- the angle in radianspublic Matrix4x3f rotationXYZ(float angleX, float angleY, float angleZ)
angleX
radians about the X axis, followed by a rotation
of angleY
radians about the Y axis and followed by a rotation of angleZ
radians about the Z axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
This method is equivalent to calling: rotationX(angleX).rotateY(angleY).rotateZ(angleZ)
angleX
- the angle to rotate about XangleY
- the angle to rotate about YangleZ
- the angle to rotate about Zpublic Matrix4x3f rotationZYX(float angleZ, float angleY, float angleX)
angleZ
radians about the Z axis, followed by a rotation
of angleY
radians about the Y axis and followed by a rotation of angleX
radians about the X axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
This method is equivalent to calling: rotationZ(angleZ).rotateY(angleY).rotateX(angleX)
angleZ
- the angle to rotate about ZangleY
- the angle to rotate about YangleX
- the angle to rotate about Xpublic Matrix4x3f rotationYXZ(float angleY, float angleX, float angleZ)
angleY
radians about the Y axis, followed by a rotation
of angleX
radians about the X axis and followed by a rotation of angleZ
radians about the Z axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
This method is equivalent to calling: rotationY(angleY).rotateX(angleX).rotateZ(angleZ)
angleY
- the angle to rotate about YangleX
- the angle to rotate about XangleZ
- the angle to rotate about Zpublic Matrix4x3f setRotationXYZ(float angleX, float angleY, float angleZ)
angleX
radians about the X axis, followed by a rotation
of angleY
radians about the Y axis and followed by a rotation of angleZ
radians about the Z axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
angleX
- the angle to rotate about XangleY
- the angle to rotate about YangleZ
- the angle to rotate about Zpublic Matrix4x3f setRotationZYX(float angleZ, float angleY, float angleX)
angleZ
radians about the Z axis, followed by a rotation
of angleY
radians about the Y axis and followed by a rotation of angleX
radians about the X axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
angleZ
- the angle to rotate about ZangleY
- the angle to rotate about YangleX
- the angle to rotate about Xpublic Matrix4x3f setRotationYXZ(float angleY, float angleX, float angleZ)
angleY
radians about the Y axis, followed by a rotation
of angleX
radians about the X axis and followed by a rotation of angleZ
radians about the Z axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
angleY
- the angle to rotate about YangleX
- the angle to rotate about XangleZ
- the angle to rotate about Zpublic Matrix4x3f rotation(Quaternionfc quat)
Quaternionfc
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
The resulting matrix can be multiplied against another transformation matrix to obtain an additional rotation.
In order to apply the rotation transformation to an existing transformation,
use rotate()
instead.
Reference: http://en.wikipedia.org
quat
- the Quaternionfc
rotate(Quaternionfc)
public Matrix4x3f translationRotateScale(float tx, float ty, float tz, float qx, float qy, float qz, float qw, float sx, float sy, float sz)
this
matrix to T * R * S, where T is a translation by the given (tx, ty, tz),
R is a rotation transformation specified by the quaternion (qx, qy, qz, qw), and S is a scaling transformation
which scales the three axes x, y and z by (sx, sy, sz).
When transforming a vector by the resulting matrix the scaling transformation will be applied first, then the rotation and at last the translation.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
This method is equivalent to calling: translation(tx, ty, tz).rotate(quat).scale(sx, sy, sz)
tx
- the number of units by which to translate the x-componentty
- the number of units by which to translate the y-componenttz
- the number of units by which to translate the z-componentqx
- the x-coordinate of the vector part of the quaternionqy
- the y-coordinate of the vector part of the quaternionqz
- the z-coordinate of the vector part of the quaternionqw
- the scalar part of the quaternionsx
- the scaling factor for the x-axissy
- the scaling factor for the y-axissz
- the scaling factor for the z-axistranslation(float, float, float)
,
rotate(Quaternionfc)
,
scale(float, float, float)
public Matrix4x3f translationRotateScale(Vector3fc translation, Quaternionfc quat, Vector3fc scale)
this
matrix to T * R * S, where T is the given translation
,
R is a rotation transformation specified by the given quaternion, and S is a scaling transformation
which scales the axes by scale
.
When transforming a vector by the resulting matrix the scaling transformation will be applied first, then the rotation and at last the translation.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
This method is equivalent to calling: translation(translation).rotate(quat).scale(scale)
translation
- the translationquat
- the quaternion representing a rotationscale
- the scaling factorstranslation(Vector3fc)
,
rotate(Quaternionfc)
public Matrix4x3f translationRotateScaleMul(float tx, float ty, float tz, float qx, float qy, float qz, float qw, float sx, float sy, float sz, Matrix4x3f m)
this
matrix to T * R * S * M, where T is a translation by the given (tx, ty, tz),
R is a rotation transformation specified by the quaternion (qx, qy, qz, qw), S is a scaling transformation
which scales the three axes x, y and z by (sx, sy, sz).
When transforming a vector by the resulting matrix the transformation described by M
will be applied first, then the scaling, then rotation and
at last the translation.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
This method is equivalent to calling: translation(tx, ty, tz).rotate(quat).scale(sx, sy, sz).mul(m)
tx
- the number of units by which to translate the x-componentty
- the number of units by which to translate the y-componenttz
- the number of units by which to translate the z-componentqx
- the x-coordinate of the vector part of the quaternionqy
- the y-coordinate of the vector part of the quaternionqz
- the z-coordinate of the vector part of the quaternionqw
- the scalar part of the quaternionsx
- the scaling factor for the x-axissy
- the scaling factor for the y-axissz
- the scaling factor for the z-axism
- the matrix to multiply bytranslation(float, float, float)
,
rotate(Quaternionfc)
,
scale(float, float, float)
,
mul(Matrix4x3fc)
public Matrix4x3f translationRotateScaleMul(Vector3fc translation, Quaternionfc quat, Vector3fc scale, Matrix4x3f m)
this
matrix to T * R * S * M, where T is the given translation
,
R is a rotation transformation specified by the given quaternion, S is a scaling transformation
which scales the axes by scale
.
When transforming a vector by the resulting matrix the transformation described by M
will be applied first, then the scaling, then rotation and
at last the translation.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
This method is equivalent to calling: translation(translation).rotate(quat).scale(scale).mul(m)
translation
- the translationquat
- the quaternion representing a rotationscale
- the scaling factorsm
- the matrix to multiply bytranslation(Vector3fc)
,
rotate(Quaternionfc)
public Matrix4x3f translationRotate(float tx, float ty, float tz, Quaternionfc quat)
this
matrix to T * R, where T is a translation by the given (tx, ty, tz) and
R is a rotation transformation specified by the given quaternion.
When transforming a vector by the resulting matrix the rotation transformation will be applied first and then the translation.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
This method is equivalent to calling: translation(tx, ty, tz).rotate(quat)
tx
- the number of units by which to translate the x-componentty
- the number of units by which to translate the y-componenttz
- the number of units by which to translate the z-componentquat
- the quaternion representing a rotationtranslation(float, float, float)
,
rotate(Quaternionfc)
public Matrix4x3f set3x3(Matrix3fc mat)
Matrix4x3f
to the given Matrix3fc
and don't change the other elements.mat
- the 3x3 matrixpublic Vector4f transform(Vector4f v)
Matrix4x3fc
transform
in interface Matrix4x3fc
v
- the vector to transform and to hold the final resultVector4f.mul(Matrix4x3fc)
public Vector4f transform(Vector4fc v, Vector4f dest)
Matrix4x3fc
dest
.transform
in interface Matrix4x3fc
v
- the vector to transformdest
- will contain the resultVector4f.mul(Matrix4x3fc, Vector4f)
public Vector3f transformPosition(Vector3f v)
Matrix4x3fc
The given 3D-vector is treated as a 4D-vector with its w-component being 1.0, so it will represent a position/location in 3D-space rather than a direction.
In order to store the result in another vector, use Matrix4x3fc.transformPosition(Vector3fc, Vector3f)
.
transformPosition
in interface Matrix4x3fc
v
- the vector to transform and to hold the final resultMatrix4x3fc.transformPosition(Vector3fc, Vector3f)
,
Matrix4x3fc.transform(Vector4f)
public Vector3f transformPosition(Vector3fc v, Vector3f dest)
Matrix4x3fc
dest
.
The given 3D-vector is treated as a 4D-vector with its w-component being 1.0, so it will represent a position/location in 3D-space rather than a direction.
In order to store the result in the same vector, use Matrix4x3fc.transformPosition(Vector3f)
.
transformPosition
in interface Matrix4x3fc
v
- the vector to transformdest
- will hold the resultMatrix4x3fc.transformPosition(Vector3f)
,
Matrix4x3fc.transform(Vector4fc, Vector4f)
public Vector3f transformDirection(Vector3f v)
Matrix4x3fc
The given 3D-vector is treated as a 4D-vector with its w-component being 0.0, so it will represent a direction in 3D-space rather than a position. This method will therefore not take the translation part of the matrix into account.
In order to store the result in another vector, use Matrix4x3fc.transformDirection(Vector3fc, Vector3f)
.
transformDirection
in interface Matrix4x3fc
v
- the vector to transform and to hold the final resultMatrix4x3fc.transformDirection(Vector3fc, Vector3f)
public Vector3f transformDirection(Vector3fc v, Vector3f dest)
Matrix4x3fc
dest
.
The given 3D-vector is treated as a 4D-vector with its w-component being 0.0, so it will represent a direction in 3D-space rather than a position. This method will therefore not take the translation part of the matrix into account.
In order to store the result in the same vector, use Matrix4x3fc.transformDirection(Vector3f)
.
transformDirection
in interface Matrix4x3fc
v
- the vector to transform and to hold the final resultdest
- will hold the resultMatrix4x3fc.transformDirection(Vector3f)
public Matrix4x3f scale(Vector3fc xyz, Matrix4x3f dest)
Matrix4x3fc
this
matrix by scaling the base axes by the given xyz.x,
xyz.y and xyz.z factors, respectively and store the result in dest
.
If M
is this
matrix and S
the scaling matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the scaling will be applied first!
scale
in interface Matrix4x3fc
xyz
- the factors of the x, y and z component, respectivelydest
- will hold the resultpublic Matrix4x3f scale(Vector3fc xyz)
If M
is this
matrix and S
the scaling matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
scaling will be applied first!
xyz
- the factors of the x, y and z component, respectivelypublic Matrix4x3f scale(float xyz, Matrix4x3f dest)
Matrix4x3fc
xyz
factor
and store the result in dest
.
If M
is this
matrix and S
the scaling matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
scaling will be applied first!
Individual scaling of all three axes can be applied using Matrix4x3fc.scale(float, float, float, Matrix4x3f)
.
scale
in interface Matrix4x3fc
xyz
- the factor for all componentsdest
- will hold the resultMatrix4x3fc.scale(float, float, float, Matrix4x3f)
public Matrix4x3f scale(float xyz)
xyz
factor.
If M
is this
matrix and S
the scaling matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
scaling will be applied first!
Individual scaling of all three axes can be applied using scale(float, float, float)
.
xyz
- the factor for all componentsscale(float, float, float)
public Matrix4x3f scale(float x, float y, float z, Matrix4x3f dest)
Matrix4x3fc
this
matrix by scaling the base axes by the given x,
y and z factors and store the result in dest
.
If M
is this
matrix and S
the scaling matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the scaling will be applied first!
scale
in interface Matrix4x3fc
x
- the factor of the x componenty
- the factor of the y componentz
- the factor of the z componentdest
- will hold the resultpublic Matrix4x3f scale(float x, float y, float z)
If M
is this
matrix and S
the scaling matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
scaling will be applied first!
x
- the factor of the x componenty
- the factor of the y componentz
- the factor of the z componentpublic Matrix4x3f scaleLocal(float x, float y, float z, Matrix4x3f dest)
Matrix4x3fc
this
matrix by scaling the base axes by the given x,
y and z factors and store the result in dest
.
If M
is this
matrix and S
the scaling matrix,
then the new matrix will be S * M
. So when transforming a
vector v
with the new matrix by using S * M * v
, the scaling will be applied last!
scaleLocal
in interface Matrix4x3fc
x
- the factor of the x componenty
- the factor of the y componentz
- the factor of the z componentdest
- will hold the resultpublic Matrix4x3f scaleLocal(float x, float y, float z)
If M
is this
matrix and S
the scaling matrix,
then the new matrix will be S * M
. So when transforming a
vector v
with the new matrix by using S * M * v
, the
scaling will be applied last!
x
- the factor of the x componenty
- the factor of the y componentz
- the factor of the z componentpublic Matrix4x3f rotateX(float ang, Matrix4x3f dest)
Matrix4x3fc
dest
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
Reference: http://en.wikipedia.org
rotateX
in interface Matrix4x3fc
ang
- the angle in radiansdest
- will hold the resultpublic Matrix4x3f rotateX(float ang)
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
Reference: http://en.wikipedia.org
ang
- the angle in radianspublic Matrix4x3f rotateY(float ang, Matrix4x3f dest)
Matrix4x3fc
dest
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
Reference: http://en.wikipedia.org
rotateY
in interface Matrix4x3fc
ang
- the angle in radiansdest
- will hold the resultpublic Matrix4x3f rotateY(float ang)
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
Reference: http://en.wikipedia.org
ang
- the angle in radianspublic Matrix4x3f rotateZ(float ang, Matrix4x3f dest)
Matrix4x3fc
dest
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
Reference: http://en.wikipedia.org
rotateZ
in interface Matrix4x3fc
ang
- the angle in radiansdest
- will hold the resultpublic Matrix4x3f rotateZ(float ang)
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
Reference: http://en.wikipedia.org
ang
- the angle in radianspublic Matrix4x3f rotateXYZ(Vector3f angles)
angles.x
radians about the X axis, followed by a rotation of angles.y
radians about the Y axis and
followed by a rotation of angles.z
radians about the Z axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
This method is equivalent to calling: rotateX(angles.x).rotateY(angles.y).rotateZ(angles.z)
angles
- the Euler anglespublic Matrix4x3f rotateXYZ(float angleX, float angleY, float angleZ)
angleX
radians about the X axis, followed by a rotation of angleY
radians about the Y axis and
followed by a rotation of angleZ
radians about the Z axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
This method is equivalent to calling: rotateX(angleX).rotateY(angleY).rotateZ(angleZ)
angleX
- the angle to rotate about XangleY
- the angle to rotate about YangleZ
- the angle to rotate about Zpublic Matrix4x3f rotateXYZ(float angleX, float angleY, float angleZ, Matrix4x3f dest)
Matrix4x3fc
angleX
radians about the X axis, followed by a rotation of angleY
radians about the Y axis and
followed by a rotation of angleZ
radians about the Z axis and store the result in dest
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
This method is equivalent to calling: rotateX(angleX, dest).rotateY(angleY).rotateZ(angleZ)
rotateXYZ
in interface Matrix4x3fc
angleX
- the angle to rotate about XangleY
- the angle to rotate about YangleZ
- the angle to rotate about Zdest
- will hold the resultpublic Matrix4x3f rotateZYX(Vector3f angles)
angles.z
radians about the Z axis, followed by a rotation of angles.y
radians about the Y axis and
followed by a rotation of angles.x
radians about the X axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
This method is equivalent to calling: rotateZ(angles.z).rotateY(angles.y).rotateX(angles.x)
angles
- the Euler anglespublic Matrix4x3f rotateZYX(float angleZ, float angleY, float angleX)
angleZ
radians about the Z axis, followed by a rotation of angleY
radians about the Y axis and
followed by a rotation of angleX
radians about the X axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
This method is equivalent to calling: rotateZ(angleZ).rotateY(angleY).rotateX(angleX)
angleZ
- the angle to rotate about ZangleY
- the angle to rotate about YangleX
- the angle to rotate about Xpublic Matrix4x3f rotateZYX(float angleZ, float angleY, float angleX, Matrix4x3f dest)
Matrix4x3fc
angleZ
radians about the Z axis, followed by a rotation of angleY
radians about the Y axis and
followed by a rotation of angleX
radians about the X axis and store the result in dest
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
This method is equivalent to calling: rotateZ(angleZ, dest).rotateY(angleY).rotateX(angleX)
rotateZYX
in interface Matrix4x3fc
angleZ
- the angle to rotate about ZangleY
- the angle to rotate about YangleX
- the angle to rotate about Xdest
- will hold the resultpublic Matrix4x3f rotateYXZ(Vector3f angles)
angles.y
radians about the Y axis, followed by a rotation of angles.x
radians about the X axis and
followed by a rotation of angles.z
radians about the Z axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
This method is equivalent to calling: rotateY(angles.y).rotateX(angles.x).rotateZ(angles.z)
angles
- the Euler anglespublic Matrix4x3f rotateYXZ(float angleY, float angleX, float angleZ)
angleY
radians about the Y axis, followed by a rotation of angleX
radians about the X axis and
followed by a rotation of angleZ
radians about the Z axis.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
This method is equivalent to calling: rotateY(angleY).rotateX(angleX).rotateZ(angleZ)
angleY
- the angle to rotate about YangleX
- the angle to rotate about XangleZ
- the angle to rotate about Zpublic Matrix4x3f rotateYXZ(float angleY, float angleX, float angleZ, Matrix4x3f dest)
Matrix4x3fc
angleY
radians about the Y axis, followed by a rotation of angleX
radians about the X axis and
followed by a rotation of angleZ
radians about the Z axis and store the result in dest
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
This method is equivalent to calling: rotateY(angleY, dest).rotateX(angleX).rotateZ(angleZ)
rotateYXZ
in interface Matrix4x3fc
angleY
- the angle to rotate about YangleX
- the angle to rotate about XangleZ
- the angle to rotate about Zdest
- will hold the resultpublic Matrix4x3f rotate(float ang, float x, float y, float z, Matrix4x3f dest)
dest
.
The axis described by the three components needs to be a unit vector.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
In order to set the matrix to a rotation matrix without post-multiplying the rotation
transformation, use rotation()
.
Reference: http://en.wikipedia.org
rotate
in interface Matrix4x3fc
ang
- the angle in radiansx
- the x component of the axisy
- the y component of the axisz
- the z component of the axisdest
- will hold the resultrotation(float, float, float, float)
public Matrix4x3f rotate(float ang, float x, float y, float z)
The axis described by the three components needs to be a unit vector.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
In order to set the matrix to a rotation matrix without post-multiplying the rotation
transformation, use rotation()
.
Reference: http://en.wikipedia.org
ang
- the angle in radiansx
- the x component of the axisy
- the y component of the axisz
- the z component of the axisrotation(float, float, float, float)
public Matrix4x3f rotateTranslation(float ang, float x, float y, float z, Matrix4x3f dest)
dest
.
This method assumes this
to only contain a translation.
The axis described by the three components needs to be a unit vector.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
rotation will be applied first!
In order to set the matrix to a rotation matrix without post-multiplying the rotation
transformation, use rotation()
.
Reference: http://en.wikipedia.org
rotateTranslation
in interface Matrix4x3fc
ang
- the angle in radiansx
- the x component of the axisy
- the y component of the axisz
- the z component of the axisdest
- will hold the resultrotation(float, float, float, float)
public Matrix4x3f rotateLocal(float ang, float x, float y, float z, Matrix4x3f dest)
dest
.
The axis described by the three components needs to be a unit vector.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be R * M
. So when transforming a
vector v
with the new matrix by using R * M * v
, the
rotation will be applied last!
In order to set the matrix to a rotation matrix without pre-multiplying the rotation
transformation, use rotation()
.
Reference: http://en.wikipedia.org
rotateLocal
in interface Matrix4x3fc
ang
- the angle in radiansx
- the x component of the axisy
- the y component of the axisz
- the z component of the axisdest
- will hold the resultrotation(float, float, float, float)
public Matrix4x3f rotateLocal(float ang, float x, float y, float z)
The axis described by the three components needs to be a unit vector.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and R
the rotation matrix,
then the new matrix will be R * M
. So when transforming a
vector v
with the new matrix by using R * M * v
, the
rotation will be applied last!
In order to set the matrix to a rotation matrix without pre-multiplying the rotation
transformation, use rotation()
.
Reference: http://en.wikipedia.org
ang
- the angle in radiansx
- the x component of the axisy
- the y component of the axisz
- the z component of the axisrotation(float, float, float, float)
public Matrix4x3f translate(Vector3fc offset)
If M
is this
matrix and T
the translation
matrix, then the new matrix will be M * T
. So when
transforming a vector v
with the new matrix by using
M * T * v
, the translation will be applied first!
In order to set the matrix to a translation transformation without post-multiplying
it, use translation(Vector3fc)
.
offset
- the number of units in x, y and z by which to translatetranslation(Vector3fc)
public Matrix4x3f translate(Vector3fc offset, Matrix4x3f dest)
dest
.
If M
is this
matrix and T
the translation
matrix, then the new matrix will be M * T
. So when
transforming a vector v
with the new matrix by using
M * T * v
, the translation will be applied first!
In order to set the matrix to a translation transformation without post-multiplying
it, use translation(Vector3fc)
.
translate
in interface Matrix4x3fc
offset
- the number of units in x, y and z by which to translatedest
- will hold the resulttranslation(Vector3fc)
public Matrix4x3f translate(float x, float y, float z, Matrix4x3f dest)
dest
.
If M
is this
matrix and T
the translation
matrix, then the new matrix will be M * T
. So when
transforming a vector v
with the new matrix by using
M * T * v
, the translation will be applied first!
In order to set the matrix to a translation transformation without post-multiplying
it, use translation(float, float, float)
.
translate
in interface Matrix4x3fc
x
- the offset to translate in xy
- the offset to translate in yz
- the offset to translate in zdest
- will hold the resulttranslation(float, float, float)
public Matrix4x3f translate(float x, float y, float z)
If M
is this
matrix and T
the translation
matrix, then the new matrix will be M * T
. So when
transforming a vector v
with the new matrix by using
M * T * v
, the translation will be applied first!
In order to set the matrix to a translation transformation without post-multiplying
it, use translation(float, float, float)
.
x
- the offset to translate in xy
- the offset to translate in yz
- the offset to translate in ztranslation(float, float, float)
public Matrix4x3f translateLocal(Vector3fc offset)
If M
is this
matrix and T
the translation
matrix, then the new matrix will be T * M
. So when
transforming a vector v
with the new matrix by using
T * M * v
, the translation will be applied last!
In order to set the matrix to a translation transformation without pre-multiplying
it, use translation(Vector3fc)
.
offset
- the number of units in x, y and z by which to translatetranslation(Vector3fc)
public Matrix4x3f translateLocal(Vector3fc offset, Matrix4x3f dest)
dest
.
If M
is this
matrix and T
the translation
matrix, then the new matrix will be T * M
. So when
transforming a vector v
with the new matrix by using
T * M * v
, the translation will be applied last!
In order to set the matrix to a translation transformation without pre-multiplying
it, use translation(Vector3fc)
.
translateLocal
in interface Matrix4x3fc
offset
- the number of units in x, y and z by which to translatedest
- will hold the resulttranslation(Vector3fc)
public Matrix4x3f translateLocal(float x, float y, float z, Matrix4x3f dest)
dest
.
If M
is this
matrix and T
the translation
matrix, then the new matrix will be T * M
. So when
transforming a vector v
with the new matrix by using
T * M * v
, the translation will be applied last!
In order to set the matrix to a translation transformation without pre-multiplying
it, use translation(float, float, float)
.
translateLocal
in interface Matrix4x3fc
x
- the offset to translate in xy
- the offset to translate in yz
- the offset to translate in zdest
- will hold the resulttranslation(float, float, float)
public Matrix4x3f translateLocal(float x, float y, float z)
If M
is this
matrix and T
the translation
matrix, then the new matrix will be T * M
. So when
transforming a vector v
with the new matrix by using
T * M * v
, the translation will be applied last!
In order to set the matrix to a translation transformation without pre-multiplying
it, use translation(float, float, float)
.
x
- the offset to translate in xy
- the offset to translate in yz
- the offset to translate in ztranslation(float, float, float)
public void writeExternal(ObjectOutput out) throws IOException
writeExternal
in interface Externalizable
IOException
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal
in interface Externalizable
IOException
ClassNotFoundException
public Matrix4x3f ortho(float left, float right, float bottom, float top, float zNear, float zFar, boolean zZeroToOne, Matrix4x3f dest)
dest
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrtho()
.
Reference: http://www.songho.ca
ortho
in interface Matrix4x3fc
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
dest
- will hold the resultsetOrtho(float, float, float, float, float, float, boolean)
public Matrix4x3f ortho(float left, float right, float bottom, float top, float zNear, float zFar, Matrix4x3f dest)
dest
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrtho()
.
Reference: http://www.songho.ca
ortho
in interface Matrix4x3fc
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancedest
- will hold the resultsetOrtho(float, float, float, float, float, float)
public Matrix4x3f ortho(float left, float right, float bottom, float top, float zNear, float zFar, boolean zZeroToOne)
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrtho()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
setOrtho(float, float, float, float, float, float, boolean)
public Matrix4x3f ortho(float left, float right, float bottom, float top, float zNear, float zFar)
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrtho()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancesetOrtho(float, float, float, float, float, float)
public Matrix4x3f orthoLH(float left, float right, float bottom, float top, float zNear, float zFar, boolean zZeroToOne, Matrix4x3f dest)
dest
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrthoLH()
.
Reference: http://www.songho.ca
orthoLH
in interface Matrix4x3fc
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
dest
- will hold the resultsetOrthoLH(float, float, float, float, float, float, boolean)
public Matrix4x3f orthoLH(float left, float right, float bottom, float top, float zNear, float zFar, Matrix4x3f dest)
dest
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrthoLH()
.
Reference: http://www.songho.ca
orthoLH
in interface Matrix4x3fc
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancedest
- will hold the resultsetOrthoLH(float, float, float, float, float, float)
public Matrix4x3f orthoLH(float left, float right, float bottom, float top, float zNear, float zFar, boolean zZeroToOne)
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrthoLH()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
setOrthoLH(float, float, float, float, float, float, boolean)
public Matrix4x3f orthoLH(float left, float right, float bottom, float top, float zNear, float zFar)
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrthoLH()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancesetOrthoLH(float, float, float, float, float, float)
public Matrix4x3f setOrtho(float left, float right, float bottom, float top, float zNear, float zFar, boolean zZeroToOne)
In order to apply the orthographic projection to an already existing transformation,
use ortho()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
ortho(float, float, float, float, float, float, boolean)
public Matrix4x3f setOrtho(float left, float right, float bottom, float top, float zNear, float zFar)
In order to apply the orthographic projection to an already existing transformation,
use ortho()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distanceortho(float, float, float, float, float, float)
public Matrix4x3f setOrthoLH(float left, float right, float bottom, float top, float zNear, float zFar, boolean zZeroToOne)
In order to apply the orthographic projection to an already existing transformation,
use orthoLH()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
orthoLH(float, float, float, float, float, float, boolean)
public Matrix4x3f setOrthoLH(float left, float right, float bottom, float top, float zNear, float zFar)
In order to apply the orthographic projection to an already existing transformation,
use orthoLH()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgezNear
- near clipping plane distancezFar
- far clipping plane distanceorthoLH(float, float, float, float, float, float)
public Matrix4x3f orthoSymmetric(float width, float height, float zNear, float zFar, boolean zZeroToOne, Matrix4x3f dest)
dest
.
This method is equivalent to calling ortho()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to a symmetric orthographic projection without post-multiplying it,
use setOrthoSymmetric()
.
Reference: http://www.songho.ca
orthoSymmetric
in interface Matrix4x3fc
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancedest
- will hold the resultzZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
setOrthoSymmetric(float, float, float, float, boolean)
public Matrix4x3f orthoSymmetric(float width, float height, float zNear, float zFar, Matrix4x3f dest)
dest
.
This method is equivalent to calling ortho()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to a symmetric orthographic projection without post-multiplying it,
use setOrthoSymmetric()
.
Reference: http://www.songho.ca
orthoSymmetric
in interface Matrix4x3fc
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancedest
- will hold the resultsetOrthoSymmetric(float, float, float, float)
public Matrix4x3f orthoSymmetric(float width, float height, float zNear, float zFar, boolean zZeroToOne)
This method is equivalent to calling ortho()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to a symmetric orthographic projection without post-multiplying it,
use setOrthoSymmetric()
.
Reference: http://www.songho.ca
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
setOrthoSymmetric(float, float, float, float, boolean)
public Matrix4x3f orthoSymmetric(float width, float height, float zNear, float zFar)
This method is equivalent to calling ortho()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to a symmetric orthographic projection without post-multiplying it,
use setOrthoSymmetric()
.
Reference: http://www.songho.ca
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancesetOrthoSymmetric(float, float, float, float)
public Matrix4x3f orthoSymmetricLH(float width, float height, float zNear, float zFar, boolean zZeroToOne, Matrix4x3f dest)
dest
.
This method is equivalent to calling orthoLH()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to a symmetric orthographic projection without post-multiplying it,
use setOrthoSymmetricLH()
.
Reference: http://www.songho.ca
orthoSymmetricLH
in interface Matrix4x3fc
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancedest
- will hold the resultzZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
setOrthoSymmetricLH(float, float, float, float, boolean)
public Matrix4x3f orthoSymmetricLH(float width, float height, float zNear, float zFar, Matrix4x3f dest)
dest
.
This method is equivalent to calling orthoLH()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to a symmetric orthographic projection without post-multiplying it,
use setOrthoSymmetricLH()
.
Reference: http://www.songho.ca
orthoSymmetricLH
in interface Matrix4x3fc
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancedest
- will hold the resultsetOrthoSymmetricLH(float, float, float, float)
public Matrix4x3f orthoSymmetricLH(float width, float height, float zNear, float zFar, boolean zZeroToOne)
This method is equivalent to calling orthoLH()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to a symmetric orthographic projection without post-multiplying it,
use setOrthoSymmetricLH()
.
Reference: http://www.songho.ca
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
setOrthoSymmetricLH(float, float, float, float, boolean)
public Matrix4x3f orthoSymmetricLH(float width, float height, float zNear, float zFar)
This method is equivalent to calling orthoLH()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to a symmetric orthographic projection without post-multiplying it,
use setOrthoSymmetricLH()
.
Reference: http://www.songho.ca
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancesetOrthoSymmetricLH(float, float, float, float)
public Matrix4x3f setOrthoSymmetric(float width, float height, float zNear, float zFar, boolean zZeroToOne)
This method is equivalent to calling setOrtho()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
In order to apply the symmetric orthographic projection to an already existing transformation,
use orthoSymmetric()
.
Reference: http://www.songho.ca
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
orthoSymmetric(float, float, float, float, boolean)
public Matrix4x3f setOrthoSymmetric(float width, float height, float zNear, float zFar)
This method is equivalent to calling setOrtho()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
In order to apply the symmetric orthographic projection to an already existing transformation,
use orthoSymmetric()
.
Reference: http://www.songho.ca
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distanceorthoSymmetric(float, float, float, float)
public Matrix4x3f setOrthoSymmetricLH(float width, float height, float zNear, float zFar, boolean zZeroToOne)
This method is equivalent to calling setOrtho()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
In order to apply the symmetric orthographic projection to an already existing transformation,
use orthoSymmetricLH()
.
Reference: http://www.songho.ca
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distancezZeroToOne
- whether to use Vulkan's and Direct3D's NDC z range of [0..+1] when true
or whether to use OpenGL's NDC z range of [-1..+1] when false
orthoSymmetricLH(float, float, float, float, boolean)
public Matrix4x3f setOrthoSymmetricLH(float width, float height, float zNear, float zFar)
This method is equivalent to calling setOrthoLH()
with
left=-width/2
, right=+width/2
, bottom=-height/2
and top=+height/2
.
In order to apply the symmetric orthographic projection to an already existing transformation,
use orthoSymmetricLH()
.
Reference: http://www.songho.ca
width
- the distance between the right and left frustum edgesheight
- the distance between the top and bottom frustum edgeszNear
- near clipping plane distancezFar
- far clipping plane distanceorthoSymmetricLH(float, float, float, float)
public Matrix4x3f ortho2D(float left, float right, float bottom, float top, Matrix4x3f dest)
dest
.
This method is equivalent to calling ortho()
with
zNear=-1
and zFar=+1
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrtho()
.
Reference: http://www.songho.ca
ortho2D
in interface Matrix4x3fc
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgedest
- will hold the resultortho(float, float, float, float, float, float, Matrix4x3f)
,
setOrtho2D(float, float, float, float)
public Matrix4x3f ortho2D(float left, float right, float bottom, float top)
This method is equivalent to calling ortho()
with
zNear=-1
and zFar=+1
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrtho2D()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgeortho(float, float, float, float, float, float)
,
setOrtho2D(float, float, float, float)
public Matrix4x3f ortho2DLH(float left, float right, float bottom, float top, Matrix4x3f dest)
dest
.
This method is equivalent to calling orthoLH()
with
zNear=-1
and zFar=+1
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrthoLH()
.
Reference: http://www.songho.ca
ortho2DLH
in interface Matrix4x3fc
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgedest
- will hold the resultorthoLH(float, float, float, float, float, float, Matrix4x3f)
,
setOrtho2DLH(float, float, float, float)
public Matrix4x3f ortho2DLH(float left, float right, float bottom, float top)
This method is equivalent to calling orthoLH()
with
zNear=-1
and zFar=+1
.
If M
is this
matrix and O
the orthographic projection matrix,
then the new matrix will be M * O
. So when transforming a
vector v
with the new matrix by using M * O * v
, the
orthographic projection transformation will be applied first!
In order to set the matrix to an orthographic projection without post-multiplying it,
use setOrtho2DLH()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgeorthoLH(float, float, float, float, float, float)
,
setOrtho2DLH(float, float, float, float)
public Matrix4x3f setOrtho2D(float left, float right, float bottom, float top)
This method is equivalent to calling setOrtho()
with
zNear=-1
and zFar=+1
.
In order to apply the orthographic projection to an already existing transformation,
use ortho2D()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgesetOrtho(float, float, float, float, float, float)
,
ortho2D(float, float, float, float)
public Matrix4x3f setOrtho2DLH(float left, float right, float bottom, float top)
This method is equivalent to calling setOrthoLH()
with
zNear=-1
and zFar=+1
.
In order to apply the orthographic projection to an already existing transformation,
use ortho2DLH()
.
Reference: http://www.songho.ca
left
- the distance from the center to the left frustum edgeright
- the distance from the center to the right frustum edgebottom
- the distance from the center to the bottom frustum edgetop
- the distance from the center to the top frustum edgesetOrthoLH(float, float, float, float, float, float)
,
ortho2DLH(float, float, float, float)
public Matrix4x3f lookAlong(Vector3fc dir, Vector3fc up)
-z
point along dir
.
If M
is this
matrix and L
the lookalong rotation matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
, the
lookalong rotation transformation will be applied first!
This is equivalent to calling
lookAt
with eye = (0, 0, 0)
and center = dir
.
In order to set the matrix to a lookalong transformation without post-multiplying it,
use setLookAlong()
.
dir
- the direction in space to look alongup
- the direction of 'up'lookAlong(float, float, float, float, float, float)
,
lookAt(Vector3fc, Vector3fc, Vector3fc)
,
setLookAlong(Vector3fc, Vector3fc)
public Matrix4x3f lookAlong(Vector3fc dir, Vector3fc up, Matrix4x3f dest)
-z
point along dir
and store the result in dest
.
If M
is this
matrix and L
the lookalong rotation matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
, the
lookalong rotation transformation will be applied first!
This is equivalent to calling
lookAt
with eye = (0, 0, 0)
and center = dir
.
In order to set the matrix to a lookalong transformation without post-multiplying it,
use setLookAlong()
.
lookAlong
in interface Matrix4x3fc
dir
- the direction in space to look alongup
- the direction of 'up'dest
- will hold the resultlookAlong(float, float, float, float, float, float)
,
lookAt(Vector3fc, Vector3fc, Vector3fc)
,
setLookAlong(Vector3fc, Vector3fc)
public Matrix4x3f lookAlong(float dirX, float dirY, float dirZ, float upX, float upY, float upZ, Matrix4x3f dest)
-z
point along dir
and store the result in dest
.
If M
is this
matrix and L
the lookalong rotation matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
, the
lookalong rotation transformation will be applied first!
This is equivalent to calling
lookAt()
with eye = (0, 0, 0)
and center = dir
.
In order to set the matrix to a lookalong transformation without post-multiplying it,
use setLookAlong()
lookAlong
in interface Matrix4x3fc
dirX
- the x-coordinate of the direction to look alongdirY
- the y-coordinate of the direction to look alongdirZ
- the z-coordinate of the direction to look alongupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectordest
- will hold the resultlookAt(float, float, float, float, float, float, float, float, float)
,
setLookAlong(float, float, float, float, float, float)
public Matrix4x3f lookAlong(float dirX, float dirY, float dirZ, float upX, float upY, float upZ)
-z
point along dir
.
If M
is this
matrix and L
the lookalong rotation matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
, the
lookalong rotation transformation will be applied first!
This is equivalent to calling
lookAt()
with eye = (0, 0, 0)
and center = dir
.
In order to set the matrix to a lookalong transformation without post-multiplying it,
use setLookAlong()
dirX
- the x-coordinate of the direction to look alongdirY
- the y-coordinate of the direction to look alongdirZ
- the z-coordinate of the direction to look alongupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectorlookAt(float, float, float, float, float, float, float, float, float)
,
setLookAlong(float, float, float, float, float, float)
public Matrix4x3f setLookAlong(Vector3fc dir, Vector3fc up)
-z
point along dir
.
This is equivalent to calling
setLookAt()
with eye = (0, 0, 0)
and center = dir
.
In order to apply the lookalong transformation to any previous existing transformation,
use lookAlong(Vector3fc, Vector3fc)
.
dir
- the direction in space to look alongup
- the direction of 'up'setLookAlong(Vector3fc, Vector3fc)
,
lookAlong(Vector3fc, Vector3fc)
public Matrix4x3f setLookAlong(float dirX, float dirY, float dirZ, float upX, float upY, float upZ)
-z
point along dir
.
This is equivalent to calling
setLookAt()
with eye = (0, 0, 0)
and center = dir
.
In order to apply the lookalong transformation to any previous existing transformation,
use lookAlong()
dirX
- the x-coordinate of the direction to look alongdirY
- the y-coordinate of the direction to look alongdirZ
- the z-coordinate of the direction to look alongupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectorsetLookAlong(float, float, float, float, float, float)
,
lookAlong(float, float, float, float, float, float)
public Matrix4x3f setLookAt(Vector3fc eye, Vector3fc center, Vector3fc up)
-z
with center - eye
.
In order to not make use of vectors to specify eye
, center
and up
but use primitives,
like in the GLU function, use setLookAt()
instead.
In order to apply the lookat transformation to a previous existing transformation,
use lookAt()
.
eye
- the position of the cameracenter
- the point in space to look atup
- the direction of 'up'setLookAt(float, float, float, float, float, float, float, float, float)
,
lookAt(Vector3fc, Vector3fc, Vector3fc)
public Matrix4x3f setLookAt(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ)
-z
with center - eye
.
In order to apply the lookat transformation to a previous existing transformation,
use lookAt
.
eyeX
- the x-coordinate of the eye/camera locationeyeY
- the y-coordinate of the eye/camera locationeyeZ
- the z-coordinate of the eye/camera locationcenterX
- the x-coordinate of the point to look atcenterY
- the y-coordinate of the point to look atcenterZ
- the z-coordinate of the point to look atupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectorsetLookAt(Vector3fc, Vector3fc, Vector3fc)
,
lookAt(float, float, float, float, float, float, float, float, float)
public Matrix4x3f lookAt(Vector3fc eye, Vector3fc center, Vector3fc up, Matrix4x3f dest)
-z
with center - eye
and store the result in dest
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a lookat transformation without post-multiplying it,
use setLookAt(Vector3fc, Vector3fc, Vector3fc)
.
lookAt
in interface Matrix4x3fc
eye
- the position of the cameracenter
- the point in space to look atup
- the direction of 'up'dest
- will hold the resultlookAt(float, float, float, float, float, float, float, float, float)
,
setLookAlong(Vector3fc, Vector3fc)
public Matrix4x3f lookAt(Vector3fc eye, Vector3fc center, Vector3fc up)
-z
with center - eye
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a lookat transformation without post-multiplying it,
use setLookAt(Vector3fc, Vector3fc, Vector3fc)
.
eye
- the position of the cameracenter
- the point in space to look atup
- the direction of 'up'lookAt(float, float, float, float, float, float, float, float, float)
,
setLookAlong(Vector3fc, Vector3fc)
public Matrix4x3f lookAt(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ, Matrix4x3f dest)
-z
with center - eye
and store the result in dest
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a lookat transformation without post-multiplying it,
use setLookAt()
.
lookAt
in interface Matrix4x3fc
eyeX
- the x-coordinate of the eye/camera locationeyeY
- the y-coordinate of the eye/camera locationeyeZ
- the z-coordinate of the eye/camera locationcenterX
- the x-coordinate of the point to look atcenterY
- the y-coordinate of the point to look atcenterZ
- the z-coordinate of the point to look atupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectordest
- will hold the resultlookAt(Vector3fc, Vector3fc, Vector3fc)
,
setLookAt(float, float, float, float, float, float, float, float, float)
public Matrix4x3f lookAt(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ)
-z
with center - eye
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a lookat transformation without post-multiplying it,
use setLookAt()
.
eyeX
- the x-coordinate of the eye/camera locationeyeY
- the y-coordinate of the eye/camera locationeyeZ
- the z-coordinate of the eye/camera locationcenterX
- the x-coordinate of the point to look atcenterY
- the y-coordinate of the point to look atcenterZ
- the z-coordinate of the point to look atupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectorlookAt(Vector3fc, Vector3fc, Vector3fc)
,
setLookAt(float, float, float, float, float, float, float, float, float)
public Matrix4x3f setLookAtLH(Vector3fc eye, Vector3fc center, Vector3fc up)
+z
with center - eye
.
In order to not make use of vectors to specify eye
, center
and up
but use primitives,
like in the GLU function, use setLookAtLH()
instead.
In order to apply the lookat transformation to a previous existing transformation,
use lookAt()
.
eye
- the position of the cameracenter
- the point in space to look atup
- the direction of 'up'setLookAtLH(float, float, float, float, float, float, float, float, float)
,
lookAtLH(Vector3fc, Vector3fc, Vector3fc)
public Matrix4x3f setLookAtLH(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ)
+z
with center - eye
.
In order to apply the lookat transformation to a previous existing transformation,
use lookAtLH
.
eyeX
- the x-coordinate of the eye/camera locationeyeY
- the y-coordinate of the eye/camera locationeyeZ
- the z-coordinate of the eye/camera locationcenterX
- the x-coordinate of the point to look atcenterY
- the y-coordinate of the point to look atcenterZ
- the z-coordinate of the point to look atupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectorsetLookAtLH(Vector3fc, Vector3fc, Vector3fc)
,
lookAtLH(float, float, float, float, float, float, float, float, float)
public Matrix4x3f lookAtLH(Vector3fc eye, Vector3fc center, Vector3fc up, Matrix4x3f dest)
+z
with center - eye
and store the result in dest
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a lookat transformation without post-multiplying it,
use setLookAtLH(Vector3fc, Vector3fc, Vector3fc)
.
lookAtLH
in interface Matrix4x3fc
eye
- the position of the cameracenter
- the point in space to look atup
- the direction of 'up'dest
- will hold the resultlookAtLH(float, float, float, float, float, float, float, float, float)
public Matrix4x3f lookAtLH(Vector3fc eye, Vector3fc center, Vector3fc up)
+z
with center - eye
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a lookat transformation without post-multiplying it,
use setLookAtLH(Vector3fc, Vector3fc, Vector3fc)
.
eye
- the position of the cameracenter
- the point in space to look atup
- the direction of 'up'lookAtLH(float, float, float, float, float, float, float, float, float)
public Matrix4x3f lookAtLH(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ, Matrix4x3f dest)
+z
with center - eye
and store the result in dest
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a lookat transformation without post-multiplying it,
use setLookAtLH()
.
lookAtLH
in interface Matrix4x3fc
eyeX
- the x-coordinate of the eye/camera locationeyeY
- the y-coordinate of the eye/camera locationeyeZ
- the z-coordinate of the eye/camera locationcenterX
- the x-coordinate of the point to look atcenterY
- the y-coordinate of the point to look atcenterZ
- the z-coordinate of the point to look atupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectordest
- will hold the resultlookAtLH(Vector3fc, Vector3fc, Vector3fc)
,
setLookAtLH(float, float, float, float, float, float, float, float, float)
public Matrix4x3f lookAtLH(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ)
+z
with center - eye
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a lookat transformation without post-multiplying it,
use setLookAtLH()
.
eyeX
- the x-coordinate of the eye/camera locationeyeY
- the y-coordinate of the eye/camera locationeyeZ
- the z-coordinate of the eye/camera locationcenterX
- the x-coordinate of the point to look atcenterY
- the y-coordinate of the point to look atcenterZ
- the z-coordinate of the point to look atupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectorlookAtLH(Vector3fc, Vector3fc, Vector3fc)
,
setLookAtLH(float, float, float, float, float, float, float, float, float)
public Matrix4x3f rotate(Quaternionfc quat, Matrix4x3f dest)
Quaternionfc
to this matrix and store
the result in dest
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and Q
the rotation matrix obtained from the given quaternion,
then the new matrix will be M * Q
. So when transforming a
vector v
with the new matrix by using M * Q * v
,
the quaternion rotation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying,
use rotation(Quaternionfc)
.
Reference: http://en.wikipedia.org
rotate
in interface Matrix4x3fc
quat
- the Quaternionfc
dest
- will hold the resultrotation(Quaternionfc)
public Matrix4x3f rotate(Quaternionfc quat)
Quaternionfc
to this matrix.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and Q
the rotation matrix obtained from the given quaternion,
then the new matrix will be M * Q
. So when transforming a
vector v
with the new matrix by using M * Q * v
,
the quaternion rotation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying,
use rotation(Quaternionfc)
.
Reference: http://en.wikipedia.org
quat
- the Quaternionfc
rotation(Quaternionfc)
public Matrix4x3f rotateTranslation(Quaternionfc quat, Matrix4x3f dest)
Quaternionfc
to this matrix, which is assumed to only contain a translation, and store
the result in dest
.
This method assumes this
to only contain a translation.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and Q
the rotation matrix obtained from the given quaternion,
then the new matrix will be M * Q
. So when transforming a
vector v
with the new matrix by using M * Q * v
,
the quaternion rotation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying,
use rotation(Quaternionfc)
.
Reference: http://en.wikipedia.org
rotateTranslation
in interface Matrix4x3fc
quat
- the Quaternionfc
dest
- will hold the resultrotation(Quaternionfc)
public Matrix4x3f rotateLocal(Quaternionfc quat, Matrix4x3f dest)
Quaternionfc
to this matrix and store
the result in dest
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and Q
the rotation matrix obtained from the given quaternion,
then the new matrix will be Q * M
. So when transforming a
vector v
with the new matrix by using Q * M * v
,
the quaternion rotation will be applied last!
In order to set the matrix to a rotation transformation without pre-multiplying,
use rotation(Quaternionfc)
.
Reference: http://en.wikipedia.org
rotateLocal
in interface Matrix4x3fc
quat
- the Quaternionfc
dest
- will hold the resultrotation(Quaternionfc)
public Matrix4x3f rotateLocal(Quaternionfc quat)
Quaternionfc
to this matrix.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and Q
the rotation matrix obtained from the given quaternion,
then the new matrix will be Q * M
. So when transforming a
vector v
with the new matrix by using Q * M * v
,
the quaternion rotation will be applied last!
In order to set the matrix to a rotation transformation without pre-multiplying,
use rotation(Quaternionfc)
.
Reference: http://en.wikipedia.org
quat
- the Quaternionfc
rotation(Quaternionfc)
public Matrix4x3f rotate(AxisAngle4f axisAngle)
AxisAngle4f
, to this matrix.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and A
the rotation matrix obtained from the given AxisAngle4f
,
then the new matrix will be M * A
. So when transforming a
vector v
with the new matrix by using M * A * v
,
the AxisAngle4f
rotation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying,
use rotation(AxisAngle4f)
.
Reference: http://en.wikipedia.org
axisAngle
- the AxisAngle4f
(needs to be normalized
)rotate(float, float, float, float)
,
rotation(AxisAngle4f)
public Matrix4x3f rotate(AxisAngle4f axisAngle, Matrix4x3f dest)
AxisAngle4f
and store the result in dest
.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and A
the rotation matrix obtained from the given AxisAngle4f
,
then the new matrix will be M * A
. So when transforming a
vector v
with the new matrix by using M * A * v
,
the AxisAngle4f
rotation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying,
use rotation(AxisAngle4f)
.
Reference: http://en.wikipedia.org
rotate
in interface Matrix4x3fc
axisAngle
- the AxisAngle4f
(needs to be normalized
)dest
- will hold the resultrotate(float, float, float, float)
,
rotation(AxisAngle4f)
public Matrix4x3f rotate(float angle, Vector3fc axis)
The axis described by the axis
vector needs to be a unit vector.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and A
the rotation matrix obtained from the given axis-angle,
then the new matrix will be M * A
. So when transforming a
vector v
with the new matrix by using M * A * v
,
the axis-angle rotation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying,
use rotation(float, Vector3fc)
.
Reference: http://en.wikipedia.org
angle
- the angle in radiansaxis
- the rotation axis (needs to be normalized
)rotate(float, float, float, float)
,
rotation(float, Vector3fc)
public Matrix4x3f rotate(float angle, Vector3fc axis, Matrix4x3f dest)
dest
.
The axis described by the axis
vector needs to be a unit vector.
When used with a right-handed coordinate system, the produced rotation will rotate a vector counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin. When used with a left-handed coordinate system, the rotation is clockwise.
If M
is this
matrix and A
the rotation matrix obtained from the given axis-angle,
then the new matrix will be M * A
. So when transforming a
vector v
with the new matrix by using M * A * v
,
the axis-angle rotation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying,
use rotation(float, Vector3fc)
.
Reference: http://en.wikipedia.org
rotate
in interface Matrix4x3fc
angle
- the angle in radiansaxis
- the rotation axis (needs to be normalized
)dest
- will hold the resultrotate(float, float, float, float)
,
rotation(float, Vector3fc)
public Matrix4x3f reflect(float a, float b, float c, float d, Matrix4x3f dest)
Matrix4x3fc
dest
.
The vector (a, b, c) must be a unit vector.
If M
is this
matrix and R
the reflection matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
reflection will be applied first!
Reference: msdn.microsoft.com
reflect
in interface Matrix4x3fc
a
- the x factor in the plane equationb
- the y factor in the plane equationc
- the z factor in the plane equationd
- the constant in the plane equationdest
- will hold the resultpublic Matrix4x3f reflect(float a, float b, float c, float d)
The vector (a, b, c) must be a unit vector.
If M
is this
matrix and R
the reflection matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
reflection will be applied first!
Reference: msdn.microsoft.com
a
- the x factor in the plane equationb
- the y factor in the plane equationc
- the z factor in the plane equationd
- the constant in the plane equationpublic Matrix4x3f reflect(float nx, float ny, float nz, float px, float py, float pz)
If M
is this
matrix and R
the reflection matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
reflection will be applied first!
nx
- the x-coordinate of the plane normalny
- the y-coordinate of the plane normalnz
- the z-coordinate of the plane normalpx
- the x-coordinate of a point on the planepy
- the y-coordinate of a point on the planepz
- the z-coordinate of a point on the planepublic Matrix4x3f reflect(float nx, float ny, float nz, float px, float py, float pz, Matrix4x3f dest)
Matrix4x3fc
dest
.
If M
is this
matrix and R
the reflection matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
reflection will be applied first!
reflect
in interface Matrix4x3fc
nx
- the x-coordinate of the plane normalny
- the y-coordinate of the plane normalnz
- the z-coordinate of the plane normalpx
- the x-coordinate of a point on the planepy
- the y-coordinate of a point on the planepz
- the z-coordinate of a point on the planedest
- will hold the resultpublic Matrix4x3f reflect(Vector3fc normal, Vector3fc point)
If M
is this
matrix and R
the reflection matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
reflection will be applied first!
normal
- the plane normalpoint
- a point on the planepublic Matrix4x3f reflect(Quaternionfc orientation, Vector3fc point)
This method can be used to build a reflection transformation based on the orientation of a mirror object in the scene.
It is assumed that the default mirror plane's normal is (0, 0, 1). So, if the given Quaternionfc
is
the identity (does not apply any additional rotation), the reflection plane will be z=0, offset by the given point
.
If M
is this
matrix and R
the reflection matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
reflection will be applied first!
orientation
- the plane orientationpoint
- a point on the planepublic Matrix4x3f reflect(Quaternionfc orientation, Vector3fc point, Matrix4x3f dest)
Matrix4x3fc
dest
.
This method can be used to build a reflection transformation based on the orientation of a mirror object in the scene.
It is assumed that the default mirror plane's normal is (0, 0, 1). So, if the given Quaternionfc
is
the identity (does not apply any additional rotation), the reflection plane will be z=0, offset by the given point
.
If M
is this
matrix and R
the reflection matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
reflection will be applied first!
reflect
in interface Matrix4x3fc
orientation
- the plane orientation relative to an implied normal vector of (0, 0, 1)point
- a point on the planedest
- will hold the resultpublic Matrix4x3f reflect(Vector3fc normal, Vector3fc point, Matrix4x3f dest)
Matrix4x3fc
dest
.
If M
is this
matrix and R
the reflection matrix,
then the new matrix will be M * R
. So when transforming a
vector v
with the new matrix by using M * R * v
, the
reflection will be applied first!
reflect
in interface Matrix4x3fc
normal
- the plane normalpoint
- a point on the planedest
- will hold the resultpublic Matrix4x3f reflection(float a, float b, float c, float d)
The vector (a, b, c) must be a unit vector.
Reference: msdn.microsoft.com
a
- the x factor in the plane equationb
- the y factor in the plane equationc
- the z factor in the plane equationd
- the constant in the plane equationpublic Matrix4x3f reflection(float nx, float ny, float nz, float px, float py, float pz)
nx
- the x-coordinate of the plane normalny
- the y-coordinate of the plane normalnz
- the z-coordinate of the plane normalpx
- the x-coordinate of a point on the planepy
- the y-coordinate of a point on the planepz
- the z-coordinate of a point on the planepublic Matrix4x3f reflection(Vector3fc normal, Vector3fc point)
normal
- the plane normalpoint
- a point on the planepublic Matrix4x3f reflection(Quaternionfc orientation, Vector3fc point)
This method can be used to build a reflection transformation based on the orientation of a mirror object in the scene.
It is assumed that the default mirror plane's normal is (0, 0, 1). So, if the given Quaternionfc
is
the identity (does not apply any additional rotation), the reflection plane will be z=0, offset by the given point
.
orientation
- the plane orientationpoint
- a point on the planepublic Vector4f getRow(int row, Vector4f dest) throws IndexOutOfBoundsException
Matrix4x3fc
row
index, starting with 0
.getRow
in interface Matrix4x3fc
row
- the row index in [0..2]dest
- will hold the row componentsIndexOutOfBoundsException
- if row
is not in [0..2]public Matrix4x3f setRow(int row, Vector4fc src) throws IndexOutOfBoundsException
row
index, starting with 0
.row
- the row index in [0..2]src
- the row components to setIndexOutOfBoundsException
- if row
is not in [0..2]public Vector3f getColumn(int column, Vector3f dest) throws IndexOutOfBoundsException
Matrix4x3fc
column
index, starting with 0
.getColumn
in interface Matrix4x3fc
column
- the column index in [0..2]dest
- will hold the column componentsIndexOutOfBoundsException
- if column
is not in [0..2]public Matrix4x3f setColumn(int column, Vector3fc src) throws IndexOutOfBoundsException
column
index, starting with 0
.column
- the column index in [0..3]src
- the column components to setIndexOutOfBoundsException
- if column
is not in [0..3]public Matrix4x3f normal()
this
and store it into the left 3x3 submatrix of this
.
All other values of this
will be set to identity
.
The normal matrix of m is the transpose of the inverse of m.
Please note that, if this
is an orthogonal matrix or a matrix whose columns are orthogonal vectors,
then this method need not be invoked, since in that case this
itself is its normal matrix.
In that case, use set3x3(Matrix4x3fc)
to set a given Matrix4x3f to only the left 3x3 submatrix
of this matrix.
set3x3(Matrix4x3fc)
public Matrix4x3f normal(Matrix4x3f dest)
this
and store it into the left 3x3 submatrix of dest
.
All other values of dest
will be set to identity
.
The normal matrix of m is the transpose of the inverse of m.
Please note that, if this
is an orthogonal matrix or a matrix whose columns are orthogonal vectors,
then this method need not be invoked, since in that case this
itself is its normal matrix.
In that case, use set3x3(Matrix4x3fc)
to set a given Matrix4x3f to only the left 3x3 submatrix
of this matrix.
normal
in interface Matrix4x3fc
dest
- will hold the resultset3x3(Matrix4x3fc)
public Matrix3f normal(Matrix3f dest)
Matrix4x3fc
this
and store it into dest
.
The normal matrix of m is the transpose of the inverse of m.
normal
in interface Matrix4x3fc
dest
- will hold the resultpublic Matrix4x3f normalize3x3()
The resulting matrix will map unit vectors to unit vectors, though a pair of orthogonal input unit vectors need not be mapped to a pair of orthogonal output vectors if the original matrix was not orthogonal itself (i.e. had skewing).
public Matrix4x3f normalize3x3(Matrix4x3f dest)
Matrix4x3fc
dest
.
The resulting matrix will map unit vectors to unit vectors, though a pair of orthogonal input unit vectors need not be mapped to a pair of orthogonal output vectors if the original matrix was not orthogonal itself (i.e. had skewing).
normalize3x3
in interface Matrix4x3fc
dest
- will hold the resultpublic Matrix3f normalize3x3(Matrix3f dest)
Matrix4x3fc
dest
.
The resulting matrix will map unit vectors to unit vectors, though a pair of orthogonal input unit vectors need not be mapped to a pair of orthogonal output vectors if the original matrix was not orthogonal itself (i.e. had skewing).
normalize3x3
in interface Matrix4x3fc
dest
- will hold the resultpublic Vector3f positiveZ(Vector3f dir)
Matrix4x3fc
this
matrix is applied.
This method uses the rotation component of the left 3x3 submatrix to obtain the direction
that is transformed to +Z by this
matrix.
This method is equivalent to the following code:
Matrix4x3f inv = new Matrix4x3f(this).invert(); inv.transformDirection(dir.set(0, 0, 1)).normalize();If
this
is already an orthogonal matrix, then consider using Matrix4x3fc.normalizedPositiveZ(Vector3f)
instead.
Reference: http://www.euclideanspace.com
positiveZ
in interface Matrix4x3fc
dir
- will hold the direction of +Zpublic Vector3f normalizedPositiveZ(Vector3f dir)
Matrix4x3fc
this
orthogonal matrix is applied.
This method only produces correct results if this
is an orthogonal matrix.
This method uses the rotation component of the left 3x3 submatrix to obtain the direction
that is transformed to +Z by this
matrix.
This method is equivalent to the following code:
Matrix4x3f inv = new Matrix4x3f(this).transpose(); inv.transformDirection(dir.set(0, 0, 1)).normalize();
Reference: http://www.euclideanspace.com
normalizedPositiveZ
in interface Matrix4x3fc
dir
- will hold the direction of +Zpublic Vector3f positiveX(Vector3f dir)
Matrix4x3fc
this
matrix is applied.
This method uses the rotation component of the left 3x3 submatrix to obtain the direction
that is transformed to +X by this
matrix.
This method is equivalent to the following code:
Matrix4x3f inv = new Matrix4x3f(this).invert(); inv.transformDirection(dir.set(1, 0, 0)).normalize();If
this
is already an orthogonal matrix, then consider using Matrix4x3fc.normalizedPositiveX(Vector3f)
instead.
Reference: http://www.euclideanspace.com
positiveX
in interface Matrix4x3fc
dir
- will hold the direction of +Xpublic Vector3f normalizedPositiveX(Vector3f dir)
Matrix4x3fc
this
orthogonal matrix is applied.
This method only produces correct results if this
is an orthogonal matrix.
This method uses the rotation component of the left 3x3 submatrix to obtain the direction
that is transformed to +X by this
matrix.
This method is equivalent to the following code:
Matrix4x3f inv = new Matrix4x3f(this).transpose(); inv.transformDirection(dir.set(1, 0, 0)).normalize();
Reference: http://www.euclideanspace.com
normalizedPositiveX
in interface Matrix4x3fc
dir
- will hold the direction of +Xpublic Vector3f positiveY(Vector3f dir)
Matrix4x3fc
this
matrix is applied.
This method uses the rotation component of the left 3x3 submatrix to obtain the direction
that is transformed to +Y by this
matrix.
This method is equivalent to the following code:
Matrix4x3f inv = new Matrix4x3f(this).invert(); inv.transformDirection(dir.set(0, 1, 0)).normalize();If
this
is already an orthogonal matrix, then consider using Matrix4x3fc.normalizedPositiveY(Vector3f)
instead.
Reference: http://www.euclideanspace.com
positiveY
in interface Matrix4x3fc
dir
- will hold the direction of +Ypublic Vector3f normalizedPositiveY(Vector3f dir)
Matrix4x3fc
this
orthogonal matrix is applied.
This method only produces correct results if this
is an orthogonal matrix.
This method uses the rotation component of the left 3x3 submatrix to obtain the direction
that is transformed to +Y by this
matrix.
This method is equivalent to the following code:
Matrix4x3f inv = new Matrix4x3f(this).transpose(); inv.transformDirection(dir.set(0, 1, 0)).normalize();
Reference: http://www.euclideanspace.com
normalizedPositiveY
in interface Matrix4x3fc
dir
- will hold the direction of +Ypublic Vector3f origin(Vector3f origin)
Matrix4x3fc
this
matrix.
This can be used to get the position of the "camera" from a given view transformation matrix.
This method is equivalent to the following code:
Matrix4x3f inv = new Matrix4x3f(this).invert(); inv.transformPosition(origin.set(0, 0, 0));
origin
in interface Matrix4x3fc
origin
- will hold the position transformed to the originpublic Matrix4x3f shadow(Vector4fc light, float a, float b, float c, float d)
light
.
If light.w is 0.0 the light is being treated as a directional light; if it is 1.0 it is a point light.
If M
is this
matrix and S
the shadow matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
reflection will be applied first!
Reference: ftp.sgi.com
light
- the light's vectora
- the x factor in the plane equationb
- the y factor in the plane equationc
- the z factor in the plane equationd
- the constant in the plane equationpublic Matrix4x3f shadow(Vector4fc light, float a, float b, float c, float d, Matrix4x3f dest)
Matrix4x3fc
light
and store the result in dest
.
If light.w is 0.0 the light is being treated as a directional light; if it is 1.0 it is a point light.
If M
is this
matrix and S
the shadow matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
reflection will be applied first!
Reference: ftp.sgi.com
shadow
in interface Matrix4x3fc
light
- the light's vectora
- the x factor in the plane equationb
- the y factor in the plane equationc
- the z factor in the plane equationd
- the constant in the plane equationdest
- will hold the resultpublic Matrix4x3f shadow(float lightX, float lightY, float lightZ, float lightW, float a, float b, float c, float d)
If lightW
is 0.0 the light is being treated as a directional light; if it is 1.0 it is a point light.
If M
is this
matrix and S
the shadow matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
reflection will be applied first!
Reference: ftp.sgi.com
lightX
- the x-component of the light's vectorlightY
- the y-component of the light's vectorlightZ
- the z-component of the light's vectorlightW
- the w-component of the light's vectora
- the x factor in the plane equationb
- the y factor in the plane equationc
- the z factor in the plane equationd
- the constant in the plane equationpublic Matrix4x3f shadow(float lightX, float lightY, float lightZ, float lightW, float a, float b, float c, float d, Matrix4x3f dest)
Matrix4x3fc
dest
.
If lightW
is 0.0 the light is being treated as a directional light; if it is 1.0 it is a point light.
If M
is this
matrix and S
the shadow matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
reflection will be applied first!
Reference: ftp.sgi.com
shadow
in interface Matrix4x3fc
lightX
- the x-component of the light's vectorlightY
- the y-component of the light's vectorlightZ
- the z-component of the light's vectorlightW
- the w-component of the light's vectora
- the x factor in the plane equationb
- the y factor in the plane equationc
- the z factor in the plane equationd
- the constant in the plane equationdest
- will hold the resultpublic Matrix4x3f shadow(Vector4fc light, Matrix4x3fc planeTransform, Matrix4x3f dest)
Matrix4x3fc
light
and store the result in dest
.
Before the shadow projection is applied, the plane is transformed via the specified planeTransformation
.
If light.w is 0.0 the light is being treated as a directional light; if it is 1.0 it is a point light.
If M
is this
matrix and S
the shadow matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
reflection will be applied first!
shadow
in interface Matrix4x3fc
light
- the light's vectorplaneTransform
- the transformation to transform the implied plane y = 0 before applying the projectiondest
- will hold the resultpublic Matrix4x3f shadow(Vector4fc light, Matrix4x3fc planeTransform)
light
.
Before the shadow projection is applied, the plane is transformed via the specified planeTransformation
.
If light.w is 0.0 the light is being treated as a directional light; if it is 1.0 it is a point light.
If M
is this
matrix and S
the shadow matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
reflection will be applied first!
light
- the light's vectorplaneTransform
- the transformation to transform the implied plane y = 0 before applying the projectionpublic Matrix4x3f shadow(float lightX, float lightY, float lightZ, float lightW, Matrix4x3fc planeTransform, Matrix4x3f dest)
Matrix4x3fc
dest
.
Before the shadow projection is applied, the plane is transformed via the specified planeTransformation
.
If lightW
is 0.0 the light is being treated as a directional light; if it is 1.0 it is a point light.
If M
is this
matrix and S
the shadow matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
reflection will be applied first!
shadow
in interface Matrix4x3fc
lightX
- the x-component of the light vectorlightY
- the y-component of the light vectorlightZ
- the z-component of the light vectorlightW
- the w-component of the light vectorplaneTransform
- the transformation to transform the implied plane y = 0 before applying the projectiondest
- will hold the resultpublic Matrix4x3f shadow(float lightX, float lightY, float lightZ, float lightW, Matrix4x3f planeTransform)
Before the shadow projection is applied, the plane is transformed via the specified planeTransformation
.
If lightW
is 0.0 the light is being treated as a directional light; if it is 1.0 it is a point light.
If M
is this
matrix and S
the shadow matrix,
then the new matrix will be M * S
. So when transforming a
vector v
with the new matrix by using M * S * v
, the
reflection will be applied first!
lightX
- the x-component of the light vectorlightY
- the y-component of the light vectorlightZ
- the z-component of the light vectorlightW
- the w-component of the light vectorplaneTransform
- the transformation to transform the implied plane y = 0 before applying the projectionpublic Matrix4x3f billboardCylindrical(Vector3fc objPos, Vector3fc targetPos, Vector3fc up)
objPos
towards
a target position at targetPos
while constraining a cylindrical rotation around the given up
vector.
This method can be used to create the complete model transformation for a given object, including the translation of the object to
its position objPos
.
objPos
- the position of the object to rotate towards targetPos
targetPos
- the position of the target (for example the camera) towards which to rotate the objectup
- the rotation axis (must be normalized
)public Matrix4x3f billboardSpherical(Vector3fc objPos, Vector3fc targetPos, Vector3fc up)
objPos
towards
a target position at targetPos
.
This method can be used to create the complete model transformation for a given object, including the translation of the object to
its position objPos
.
If preserving an up vector is not necessary when rotating the +Z axis, then a shortest arc rotation can be obtained
using billboardSpherical(Vector3fc, Vector3fc)
.
objPos
- the position of the object to rotate towards targetPos
targetPos
- the position of the target (for example the camera) towards which to rotate the objectup
- the up axis used to orient the objectbillboardSpherical(Vector3fc, Vector3fc)
public Matrix4x3f billboardSpherical(Vector3fc objPos, Vector3fc targetPos)
objPos
towards
a target position at targetPos
using a shortest arc rotation by not preserving any up vector of the object.
This method can be used to create the complete model transformation for a given object, including the translation of the object to
its position objPos
.
In order to specify an up vector which needs to be maintained when rotating the +Z axis of the object,
use billboardSpherical(Vector3fc, Vector3fc, Vector3fc)
.
objPos
- the position of the object to rotate towards targetPos
targetPos
- the position of the target (for example the camera) towards which to rotate the objectbillboardSpherical(Vector3fc, Vector3fc, Vector3fc)
public Matrix4x3f pick(float x, float y, float width, float height, int[] viewport, Matrix4x3f dest)
Matrix4x3fc
dest
.pick
in interface Matrix4x3fc
x
- the x coordinate of the picking region center in window coordinatesy
- the y coordinate of the picking region center in window coordinateswidth
- the width of the picking region in window coordinatesheight
- the height of the picking region in window coordinatesviewport
- the viewport described by [x, y, width, height]dest
- the destination matrix, which will hold the resultpublic Matrix4x3f pick(float x, float y, float width, float height, int[] viewport)
x
- the x coordinate of the picking region center in window coordinatesy
- the y coordinate of the picking region center in window coordinateswidth
- the width of the picking region in window coordinatesheight
- the height of the picking region in window coordinatesviewport
- the viewport described by [x, y, width, height]public Matrix4x3f swap(Matrix4x3f other)
this
matrix with the given other
matrix.other
- the other matrix to exchange the values withpublic Matrix4x3f arcball(float radius, float centerX, float centerY, float centerZ, float angleX, float angleY, Matrix4x3f dest)
Matrix4x3fc
radius
and center (centerX, centerY, centerZ)
position of the arcball and the specified X and Y rotation angles, and store the result in dest
.
This method is equivalent to calling: translate(0, 0, -radius).rotateX(angleX).rotateY(angleY).translate(-centerX, -centerY, -centerZ)
arcball
in interface Matrix4x3fc
radius
- the arcball radiuscenterX
- the x coordinate of the center position of the arcballcenterY
- the y coordinate of the center position of the arcballcenterZ
- the z coordinate of the center position of the arcballangleX
- the rotation angle around the X axis in radiansangleY
- the rotation angle around the Y axis in radiansdest
- will hold the resultpublic Matrix4x3f arcball(float radius, Vector3fc center, float angleX, float angleY, Matrix4x3f dest)
Matrix4x3fc
radius
and center
position of the arcball and the specified X and Y rotation angles, and store the result in dest
.
This method is equivalent to calling: translate(0, 0, -radius).rotateX(angleX).rotateY(angleY).translate(-center.x, -center.y, -center.z)
arcball
in interface Matrix4x3fc
radius
- the arcball radiuscenter
- the center position of the arcballangleX
- the rotation angle around the X axis in radiansangleY
- the rotation angle around the Y axis in radiansdest
- will hold the resultpublic Matrix4x3f arcball(float radius, float centerX, float centerY, float centerZ, float angleX, float angleY)
radius
and center (centerX, centerY, centerZ)
position of the arcball and the specified X and Y rotation angles.
This method is equivalent to calling: translate(0, 0, -radius).rotateX(angleX).rotateY(angleY).translate(-centerX, -centerY, -centerZ)
radius
- the arcball radiuscenterX
- the x coordinate of the center position of the arcballcenterY
- the y coordinate of the center position of the arcballcenterZ
- the z coordinate of the center position of the arcballangleX
- the rotation angle around the X axis in radiansangleY
- the rotation angle around the Y axis in radianspublic Matrix4x3f arcball(float radius, Vector3fc center, float angleX, float angleY)
radius
and center
position of the arcball and the specified X and Y rotation angles.
This method is equivalent to calling: translate(0, 0, -radius).rotateX(angleX).rotateY(angleY).translate(-center.x, -center.y, -center.z)
radius
- the arcball radiuscenter
- the center position of the arcballangleX
- the rotation angle around the X axis in radiansangleY
- the rotation angle around the Y axis in radianspublic Matrix4x3f transformAab(float minX, float minY, float minZ, float maxX, float maxY, float maxZ, Vector3f outMin, Vector3f outMax)
Matrix4x3fc
this
matrix and compute the axis-aligned box of the result whose minimum corner is stored in outMin
and maximum corner stored in outMax
.
Reference: http://dev.theomader.com
transformAab
in interface Matrix4x3fc
minX
- the x coordinate of the minimum corner of the axis-aligned boxminY
- the y coordinate of the minimum corner of the axis-aligned boxminZ
- the z coordinate of the minimum corner of the axis-aligned boxmaxX
- the x coordinate of the maximum corner of the axis-aligned boxmaxY
- the y coordinate of the maximum corner of the axis-aligned boxmaxZ
- the y coordinate of the maximum corner of the axis-aligned boxoutMin
- will hold the minimum corner of the resulting axis-aligned boxoutMax
- will hold the maximum corner of the resulting axis-aligned boxpublic Matrix4x3f transformAab(Vector3fc min, Vector3fc max, Vector3f outMin, Vector3f outMax)
Matrix4x3fc
min
and maximum corner max
by this
matrix and compute the axis-aligned box of the result whose minimum corner is stored in outMin
and maximum corner stored in outMax
.transformAab
in interface Matrix4x3fc
min
- the minimum corner of the axis-aligned boxmax
- the maximum corner of the axis-aligned boxoutMin
- will hold the minimum corner of the resulting axis-aligned boxoutMax
- will hold the maximum corner of the resulting axis-aligned boxpublic Matrix4x3f lerp(Matrix4x3fc other, float t)
this
and other
using the given interpolation factor t
and store the result in this
.
If t
is 0.0 then the result is this
. If the interpolation factor is 1.0
then the result is other
.
other
- the other matrixt
- the interpolation factor between 0.0 and 1.0public Matrix4x3f lerp(Matrix4x3fc other, float t, Matrix4x3f dest)
Matrix4x3fc
this
and other
using the given interpolation factor t
and store the result in dest
.
If t
is 0.0 then the result is this
. If the interpolation factor is 1.0
then the result is other
.
lerp
in interface Matrix4x3fc
other
- the other matrixt
- the interpolation factor between 0.0 and 1.0dest
- will hold the resultpublic Matrix4x3f rotateTowards(Vector3fc dir, Vector3fc up, Matrix4x3f dest)
+Z
axis with dir
and store the result in dest
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying it,
use rotationTowards()
.
This method is equivalent to calling: mul(new Matrix4x3f().lookAt(new Vector3f(), new Vector3f(dir).negate(), up).invert(), dest)
rotateTowards
in interface Matrix4x3fc
dir
- the direction to rotate towardsup
- the up vectordest
- will hold the resultrotateTowards(float, float, float, float, float, float, Matrix4x3f)
,
rotationTowards(Vector3fc, Vector3fc)
public Matrix4x3f rotateTowards(Vector3fc dir, Vector3fc up)
+Z
axis with dir
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying it,
use rotationTowards()
.
This method is equivalent to calling: mul(new Matrix4x3f().lookAt(new Vector3f(), new Vector3f(dir).negate(), up).invert())
dir
- the direction to orient towardsup
- the up vectorrotateTowards(float, float, float, float, float, float)
,
rotationTowards(Vector3fc, Vector3fc)
public Matrix4x3f rotateTowards(float dirX, float dirY, float dirZ, float upX, float upY, float upZ)
+Z
axis with (dirX, dirY, dirZ)
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying it,
use rotationTowards()
.
This method is equivalent to calling: mul(new Matrix4x3f().lookAt(0, 0, 0, -dirX, -dirY, -dirZ, upX, upY, upZ).invert())
dirX
- the x-coordinate of the direction to rotate towardsdirY
- the y-coordinate of the direction to rotate towardsdirZ
- the z-coordinate of the direction to rotate towardsupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectorrotateTowards(Vector3fc, Vector3fc)
,
rotationTowards(float, float, float, float, float, float)
public Matrix4x3f rotateTowards(float dirX, float dirY, float dirZ, float upX, float upY, float upZ, Matrix4x3f dest)
+Z
axis with (dirX, dirY, dirZ)
and store the result in dest
.
If M
is this
matrix and L
the lookat matrix,
then the new matrix will be M * L
. So when transforming a
vector v
with the new matrix by using M * L * v
,
the lookat transformation will be applied first!
In order to set the matrix to a rotation transformation without post-multiplying it,
use rotationTowards()
.
This method is equivalent to calling: mul(new Matrix4x3f().lookAt(0, 0, 0, -dirX, -dirY, -dirZ, upX, upY, upZ).invert(), dest)
rotateTowards
in interface Matrix4x3fc
dirX
- the x-coordinate of the direction to rotate towardsdirY
- the y-coordinate of the direction to rotate towardsdirZ
- the z-coordinate of the direction to rotate towardsupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectordest
- will hold the resultrotateTowards(Vector3fc, Vector3fc)
,
rotationTowards(float, float, float, float, float, float)
public Matrix4x3f rotationTowards(Vector3fc dir, Vector3fc up)
-z
axis with dir
.
In order to apply the rotation transformation to a previous existing transformation,
use rotateTowards
.
This method is equivalent to calling: setLookAt(new Vector3f(), new Vector3f(dir).negate(), up).invert()
dir
- the direction to orient the local -z axis towardsup
- the up vectorrotationTowards(Vector3fc, Vector3fc)
,
rotateTowards(float, float, float, float, float, float)
public Matrix4x3f rotationTowards(float dirX, float dirY, float dirZ, float upX, float upY, float upZ)
-z
axis with (dirX, dirY, dirZ)
.
In order to apply the rotation transformation to a previous existing transformation,
use rotateTowards
.
This method is equivalent to calling: setLookAt(0, 0, 0, -dirX, -dirY, -dirZ, upX, upY, upZ).invert()
dirX
- the x-coordinate of the direction to rotate towardsdirY
- the y-coordinate of the direction to rotate towardsdirZ
- the z-coordinate of the direction to rotate towardsupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectorrotateTowards(Vector3fc, Vector3fc)
,
rotationTowards(float, float, float, float, float, float)
public Matrix4x3f translationRotateTowards(Vector3fc pos, Vector3fc dir, Vector3fc up)
pos
and aligns the local -z
axis with dir
.
This method is equivalent to calling: translation(pos).rotateTowards(dir, up)
pos
- the position to translate todir
- the direction to rotate towardsup
- the up vectortranslation(Vector3fc)
,
rotateTowards(Vector3fc, Vector3fc)
public Matrix4x3f translationRotateTowards(float posX, float posY, float posZ, float dirX, float dirY, float dirZ, float upX, float upY, float upZ)
(posX, posY, posZ)
and aligns the local -z
axis with (dirX, dirY, dirZ)
.
This method is equivalent to calling: translation(posX, posY, posZ).rotateTowards(dirX, dirY, dirZ, upX, upY, upZ)
posX
- the x-coordinate of the position to translate toposY
- the y-coordinate of the position to translate toposZ
- the z-coordinate of the position to translate todirX
- the x-coordinate of the direction to rotate towardsdirY
- the y-coordinate of the direction to rotate towardsdirZ
- the z-coordinate of the direction to rotate towardsupX
- the x-coordinate of the up vectorupY
- the y-coordinate of the up vectorupZ
- the z-coordinate of the up vectortranslation(float, float, float)
,
rotateTowards(float, float, float, float, float, float)
public Vector3f getEulerAnglesZYX(Vector3f dest)
this
and store the extracted Euler angles in dest
.
This method assumes that the upper left of this
only represents a rotation without scaling.
Note that the returned Euler angles must be applied in the order Z * Y * X to obtain the identical matrix.
This means that calling rotateZYX(float, float, float)
using the obtained Euler angles will yield
the same rotation as the original matrix from which the Euler angles were obtained, so in the below code the matrix
m2 should be identical to m (disregarding possible floating-point inaccuracies).
Matrix4x3f m = ...; // <- matrix only representing rotation Matrix4x3f n = new Matrix4x3f(); n.rotateZYX(m.getEulerAnglesZYX(new Vector3f()));
Reference: http://nghiaho.com/
getEulerAnglesZYX
in interface Matrix4x3fc
dest
- will hold the extracted Euler anglespublic Matrix4x3fc toImmutable()
Matrix4x3f
.
The observable state of the returned object is the same as that of this
, but casting
the returned object to Matrix4x3f will not be possible.
This method allocates a new instance of a class implementing Matrix4x3fc on every call.
Copyright © 2015–2016 JOML. All rights reserved.