public class Matrix3x2f extends Object implements Matrix3x2fc, Externalizable
m00 m10 m20
m01 m11 m21
| Modifier and Type | Field and Description |
|---|---|
float |
m00 |
float |
m01 |
float |
m10 |
float |
m11 |
float |
m20 |
float |
m21 |
| Constructor and Description |
|---|
Matrix3x2f()
Create a new
Matrix3x2f and set it to identity. |
Matrix3x2f(FloatBuffer buffer)
Create a new
Matrix3x2f by reading its 6 float components from the given FloatBuffer
at the buffer's current position. |
Matrix3x2f(float m00,
float m01,
float m10,
float m11,
float m20,
float m21)
Create a new 3x2 matrix using the supplied float values.
|
Matrix3x2f(Matrix2fc mat)
Create a new
Matrix3x2f by setting its left 2x2 submatrix to the values of the given Matrix2fc
and the rest to identity. |
Matrix3x2f(Matrix3x2fc mat)
Create a new
Matrix3x2f and make it a copy of the given matrix. |
| Modifier and Type | Method and Description |
|---|---|
Matrix3x2f |
_m00(float m00)
Set the value of the matrix element at column 0 and row 0.
|
Matrix3x2f |
_m01(float m01)
Set the value of the matrix element at column 0 and row 1.
|
Matrix3x2f |
_m10(float m10)
Set the value of the matrix element at column 1 and row 0.
|
Matrix3x2f |
_m11(float m11)
Set the value of the matrix element at column 1 and row 1.
|
Matrix3x2f |
_m20(float m20)
Set the value of the matrix element at column 2 and row 0.
|
Matrix3x2f |
_m21(float m21)
Set the value of the matrix element at column 2 and row 1.
|
float |
determinant()
Return the determinant of this matrix.
|
boolean |
equals(Matrix3x2fc m,
float delta)
Compare the matrix elements of
this matrix with the given matrix using the given delta
and return whether all of them are equal within a maximum difference of delta. |
boolean |
equals(Object obj) |
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. |
Matrix3x2f |
get(Matrix3x2f dest)
Get the current values of
this matrix and store them into
dest. |
ByteBuffer |
get3x3(ByteBuffer buffer)
Store this matrix as an equivalent 3x3 matrix in column-major order into the supplied
ByteBuffer at the current
buffer position. |
float[] |
get3x3(float[] arr)
Store this matrix as an equivalent 3x3 matrix in column-major order into the supplied float array.
|
float[] |
get3x3(float[] arr,
int offset)
Store this matrix as an equivalent 3x3 matrix in column-major order into the supplied float array at the given offset.
|
FloatBuffer |
get3x3(FloatBuffer buffer)
Store this matrix as an equivalent 3x3 matrix in column-major order into the supplied
FloatBuffer at the current
buffer position. |
ByteBuffer |
get3x3(int index,
ByteBuffer buffer)
Store this matrix as an equivalent 3x3 matrix in column-major order into the supplied
ByteBuffer starting at the specified
absolute buffer position/index. |
FloatBuffer |
get3x3(int index,
FloatBuffer buffer)
Store this matrix as an equivalent 3x3 matrix in column-major order into the supplied
FloatBuffer starting at the specified
absolute buffer position/index. |
ByteBuffer |
get4x4(ByteBuffer buffer)
Store this matrix as an equivalent 4x4 matrix in column-major order into the supplied
ByteBuffer at the current
buffer position. |
float[] |
get4x4(float[] arr)
Store this matrix as an equivalent 4x4 matrix in column-major order into the supplied float array.
|
float[] |
get4x4(float[] arr,
int offset)
Store this matrix as an equivalent 4x4 matrix in column-major order into the supplied float array at the given offset.
|
FloatBuffer |
get4x4(FloatBuffer buffer)
Store this matrix as an equivalent 4x4 matrix in column-major order into the supplied
FloatBuffer at the current
buffer position. |
ByteBuffer |
get4x4(int index,
ByteBuffer buffer)
Store this matrix as an equivalent 4x4 matrix in column-major order into the supplied
ByteBuffer starting at the specified
absolute buffer position/index. |
FloatBuffer |
get4x4(int index,
FloatBuffer buffer)
Store this matrix as an equivalent 4x4 matrix in column-major order into the supplied
FloatBuffer starting at the specified
absolute buffer position/index. |
int |
hashCode() |
Matrix3x2f |
identity()
Set this matrix to the identity.
|
Matrix3x2f |
invert()
Invert this matrix by assuming a third row in this matrix of
(0, 0, 1). |
Matrix3x2f |
invert(Matrix3x2f dest)
Invert the
this matrix by assuming a third row in this matrix of (0, 0, 1)
and store the result in dest. |
float |
m00()
Return 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.
|
float |
m10()
Return 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.
|
float |
m20()
Return 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.
|
Matrix3x2f |
mul(Matrix3x2fc right)
Multiply this matrix by the supplied
right matrix by assuming a third row in
both matrices of (0, 0, 1). |
Matrix3x2f |
mul(Matrix3x2fc right,
Matrix3x2f dest)
Multiply this matrix by the supplied
right matrix by assuming a third row in
both matrices of (0, 0, 1) and store the result in dest. |
Matrix3x2f |
mulLocal(Matrix3x2fc left)
Pre-multiply this matrix by the supplied
left matrix and store the result in this. |
Matrix3x2f |
mulLocal(Matrix3x2fc left,
Matrix3x2f dest)
Pre-multiply this matrix by the supplied
left matrix and store the result in dest. |
Vector2f |
normalizedPositiveX(Vector2f dir)
Obtain the direction of
+X before the transformation represented by this orthogonal matrix is applied. |
Vector2f |
normalizedPositiveY(Vector2f dir)
Obtain the direction of
+Y before the transformation represented by this orthogonal matrix is applied. |
Vector2f |
origin(Vector2f origin)
Obtain the position that gets transformed to the origin by
this matrix. |
Vector2f |
positiveX(Vector2f dir)
Obtain the direction of
+X before the transformation represented by this matrix is applied. |
Vector2f |
positiveY(Vector2f dir)
Obtain the direction of
+Y before the transformation represented by this matrix is applied. |
void |
readExternal(ObjectInput in) |
Matrix3x2f |
rotate(float ang)
Apply a rotation transformation to this matrix by rotating the given amount of radians.
|
Matrix3x2f |
rotate(float ang,
Matrix3x2f dest)
Apply a rotation transformation to this matrix by rotating the given amount of radians and store the result in
dest. |
Matrix3x2f |
rotateAbout(float ang,
float x,
float y)
Apply a rotation transformation to this matrix by rotating the given amount of radians about
the specified rotation center
(x, y). |
Matrix3x2f |
rotateAbout(float ang,
float x,
float y,
Matrix3x2f dest)
Apply a rotation transformation to this matrix by rotating the given amount of radians about
the specified rotation center
(x, y) and store the result in dest. |
Matrix3x2f |
rotateLocal(float ang)
Pre-multiply a rotation to this matrix by rotating the given amount of radians.
|
Matrix3x2f |
rotateLocal(float ang,
Matrix3x2f dest)
Pre-multiply a rotation to this matrix by rotating the given amount of radians and store the result in
dest. |
Matrix3x2f |
rotateTo(Vector2fc fromDir,
Vector2fc toDir)
Apply a rotation transformation to this matrix that rotates the given normalized
fromDir direction vector
to point along the normalized toDir. |
Matrix3x2f |
rotateTo(Vector2fc fromDir,
Vector2fc toDir,
Matrix3x2f dest)
Apply a rotation transformation to this matrix that rotates the given normalized
fromDir direction vector
to point along the normalized toDir, and store the result in dest. |
Matrix3x2f |
rotation(float angle)
Set this matrix to a rotation matrix which rotates the given radians.
|
Matrix3x2f |
scale(float xy)
Apply scaling to this matrix by uniformly scaling the two base axes by the given
xyz factor. |
Matrix3x2f |
scale(float x,
float y)
Apply scaling to this matrix by scaling the base axes by the given x and y factors.
|
Matrix3x2f |
scale(float x,
float y,
Matrix3x2f dest)
Apply scaling to this matrix by scaling the unit axes by the given x and y and store the result in
dest. |
Matrix3x2f |
scale(float xy,
Matrix3x2f dest)
Apply scaling to this matrix by uniformly scaling the two base axes by the given
xy factor
and store the result in dest. |
Matrix3x2f |
scale(Vector2fc xy)
Apply scaling to this matrix by scaling the base axes by the given
xy factors. |
Matrix3x2f |
scale(Vector2fc xy,
Matrix3x2f dest)
Apply scaling to this matrix by scaling the base axes by the given
xy factors
and store the result in dest. |
Matrix3x2f |
scaleAround(float factor,
float ox,
float oy)
Apply scaling to this matrix by scaling the base axes by the given
factor
while using (ox, oy) as the scaling origin. |
Matrix3x2f |
scaleAround(float sx,
float sy,
float ox,
float oy)
Apply scaling to this matrix by scaling the base axes by the given sx and
sy factors while using
(ox, oy) as the scaling origin. |
Matrix3x2f |
scaleAround(float sx,
float sy,
float ox,
float oy,
Matrix3x2f dest)
Apply scaling to
this matrix by scaling the base axes by the given sx and
sy factors while using (ox, oy) as the scaling origin, and store the result in dest. |
Matrix3x2f |
scaleAround(float factor,
float ox,
float oy,
Matrix3x2f dest)
Apply scaling to this matrix by scaling the base axes by the given
factor
while using (ox, oy) as the scaling origin,
and store the result in dest. |
Matrix3x2f |
scaleAroundLocal(float factor,
float ox,
float oy)
Pre-multiply scaling to this matrix by scaling the base axes by the given
factor
while using (ox, oy) as the scaling origin. |
Matrix3x2f |
scaleAroundLocal(float sx,
float sy,
float sz,
float ox,
float oy,
float oz)
Pre-multiply scaling to this matrix by scaling the base axes by the given sx and
sy factors while using
(ox, oy) as the scaling origin. |
Matrix3x2f |
scaleAroundLocal(float sx,
float sy,
float ox,
float oy,
Matrix3x2f dest)
Pre-multiply scaling to
this matrix by scaling the base axes by the given sx and
sy factors while using the given (ox, oy) as the scaling origin,
and store the result in dest. |
Matrix3x2f |
scaleAroundLocal(float factor,
float ox,
float oy,
Matrix3x2f dest)
Pre-multiply scaling to this matrix by scaling the base axes by the given
factor
while using (ox, oy) as the scaling origin,
and store the result in dest. |
Matrix3x2f |
scaleLocal(float xy)
Pre-multiply scaling to this matrix by scaling the base axes by the given xy factor.
|
Matrix3x2f |
scaleLocal(float x,
float y)
Pre-multiply scaling to this matrix by scaling the base axes by the given x and y factors.
|
Matrix3x2f |
scaleLocal(float x,
float y,
Matrix3x2f dest)
Pre-multiply scaling to
this matrix by scaling the base axes by the given x and y
factors and store the result in dest. |
Matrix3x2f |
scaleLocal(float xy,
Matrix3x2f dest)
Pre-multiply scaling to
this matrix by scaling the two base axes by the given xy factor,
and store the result in dest. |
Matrix3x2f |
scaling(float factor)
Set this matrix to be a simple scale matrix, which scales the two base axes uniformly by the given factor.
|
Matrix3x2f |
scaling(float x,
float y)
Set this matrix to be a simple scale matrix.
|
Matrix3x2f |
set(ByteBuffer buffer)
Set the values of this matrix by reading 6 float values from the given
ByteBuffer in column-major order,
starting at its current position. |
Matrix3x2f |
set(float[] m)
Set the values in this matrix based on the supplied float array.
|
Matrix3x2f |
set(FloatBuffer buffer)
Set the values of this matrix by reading 6 float values from the given
FloatBuffer in column-major order,
starting at its current position. |
Matrix3x2f |
set(float m00,
float m01,
float m10,
float m11,
float m20,
float m21)
Set the values within this matrix to the supplied float values.
|
Matrix3x2f |
set(Matrix2fc m)
Set the left 2x2 submatrix of this
Matrix3x2f to the given Matrix2fc and don't change the other elements. |
Matrix3x2f |
set(Matrix3x2fc m)
Set the elements of this matrix to the ones in
m. |
Matrix3x2f |
setTranslation(float x,
float y)
Set only the translation components of this matrix
(m20, m21) to the given values (x, y). |
Matrix3x2f |
setTranslation(Vector2f offset)
Set only the translation components of this matrix
(m20, m21) to the given values (offset.x, offset.y). |
Matrix3x2f |
setView(float left,
float right,
float bottom,
float top)
Set this matrix to define a "view" transformation that maps the given
(left, bottom) and
(right, top) corners to (-1, -1) and (1, 1) respectively. |
Matrix3x2f |
shearX(float yFactor)
Apply shearing to this matrix by shearing along the X axis using the Y axis factor
yFactor. |
Matrix3x2f |
shearX(float yFactor,
Matrix3x2f dest)
Apply shearing to this matrix by shearing along the X axis using the Y axis factor
yFactor,
and store the result in dest. |
Matrix3x2f |
shearY(float xFactor)
Apply shearing to this matrix by shearing along the Y axis using the X axis factor
xFactor. |
Matrix3x2f |
shearY(float xFactor,
Matrix3x2f dest)
Apply shearing to this matrix by shearing along the Y axis using the X axis factor
xFactor,
and store the result in dest. |
Matrix3x2f |
span(Vector2f corner,
Vector2f xDir,
Vector2f yDir)
Compute the extents of the coordinate system before this transformation was applied and store the resulting
corner coordinates in
corner and the span vectors in xDir and yDir. |
boolean |
testAar(float minX,
float minY,
float maxX,
float maxY)
Test whether the given axis-aligned rectangle is partly or completely within or outside of the frustum defined by
this matrix. |
boolean |
testCircle(float x,
float y,
float r)
Test whether the given circle is partly or completely within or outside of the frustum defined by
this matrix. |
boolean |
testPoint(float x,
float y)
Test whether the given point
(x, y) is within the frustum defined by this matrix. |
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. |
Vector3f |
transform(float x,
float y,
float z,
Vector3f dest)
Transform/multiply the given vector
(x, y, z) by this matrix and store the result in dest. |
Vector3f |
transform(Vector3f v)
Transform/multiply the given vector by this matrix by assuming a third row in this matrix of
(0, 0, 1)
and store the result in that vector. |
Vector3f |
transform(Vector3f v,
Vector3f dest)
Transform/multiply the given vector by this matrix by assuming a third row in this matrix of
(0, 0, 1)
and store the result in dest. |
Vector2f |
transformDirection(float x,
float y,
Vector2f dest)
Transform/multiply the given 2D-vector
(x, y), as if it was a 3D-vector with z=0, by
this matrix and store the result in dest. |
Vector2f |
transformDirection(Vector2f v)
Transform/multiply the given 2D-vector, as if it was a 3D-vector with z=0, by
this matrix and store the result in that vector.
|
Vector2f |
transformDirection(Vector2fc v,
Vector2f dest)
Transform/multiply the given 2D-vector, as if it was a 3D-vector with z=0, by
this matrix and store the result in
dest. |
Vector2f |
transformPosition(float x,
float y,
Vector2f dest)
Transform/multiply the given 2D-vector
(x, y), as if it was a 3D-vector with z=1, by
this matrix and store the result in dest. |
Vector2f |
transformPosition(Vector2f v)
Transform/multiply the given 2D-vector, as if it was a 3D-vector with z=1, by
this matrix and store the result in that vector.
|
Vector2f |
transformPosition(Vector2fc v,
Vector2f dest)
Transform/multiply the given 2D-vector, as if it was a 3D-vector with z=1, by
this matrix and store the result in
dest. |
Matrix3x2f |
translate(float x,
float y)
Apply a translation to this matrix by translating by the given number of units in x and y.
|
Matrix3x2f |
translate(float x,
float y,
Matrix3x2f dest)
Apply a translation to this matrix by translating by the given number of units in x and y and store the result
in
dest. |
Matrix3x2f |
translate(Vector2fc offset)
Apply a translation to this matrix by translating by the given number of units in x and y.
|
Matrix3x2f |
translate(Vector2fc offset,
Matrix3x2f dest)
Apply a translation to this matrix by translating by the given number of units in x and y, and
store the result in
dest. |
Matrix3x2f |
translateLocal(float x,
float y)
Pre-multiply a translation to this matrix by translating by the given number of
units in x and y.
|
Matrix3x2f |
translateLocal(float x,
float y,
Matrix3x2f dest)
Pre-multiply a translation to this matrix by translating by the given number of
units in x and y and store the result in
dest. |
Matrix3x2f |
translateLocal(Vector2fc offset)
Pre-multiply a translation to this matrix by translating by the given number of
units in x and y.
|
Matrix3x2f |
translateLocal(Vector2fc offset,
Matrix3x2f dest)
Pre-multiply a translation to this matrix by translating by the given number of
units in x and y and store the result in
dest. |
Matrix3x2f |
translation(float x,
float y)
Set this matrix to be a simple translation matrix in a two-dimensional coordinate system.
|
Matrix3x2f |
translation(Vector2fc offset)
Set this matrix to be a simple translation matrix in a two-dimensional coordinate system.
|
Vector2f |
unproject(float winX,
float winY,
int[] viewport,
Vector2f dest)
Unproject the given window coordinates
(winX, winY) by this matrix using the specified viewport. |
Vector2f |
unprojectInv(float winX,
float winY,
int[] viewport,
Vector2f dest)
Unproject the given window coordinates
(winX, winY) by this matrix using the specified viewport. |
Matrix3x2f |
view(float left,
float right,
float bottom,
float top)
Apply a "view" transformation to this matrix that maps the given
(left, bottom) and
(right, top) corners to (-1, -1) and (1, 1) respectively. |
Matrix3x2f |
view(float left,
float right,
float bottom,
float top,
Matrix3x2f dest)
Apply a "view" transformation to this matrix that maps the given
(left, bottom) and
(right, top) corners to (-1, -1) and (1, 1) respectively and store the result in dest. |
float[] |
viewArea(float[] area)
Obtain the extents of the view transformation of
this matrix and store it in area. |
void |
writeExternal(ObjectOutput out) |
Matrix3x2f |
zero()
Set all values within this matrix to zero.
|
public float m00
public float m01
public float m10
public float m11
public float m20
public float m21
public Matrix3x2f()
Matrix3x2f and set it to identity.public Matrix3x2f(Matrix3x2fc mat)
Matrix3x2f and make it a copy of the given matrix.mat - the Matrix3x2fc to copy the values frompublic Matrix3x2f(Matrix2fc mat)
Matrix3x2f by setting its left 2x2 submatrix to the values of the given Matrix2fc
and the rest to identity.mat - the Matrix2fcpublic Matrix3x2f(float m00,
float m01,
float m10,
float m11,
float m20,
float m21)
m00 - the value of m00m01 - the value of m01m10 - the value of m10m11 - the value of m11m20 - the value of m20m21 - the value of m21public Matrix3x2f(FloatBuffer buffer)
Matrix3x2f by reading its 6 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 float m00()
Matrix3x2fcm00 in interface Matrix3x2fcpublic float m01()
Matrix3x2fcm01 in interface Matrix3x2fcpublic float m10()
Matrix3x2fcm10 in interface Matrix3x2fcpublic float m11()
Matrix3x2fcm11 in interface Matrix3x2fcpublic float m20()
Matrix3x2fcm20 in interface Matrix3x2fcpublic float m21()
Matrix3x2fcm21 in interface Matrix3x2fcpublic Matrix3x2f _m00(float m00)
m00 - the new valuepublic Matrix3x2f _m01(float m01)
m01 - the new valuepublic Matrix3x2f _m10(float m10)
m10 - the new valuepublic Matrix3x2f _m11(float m11)
m11 - the new valuepublic Matrix3x2f _m20(float m20)
m20 - the new valuepublic Matrix3x2f _m21(float m21)
m21 - the new valuepublic Matrix3x2f set(Matrix3x2fc m)
m.m - the matrix to copy the elements frompublic Matrix3x2f set(Matrix2fc m)
Matrix3x2f to the given Matrix2fc and don't change the other elements.m - the 2x2 matrixpublic Matrix3x2f mul(Matrix3x2fc right)
right matrix by assuming a third row in
both matrices of (0, 0, 1).
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 Matrix3x2f mul(Matrix3x2fc right, Matrix3x2f dest)
right matrix by assuming a third row in
both matrices of (0, 0, 1) 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 Matrix3x2fcright - the right operand of the matrix multiplicationdest - will hold the resultpublic Matrix3x2f mulLocal(Matrix3x2fc left)
left matrix and store the result in this.
If M is this matrix and L the left matrix,
then the new matrix will be L * M. So when transforming a
vector v with the new matrix by using L * M * v, the
transformation of this matrix will be applied first!
left - the left operand of the matrix multiplicationpublic Matrix3x2f mulLocal(Matrix3x2fc left, Matrix3x2f dest)
Matrix3x2fcleft matrix and store the result in dest.
If M is this matrix and L the left matrix,
then the new matrix will be L * M. So when transforming a
vector v with the new matrix by using L * M * v, the
transformation of this matrix will be applied first!
mulLocal in interface Matrix3x2fcleft - the left operand of the matrix multiplicationdest - the destination matrix, which will hold the resultpublic Matrix3x2f set(float m00, float m01, float m10, float m11, float m20, float m21)
m00, m10, m20
m01, m11, m21
m00 - the new value of m00m01 - the new value of m01m10 - the new value of m10m11 - the new value of m11m20 - the new value of m20m21 - the new value of m21public Matrix3x2f set(float[] m)
0, 2, 4
1, 3, 5
This method only uses the first 6 values, all others are ignored.
m - the array to read the matrix values frompublic float determinant()
determinant in interface Matrix3x2fcpublic Matrix3x2f invert()
(0, 0, 1).public Matrix3x2f invert(Matrix3x2f dest)
this matrix by assuming a third row in this matrix of (0, 0, 1)
and store the result in dest.invert in interface Matrix3x2fcdest - will hold the resultpublic Matrix3x2f translation(float x, float y)
The resulting matrix can be multiplied against another transformation matrix to obtain an additional translation.
In order to apply a translation via to an already existing transformation
matrix, use translate() instead.
x - the units to translate in xy - the units to translate in ytranslate(float, float)public Matrix3x2f translation(Vector2fc offset)
The resulting matrix can be multiplied against another transformation matrix to obtain an additional translation.
In order to apply a translation via to an already existing transformation
matrix, use translate() instead.
offset - the translationtranslate(Vector2fc)public Matrix3x2f setTranslation(float x, float y)
(m20, m21) to the given values (x, y).
To build a translation matrix instead, use translation(float, float).
To apply a translation to another matrix, use translate(float, float).
x - the offset to translate in xy - the offset to translate in ytranslation(float, float),
translate(float, float)public Matrix3x2f setTranslation(Vector2f offset)
(m20, m21) to the given values (offset.x, offset.y).
To build a translation matrix instead, use translation(Vector2fc).
To apply a translation to another matrix, use translate(Vector2fc).
offset - the new translation to settranslation(Vector2fc),
translate(Vector2fc)public Matrix3x2f translate(float x, float y, Matrix3x2f 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).
translate in interface Matrix3x2fcx - the offset to translate in xy - the offset to translate in ydest - will hold the resulttranslation(float, float)public Matrix3x2f translate(float x, float y)
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).
x - the offset to translate in xy - the offset to translate in ytranslation(float, float)public Matrix3x2f translate(Vector2fc offset, Matrix3x2f 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).
translate in interface Matrix3x2fcoffset - the offset to translatedest - will hold the resulttranslation(Vector2fc)public Matrix3x2f translate(Vector2fc 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(float, float).
offset - the offset to translatetranslation(Vector2fc)public Matrix3x2f translateLocal(Vector2fc 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(Vector2fc).
offset - the number of units in x and y by which to translatetranslation(Vector2fc)public Matrix3x2f translateLocal(Vector2fc offset, Matrix3x2f 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(Vector2fc).
translateLocal in interface Matrix3x2fcoffset - the number of units in x and y by which to translatedest - will hold the resulttranslation(Vector2fc)public Matrix3x2f translateLocal(float x, float y, Matrix3x2f 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).
translateLocal in interface Matrix3x2fcx - the offset to translate in xy - the offset to translate in ydest - will hold the resulttranslation(float, float)public Matrix3x2f translateLocal(float x, float y)
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).
x - the offset to translate in xy - the offset to translate in ytranslation(float, float)public 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 Matrix3x2f get(Matrix3x2f dest)
this matrix and store them into
dest.
This is the reverse method of set(Matrix3x2fc) and allows to obtain
intermediate calculation results when chaining multiple transformations.
get in interface Matrix3x2fcdest - the destination matrixset(Matrix3x2fc)public FloatBuffer get(FloatBuffer buffer)
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 get(int, FloatBuffer), taking
the absolute position as parameter.
get in interface Matrix3x2fcbuffer - will receive the values of this matrix in column-major order at its current positionget(int, FloatBuffer)public FloatBuffer get(int index, FloatBuffer buffer)
FloatBuffer starting at the specified
absolute buffer position/index.
This method will not increment the position of the given FloatBuffer.
get in interface Matrix3x2fcindex - the absolute position into the FloatBufferbuffer - will receive the values of this matrix in column-major orderpublic ByteBuffer get(ByteBuffer buffer)
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 get(int, ByteBuffer), taking
the absolute position as parameter.
get in interface Matrix3x2fcbuffer - will receive the values of this matrix in column-major order at its current positionget(int, ByteBuffer)public ByteBuffer get(int index, ByteBuffer buffer)
ByteBuffer starting at the specified
absolute buffer position/index.
This method will not increment the position of the given ByteBuffer.
get in interface Matrix3x2fcindex - the absolute position into the ByteBufferbuffer - will receive the values of this matrix in column-major orderpublic FloatBuffer get3x3(FloatBuffer buffer)
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 get3x3(int, FloatBuffer), taking
the absolute position as parameter.
get3x3 in interface Matrix3x2fcbuffer - will receive the values of this matrix in column-major order at its current positionget3x3(int, FloatBuffer)public FloatBuffer get3x3(int index, FloatBuffer buffer)
FloatBuffer starting at the specified
absolute buffer position/index.
This method will not increment the position of the given FloatBuffer.
get3x3 in interface Matrix3x2fcindex - the absolute position into the FloatBufferbuffer - will receive the values of this matrix in column-major orderpublic ByteBuffer get3x3(ByteBuffer buffer)
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 get3x3(int, ByteBuffer), taking
the absolute position as parameter.
get3x3 in interface Matrix3x2fcbuffer - will receive the values of this matrix in column-major order at its current positionget3x3(int, ByteBuffer)public ByteBuffer get3x3(int index, ByteBuffer buffer)
ByteBuffer starting at the specified
absolute buffer position/index.
This method will not increment the position of the given ByteBuffer.
get3x3 in interface Matrix3x2fcindex - the absolute position into the ByteBufferbuffer - will receive the values of this matrix in column-major orderpublic FloatBuffer get4x4(FloatBuffer buffer)
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 get4x4(int, FloatBuffer), taking
the absolute position as parameter.
get4x4 in interface Matrix3x2fcbuffer - will receive the values of this matrix in column-major order at its current positionget4x4(int, FloatBuffer)public FloatBuffer get4x4(int index, FloatBuffer buffer)
FloatBuffer starting at the specified
absolute buffer position/index.
This method will not increment the position of the given FloatBuffer.
get4x4 in interface Matrix3x2fcindex - the absolute position into the FloatBufferbuffer - will receive the values of this matrix in column-major orderpublic ByteBuffer get4x4(ByteBuffer buffer)
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 get4x4(int, ByteBuffer), taking
the absolute position as parameter.
get4x4 in interface Matrix3x2fcbuffer - will receive the values of this matrix in column-major order at its current positionget4x4(int, ByteBuffer)public ByteBuffer get4x4(int index, ByteBuffer buffer)
ByteBuffer starting at the specified
absolute buffer position/index.
This method will not increment the position of the given ByteBuffer.
get4x4 in interface Matrix3x2fcindex - the absolute position into the ByteBufferbuffer - will receive the values of this matrix in column-major orderpublic float[] get(float[] arr,
int offset)
get in interface Matrix3x2fcarr - the array to write the matrix values intooffset - the offset into the arraypublic float[] get(float[] arr)
In order to specify an explicit offset into the array, use the method get(float[], int).
get in interface Matrix3x2fcarr - the array to write the matrix values intoget(float[], int)public float[] get3x3(float[] arr,
int offset)
get3x3 in interface Matrix3x2fcarr - the array to write the matrix values intooffset - the offset into the arraypublic float[] get3x3(float[] arr)
In order to specify an explicit offset into the array, use the method get3x3(float[], int).
get3x3 in interface Matrix3x2fcarr - the array to write the matrix values intoget3x3(float[], int)public float[] get4x4(float[] arr,
int offset)
get4x4 in interface Matrix3x2fcarr - the array to write the matrix values intooffset - the offset into the arraypublic float[] get4x4(float[] arr)
In order to specify an explicit offset into the array, use the method get4x4(float[], int).
get4x4 in interface Matrix3x2fcarr - the array to write the matrix values intoget4x4(float[], int)public Matrix3x2f 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 Matrix3x2f 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 Matrix3x2f zero()
public Matrix3x2f identity()
public Matrix3x2f scale(float x, float y, Matrix3x2f dest)
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 Matrix3x2fcx - the factor of the x componenty - the factor of the y componentdest - will hold the resultpublic Matrix3x2f scale(float x, float y)
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 componentpublic Matrix3x2f scale(Vector2fc xy)
xy factors.
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!
xy - the factors of the x and y component, respectivelypublic Matrix3x2f scale(Vector2fc xy, Matrix3x2f dest)
xy 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 Matrix3x2fcxy - the factors of the x and y component, respectivelydest - will hold the resultpublic Matrix3x2f scale(float xy, Matrix3x2f dest)
xy 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!
scale in interface Matrix3x2fcxy - the factor for the two componentsdest - will hold the resultscale(float, float, Matrix3x2f)public Matrix3x2f scale(float xy)
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!
xy - the factor for the two componentsscale(float, float)public Matrix3x2f scaleLocal(float x, float y, Matrix3x2f dest)
Matrix3x2fcthis matrix by scaling the base axes by the given x and y
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 Matrix3x2fcx - the factor of the x componenty - the factor of the y componentdest - will hold the resultpublic Matrix3x2f scaleLocal(float x, float y)
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 componentpublic Matrix3x2f scaleLocal(float xy, Matrix3x2f dest)
Matrix3x2fcthis matrix by scaling the two base axes by the given xy factor,
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 Matrix3x2fcxy - the factor to scale all two base axes bydest - will hold the resultpublic Matrix3x2f scaleLocal(float xy)
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!
xy - the factor of the x and y componentpublic Matrix3x2f scaleAround(float sx, float sy, float ox, float oy, Matrix3x2f dest)
this matrix by scaling the base axes by the given sx and
sy factors while using (ox, oy) as the scaling origin, 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!
This method is equivalent to calling: translate(ox, oy, dest).scale(sx, sy).translate(-ox, -oy)
scaleAround in interface Matrix3x2fcsx - the scaling factor of the x componentsy - the scaling factor of the y componentox - the x coordinate of the scaling originoy - the y coordinate of the scaling origindest - will hold the resultpublic Matrix3x2f scaleAround(float sx, float sy, float ox, float oy)
(ox, oy) as the scaling origin.
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!
This method is equivalent to calling: translate(ox, oy).scale(sx, sy).translate(-ox, -oy)
sx - the scaling factor of the x componentsy - the scaling factor of the y componentox - the x coordinate of the scaling originoy - the y coordinate of the scaling originpublic Matrix3x2f scaleAround(float factor, float ox, float oy, Matrix3x2f dest)
factor
while using (ox, oy) as the scaling origin,
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!
This method is equivalent to calling: translate(ox, oy, dest).scale(factor).translate(-ox, -oy)
scaleAround in interface Matrix3x2fcfactor - the scaling factor for all three axesox - the x coordinate of the scaling originoy - the y coordinate of the scaling origindest - will hold the resultpublic Matrix3x2f scaleAround(float factor, float ox, float oy)
factor
while using (ox, oy) as the scaling origin.
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!
This method is equivalent to calling: translate(ox, oy).scale(factor).translate(-ox, -oy)
factor - the scaling factor for all axesox - the x coordinate of the scaling originoy - the y coordinate of the scaling originpublic Matrix3x2f scaleAroundLocal(float sx, float sy, float ox, float oy, Matrix3x2f dest)
Matrix3x2fcthis matrix by scaling the base axes by the given sx and
sy factors while using the given (ox, oy) as the scaling origin,
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!
This method is equivalent to calling: new Matrix3x2f().translate(ox, oy).scale(sx, sy).translate(-ox, -oy).mul(this, dest)
scaleAroundLocal in interface Matrix3x2fcsx - the scaling factor of the x componentsy - the scaling factor of the y componentox - the x coordinate of the scaling originoy - the y coordinate of the scaling origindest - will hold the resultpublic Matrix3x2f scaleAroundLocal(float factor, float ox, float oy, Matrix3x2f dest)
Matrix3x2fcfactor
while using (ox, oy) as the scaling origin,
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!
This method is equivalent to calling: new Matrix3x2f().translate(ox, oy).scale(factor).translate(-ox, -oy).mul(this, dest)
scaleAroundLocal in interface Matrix3x2fcfactor - the scaling factor for all three axesox - the x coordinate of the scaling originoy - the y coordinate of the scaling origindest - will hold the resultpublic Matrix3x2f scaleAroundLocal(float sx, float sy, float sz, float ox, float oy, float oz)
(ox, oy) as the scaling origin.
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!
This method is equivalent to calling: new Matrix3x2f().translate(ox, oy).scale(sx, sy).translate(-ox, -oy).mul(this, this)
sx - the scaling factor of the x componentsy - the scaling factor of the y componentsz - the scaling factor of the z componentox - the x coordinate of the scaling originoy - the y coordinate of the scaling originoz - the z coordinate of the scaling originpublic Matrix3x2f scaleAroundLocal(float factor, float ox, float oy)
factor
while using (ox, oy) as the scaling origin.
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!
This method is equivalent to calling: new Matrix3x2f().translate(ox, oy).scale(factor).translate(-ox, -oy).mul(this, this)
factor - the scaling factor for all three axesox - the x coordinate of the scaling originoy - the y coordinate of the scaling originpublic Matrix3x2f 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 and yscale(float)public Matrix3x2f scaling(float x, float y)
x - the scale in xy - the scale in ypublic Matrix3x2f rotation(float angle)
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.
angle - the angle in radiansrotate(float)public Vector3f transform(Vector3f v)
(0, 0, 1)
and store the result in that vector.transform in interface Matrix3x2fcv - the vector to transform and to hold the final resultVector3f.mul(Matrix3x2fc)public Vector3f transform(Vector3f v, Vector3f dest)
(0, 0, 1)
and store the result in dest.transform in interface Matrix3x2fcv - the vector to transformdest - will contain the resultVector3f.mul(Matrix3x2fc, Vector3f)public Vector3f transform(float x, float y, float z, Vector3f dest)
(x, y, z) by this matrix and store the result in dest.transform in interface Matrix3x2fcx - the x component of the vector to transformy - the y component of the vector to transformz - the z component of the vector to transformdest - will contain the resultpublic Vector2f transformPosition(Vector2f v)
The given 2D-vector is treated as a 3D-vector with its z-component being 1.0, so it will represent a position/location in 2D-space rather than a direction.
In order to store the result in another vector, use transformPosition(Vector2fc, Vector2f).
transformPosition in interface Matrix3x2fcv - the vector to transform and to hold the final resulttransformPosition(Vector2fc, Vector2f),
transform(Vector3f)public Vector2f transformPosition(Vector2fc v, Vector2f dest)
dest.
The given 2D-vector is treated as a 3D-vector with its z-component being 1.0, so it will represent a position/location in 2D-space rather than a direction.
In order to store the result in the same vector, use transformPosition(Vector2f).
transformPosition in interface Matrix3x2fcv - the vector to transformdest - will hold the resulttransformPosition(Vector2f),
transform(Vector3f, Vector3f)public Vector2f transformPosition(float x, float y, Vector2f dest)
(x, y), as if it was a 3D-vector with z=1, by
this matrix and store the result in dest.
The given 2D-vector is treated as a 3D-vector with its z-component being 1.0, so it will represent a position/location in 2D-space rather than a direction.
In order to store the result in the same vector, use transformPosition(Vector2f).
transformPosition in interface Matrix3x2fcx - the x component of the vector to transformy - the y component of the vector to transformdest - will hold the resulttransformPosition(Vector2f),
transform(Vector3f, Vector3f)public Vector2f transformDirection(Vector2f v)
The given 2D-vector is treated as a 3D-vector with its z-component being 0.0, so it
will represent a direction in 2D-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 transformDirection(Vector2fc, Vector2f).
transformDirection in interface Matrix3x2fcv - the vector to transform and to hold the final resulttransformDirection(Vector2fc, Vector2f)public Vector2f transformDirection(Vector2fc v, Vector2f dest)
dest.
The given 2D-vector is treated as a 3D-vector with its z-component being 0.0, so it
will represent a direction in 2D-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 transformDirection(Vector2f).
transformDirection in interface Matrix3x2fcv - the vector to transformdest - will hold the resulttransformDirection(Vector2f)public Vector2f transformDirection(float x, float y, Vector2f dest)
(x, y), as if it was a 3D-vector with z=0, by
this matrix and store the result in dest.
The given 2D-vector is treated as a 3D-vector with its z-component being 0.0, so it
will represent a direction in 2D-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 transformDirection(Vector2f).
transformDirection in interface Matrix3x2fcx - the x component of the vector to transformy - the y component of the vector to transformdest - will hold the resulttransformDirection(Vector2f)public void writeExternal(ObjectOutput out) throws IOException
writeExternal in interface ExternalizableIOExceptionpublic void readExternal(ObjectInput in) throws IOException
readExternal in interface ExternalizableIOExceptionpublic Matrix3x2f rotate(float ang)
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!
ang - the angle in radianspublic Matrix3x2f rotate(float ang, Matrix3x2f dest)
dest.
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!
rotate in interface Matrix3x2fcang - the angle in radiansdest - will hold the resultpublic Matrix3x2f rotateLocal(float ang, Matrix3x2f dest)
dest.
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 Matrix3x2fcang - the angle in radians to rotatedest - will hold the resultrotation(float)public Matrix3x2f rotateLocal(float ang)
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 radians to rotaterotation(float)public Matrix3x2f rotateAbout(float ang, float x, float y)
(x, y).
This method is equivalent to calling: translate(x, y).rotate(ang).translate(-x, -y)
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!
ang - the angle in radiansx - the x component of the rotation centery - the y component of the rotation centertranslate(float, float),
rotate(float)public Matrix3x2f rotateAbout(float ang, float x, float y, Matrix3x2f dest)
(x, y) and store the result in dest.
This method is equivalent to calling: translate(x, y, dest).rotate(ang).translate(-x, -y)
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!
rotateAbout in interface Matrix3x2fcang - the angle in radiansx - the x component of the rotation centery - the y component of the rotation centerdest - will hold the resulttranslate(float, float, Matrix3x2f),
rotate(float, Matrix3x2f)public Matrix3x2f rotateTo(Vector2fc fromDir, Vector2fc toDir, Matrix3x2f dest)
fromDir direction vector
to point along the normalized toDir, and store the result in dest.
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!
rotateTo in interface Matrix3x2fcfromDir - the normalized direction which should be rotate to point along toDirtoDir - the normalized destination directiondest - will hold the resultpublic Matrix3x2f rotateTo(Vector2fc fromDir, Vector2fc toDir)
fromDir direction vector
to point along the normalized toDir.
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!
fromDir - the normalized direction which should be rotate to point along toDirtoDir - the normalized destination directionpublic Matrix3x2f view(float left, float right, float bottom, float top, Matrix3x2f dest)
(left, bottom) and
(right, top) corners to (-1, -1) and (1, 1) respectively and store the result in 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!
view in interface Matrix3x2fcleft - the distance from the center to the left view edgeright - the distance from the center to the right view edgebottom - the distance from the center to the bottom view edgetop - the distance from the center to the top view edgedest - will hold the resultsetView(float, float, float, float)public Matrix3x2f view(float left, float right, float bottom, float top)
(left, bottom) and
(right, top) corners to (-1, -1) and (1, 1) respectively.
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!
left - the distance from the center to the left view edgeright - the distance from the center to the right view edgebottom - the distance from the center to the bottom view edgetop - the distance from the center to the top view edgesetView(float, float, float, float)public Matrix3x2f setView(float left, float right, float bottom, float top)
(left, bottom) and
(right, top) corners to (-1, -1) and (1, 1) respectively.left - the distance from the center to the left view edgeright - the distance from the center to the right view edgebottom - the distance from the center to the bottom view edgetop - the distance from the center to the top view edgeview(float, float, float, float)public Vector2f origin(Vector2f origin)
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:
Matrix3x2f inv = new Matrix3x2f(this).invert(); inv.transform(origin.set(0, 0));
origin in interface Matrix3x2fcorigin - will hold the position transformed to the originpublic float[] viewArea(float[] area)
this matrix and store it in area.
This can be used to determine which region of the screen (i.e. the NDC space) is covered by the view.viewArea in interface Matrix3x2fcarea - will hold the view area as [minX, minY, maxX, maxY]public Vector2f positiveX(Vector2f dir)
Matrix3x2fc+X before the transformation represented by this matrix is applied.
This method uses the rotation component of the left 2x2 submatrix to obtain the direction
that is transformed to +X by this matrix.
This method is equivalent to the following code:
Matrix3x2f inv = new Matrix3x2f(this).invert(); inv.transformDirection(dir.set(1, 0)).normalize();If
this is already an orthogonal matrix, then consider using Matrix3x2fc.normalizedPositiveX(Vector2f) instead.
Reference: http://www.euclideanspace.com
positiveX in interface Matrix3x2fcdir - will hold the direction of +Xpublic Vector2f normalizedPositiveX(Vector2f dir)
Matrix3x2fc+X before the transformation represented by 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 2x2 submatrix to obtain the direction
that is transformed to +X by this matrix.
This method is equivalent to the following code:
Matrix3x2f inv = new Matrix3x2f(this).transpose(); inv.transformDirection(dir.set(1, 0));
Reference: http://www.euclideanspace.com
normalizedPositiveX in interface Matrix3x2fcdir - will hold the direction of +Xpublic Vector2f positiveY(Vector2f dir)
Matrix3x2fc+Y before the transformation represented by this matrix is applied.
This method uses the rotation component of the left 2x2 submatrix to obtain the direction
that is transformed to +Y by this matrix.
This method is equivalent to the following code:
Matrix3x2f inv = new Matrix3x2f(this).invert(); inv.transformDirection(dir.set(0, 1)).normalize();If
this is already an orthogonal matrix, then consider using Matrix3x2fc.normalizedPositiveY(Vector2f) instead.
Reference: http://www.euclideanspace.com
positiveY in interface Matrix3x2fcdir - will hold the direction of +Ypublic Vector2f normalizedPositiveY(Vector2f dir)
Matrix3x2fc+Y before the transformation represented by 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 2x2 submatrix to obtain the direction
that is transformed to +Y by this matrix.
This method is equivalent to the following code:
Matrix3x2f inv = new Matrix3x2f(this).transpose(); inv.transformDirection(dir.set(0, 1));
Reference: http://www.euclideanspace.com
normalizedPositiveY in interface Matrix3x2fcdir - will hold the direction of +Ypublic Vector2f unproject(float winX, float winY, int[] viewport, Vector2f dest)
(winX, winY) by this matrix using the specified viewport.
This method first converts the given window coordinates to normalized device coordinates in the range [-1..1]
and then transforms those NDC coordinates by the inverse of this matrix.
As a necessary computation step for unprojecting, this method computes the inverse of this matrix.
In order to avoid computing the matrix inverse with every invocation, the inverse of this matrix can be built
once outside using invert(Matrix3x2f) and then the method unprojectInv() can be invoked on it.
unproject in interface Matrix3x2fcwinX - the x-coordinate in window coordinates (pixels)winY - the y-coordinate in window coordinates (pixels)viewport - the viewport described by [x, y, width, height]dest - will hold the unprojected positionunprojectInv(float, float, int[], Vector2f),
invert(Matrix3x2f)public Vector2f unprojectInv(float winX, float winY, int[] viewport, Vector2f dest)
(winX, winY) by this matrix using the specified viewport.
This method differs from unproject()
in that it assumes that this is already the inverse matrix of the original projection matrix.
It exists to avoid recomputing the matrix inverse with every invocation.
unprojectInv in interface Matrix3x2fcwinX - the x-coordinate in window coordinates (pixels)winY - the y-coordinate in window coordinates (pixels)viewport - the viewport described by [x, y, width, height]dest - will hold the unprojected positionunproject(float, float, int[], Vector2f)public Matrix3x2f shearX(float yFactor)
yFactor.yFactor - the factor for the Y component to shear along the X axispublic Matrix3x2f shearX(float yFactor, Matrix3x2f dest)
yFactor,
and store the result in dest.yFactor - the factor for the Y component to shear along the X axisdest - will hold the resultpublic Matrix3x2f shearY(float xFactor)
xFactor.xFactor - the factor for the X component to shear along the Y axispublic Matrix3x2f shearY(float xFactor, Matrix3x2f dest)
xFactor,
and store the result in dest.xFactor - the factor for the X component to shear along the Y axisdest - will hold the resultpublic Matrix3x2f span(Vector2f corner, Vector2f xDir, Vector2f yDir)
corner and the span vectors in xDir and yDir.
That means, given the maximum extents of the coordinate system between [-1..+1] in all dimensions,
this method returns one corner and the length and direction of the two base axis vectors in the coordinate
system before this transformation is applied, which transforms into the corner coordinates [-1, +1].
corner - will hold one corner of the spanxDir - will hold the direction and length of the span along the positive X axisyDir - will hold the direction and length of the span along the positive Y axispublic boolean testPoint(float x,
float y)
Matrix3x2fc(x, y) is within the frustum defined by this matrix.
This method assumes this matrix to be a transformation from any arbitrary coordinate system/space M
into standard OpenGL clip space and tests whether the given point with the coordinates (x, y, z) given
in space M is within the clip space.
Reference: Fast Extraction of Viewing Frustum Planes from the World-View-Projection Matrix
testPoint in interface Matrix3x2fcx - the x-coordinate of the pointy - the y-coordinate of the pointtrue if the given point is inside the frustum; false otherwisepublic boolean testCircle(float x,
float y,
float r)
Matrix3x2fcthis matrix.
This method assumes this matrix to be a transformation from any arbitrary coordinate system/space M
into standard OpenGL clip space and tests whether the given sphere with the coordinates (x, y, z) given
in space M is within the clip space.
Reference: Fast Extraction of Viewing Frustum Planes from the World-View-Projection Matrix
testCircle in interface Matrix3x2fcx - the x-coordinate of the circle's centery - the y-coordinate of the circle's centerr - the circle's radiustrue if the given circle is partly or completely inside the frustum; false otherwisepublic boolean testAar(float minX,
float minY,
float maxX,
float maxY)
Matrix3x2fcthis matrix.
The rectangle is specified via its min and max corner coordinates.
This method assumes this matrix to be a transformation from any arbitrary coordinate system/space M
into standard OpenGL clip space and tests whether the given axis-aligned rectangle with its minimum corner coordinates (minX, minY, minZ)
and maximum corner coordinates (maxX, maxY, maxZ) given in space M is within the clip space.
Reference: Efficient View Frustum Culling
Reference:
Fast Extraction of Viewing Frustum Planes from the World-View-Projection Matrix
testAar in interface Matrix3x2fcminX - the x-coordinate of the minimum cornerminY - the y-coordinate of the minimum cornermaxX - the x-coordinate of the maximum cornermaxY - the y-coordinate of the maximum cornertrue if the axis-aligned box is completely or partly inside of the frustum; false otherwisepublic boolean equals(Matrix3x2fc m, float delta)
Matrix3x2fcthis matrix with the given matrix using the given delta
and return whether all of them are equal within a maximum difference of delta.
Please note that this method is not used by any data structure such as ArrayList HashSet or HashMap
and their operations, such as ArrayList.contains(Object) or HashSet.remove(Object), since those
data structures only use the Object.equals(Object) and Object.hashCode() methods.
equals in interface Matrix3x2fcm - the other matrixdelta - the allowed maximum differencetrue whether all of the matrix elements are equal; false otherwiseCopyright © 2015–2019 JOML. All rights reserved.