public interface Matrix3x2dc
| Modifier and Type | Method and Description |
|---|---|
double |
determinant()
Return the determinant of this matrix.
|
boolean |
equals(Matrix3x2dc m,
double 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. |
ByteBuffer |
get(ByteBuffer buffer)
Store this matrix in column-major order into the supplied
ByteBuffer at the current
buffer position. |
double[] |
get(double[] arr)
Store this matrix into the supplied double array in column-major order.
|
double[] |
get(double[] arr,
int offset)
Store this matrix into the supplied double array in column-major order at the given offset.
|
DoubleBuffer |
get(DoubleBuffer buffer)
Store this matrix in column-major order into the supplied
DoubleBuffer 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. |
DoubleBuffer |
get(int index,
DoubleBuffer buffer)
Store this matrix in column-major order into the supplied
DoubleBuffer starting at the specified
absolute buffer position/index. |
Matrix3x2d |
get(Matrix3x2d 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. |
double[] |
get3x3(double[] arr)
Store this matrix as an equivalent 3x3 matrix into the supplied double array in column-major order.
|
double[] |
get3x3(double[] arr,
int offset)
Store this matrix as an equivalent 3x3 matrix into the supplied double array in column-major order at the given offset.
|
DoubleBuffer |
get3x3(DoubleBuffer buffer)
Store this matrix as an equivalent 3x3 matrix in column-major order into the supplied
DoubleBuffer 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. |
DoubleBuffer |
get3x3(int index,
DoubleBuffer buffer)
Store this matrix as an equivalent 3x3 matrix in column-major order into the supplied
DoubleBuffer 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. |
double[] |
get4x4(double[] arr)
Store this matrix as an equivalent 4x4 matrix into the supplied double array in column-major order.
|
double[] |
get4x4(double[] arr,
int offset)
Store this matrix as an equivalent 4x4 matrix into the supplied double array in column-major order at the given offset.
|
DoubleBuffer |
get4x4(DoubleBuffer buffer)
Store this matrix as an equivalent 4x4 matrix in column-major order into the supplied
DoubleBuffer 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. |
DoubleBuffer |
get4x4(int index,
DoubleBuffer buffer)
Store this matrix as an equivalent 4x4 matrix in column-major order into the supplied
DoubleBuffer starting at the specified
absolute buffer position/index. |
Matrix3x2d |
invert(Matrix3x2d dest)
Invert the
this matrix by assuming a third row in this matrix of (0, 0, 1)
and store the result in dest. |
double |
m00()
Return the value of the matrix element at column 0 and row 0.
|
double |
m01()
Return the value of the matrix element at column 0 and row 1.
|
double |
m10()
Return the value of the matrix element at column 1 and row 0.
|
double |
m11()
Return the value of the matrix element at column 1 and row 1.
|
double |
m20()
Return the value of the matrix element at column 2 and row 0.
|
double |
m21()
Return the value of the matrix element at column 2 and row 1.
|
Matrix3x2d |
mul(Matrix3x2dc right,
Matrix3x2d 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. |
Matrix3x2d |
mulLocal(Matrix3x2dc left,
Matrix3x2d dest)
Pre-multiply this matrix by the supplied
left matrix and store the result in dest. |
Vector2d |
normalizedPositiveX(Vector2d dir)
Obtain the direction of
+X before the transformation represented by this orthogonal matrix is applied. |
Vector2d |
normalizedPositiveY(Vector2d dir)
Obtain the direction of
+Y before the transformation represented by this orthogonal matrix is applied. |
Vector2d |
origin(Vector2d origin)
Obtain the position that gets transformed to the origin by
this matrix. |
Vector2d |
positiveX(Vector2d dir)
Obtain the direction of
+X before the transformation represented by this matrix is applied. |
Vector2d |
positiveY(Vector2d dir)
Obtain the direction of
+Y before the transformation represented by this matrix is applied. |
Matrix3x2d |
rotate(double ang,
Matrix3x2d dest)
Apply a rotation transformation to this matrix by rotating the given amount of radians and store the result in
dest. |
Matrix3x2d |
rotateAbout(double ang,
double x,
double y,
Matrix3x2d 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. |
Matrix3x2d |
rotateLocal(double ang,
Matrix3x2d dest)
Pre-multiply a rotation to this matrix by rotating the given amount of radians and store the result in
dest. |
Matrix3x2d |
rotateTo(Vector2dc fromDir,
Vector2dc toDir,
Matrix3x2d 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. |
Matrix3x2d |
scale(double x,
double y,
Matrix3x2d dest)
Apply scaling to this matrix by scaling the unit axes by the given x and y and store the result in
dest. |
Matrix3x2d |
scale(double xy,
Matrix3x2d dest)
Apply scaling to this matrix by uniformly scaling the two base axes by the given
xy factor
and store the result in dest. |
Matrix3x2d |
scale(Vector2dc xy,
Matrix3x2d dest)
Apply scaling to this matrix by scaling the base axes by the given
xy factors
and store the result in dest. |
Matrix3x2d |
scale(Vector2fc xy,
Matrix3x2d dest)
Apply scaling to this matrix by scaling the base axes by the given
xy factors
and store the result in dest. |
Matrix3x2d |
scaleAround(double sx,
double sy,
double ox,
double oy,
Matrix3x2d 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. |
Matrix3x2d |
scaleAround(double factor,
double ox,
double oy,
Matrix3x2d 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. |
Matrix3x2d |
scaleAroundLocal(double sx,
double sy,
double ox,
double oy,
Matrix3x2d 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. |
Matrix3x2d |
scaleAroundLocal(double factor,
double ox,
double oy,
Matrix3x2d 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. |
Matrix3x2d |
scaleLocal(double x,
double y,
Matrix3x2d 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. |
Matrix3x2d |
scaleLocal(double xy,
Matrix3x2d dest)
Pre-multiply scaling to
this matrix by scaling the two base axes by the given xy factor,
and store the result in dest. |
boolean |
testAar(double minX,
double minY,
double maxX,
double maxY)
Test whether the given axis-aligned rectangle is partly or completely within or outside of the frustum defined by
this matrix. |
boolean |
testCircle(double x,
double y,
double r)
Test whether the given circle is partly or completely within or outside of the frustum defined by
this matrix. |
boolean |
testPoint(double x,
double y)
Test whether the given point
(x, y) is within the frustum defined by this matrix. |
Vector3d |
transform(double x,
double y,
double z,
Vector3d dest)
Transform/multiply the given vector
(x, y, z) by this matrix and store the result in dest. |
Vector3d |
transform(Vector3d 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. |
Vector3d |
transform(Vector3dc v,
Vector3d dest)
Transform/multiply the given vector by this matrix and store the result in
dest. |
Vector2d |
transformDirection(double x,
double y,
Vector2d 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. |
Vector2d |
transformDirection(Vector2d 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.
|
Vector2d |
transformDirection(Vector2dc v,
Vector2d 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. |
Vector2d |
transformPosition(double x,
double y,
Vector2d 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. |
Vector2d |
transformPosition(Vector2d 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.
|
Vector2d |
transformPosition(Vector2dc v,
Vector2d 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. |
Matrix3x2d |
translate(double x,
double y,
Matrix3x2d 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. |
Matrix3x2d |
translate(Vector2dc offset,
Matrix3x2d 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. |
Matrix3x2d |
translateLocal(double x,
double y,
Matrix3x2d 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. |
Matrix3x2d |
translateLocal(Vector2dc offset,
Matrix3x2d 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. |
Vector2d |
unproject(double winX,
double winY,
int[] viewport,
Vector2d dest)
Unproject the given window coordinates
(winX, winY) by this matrix using the specified viewport. |
Vector2d |
unprojectInv(double winX,
double winY,
int[] viewport,
Vector2d dest)
Unproject the given window coordinates
(winX, winY) by this matrix using the specified viewport. |
Matrix3x2d |
view(double left,
double right,
double bottom,
double top,
Matrix3x2d 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. |
double[] |
viewArea(double[] area)
Obtain the extents of the view transformation of
this matrix and store it in area. |
double m00()
double m01()
double m10()
double m11()
double m20()
double m21()
Matrix3x2d mul(Matrix3x2dc right, Matrix3x2d 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!
right - the right operand of the matrix multiplicationdest - will hold the resultMatrix3x2d mulLocal(Matrix3x2dc left, Matrix3x2d dest)
left 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!
left - the left operand of the matrix multiplicationdest - the destination matrix, which will hold the resultdouble determinant()
Matrix3x2d invert(Matrix3x2d dest)
this matrix by assuming a third row in this matrix of (0, 0, 1)
and store the result in dest.dest - will hold the resultMatrix3x2d translate(double x, double y, Matrix3x2d 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!
x - the offset to translate in xy - the offset to translate in ydest - will hold the resultMatrix3x2d translate(Vector2dc offset, Matrix3x2d 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!
offset - the offset to translatedest - will hold the resultMatrix3x2d translateLocal(Vector2dc offset, Matrix3x2d 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!
offset - the number of units in x and y by which to translatedest - will hold the resultMatrix3x2d translateLocal(double x, double y, Matrix3x2d 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!
x - the offset to translate in xy - the offset to translate in ydest - will hold the resultMatrix3x2d get(Matrix3x2d dest)
this matrix and store them into
dest.dest - the destination matrixDoubleBuffer get(DoubleBuffer buffer)
DoubleBuffer at the current
buffer position.
This method will not increment the position of the given DoubleBuffer.
In order to specify the offset into the DoubleBuffer at which
the matrix is stored, use get(int, DoubleBuffer), taking
the absolute position as parameter.
buffer - will receive the values of this matrix in column-major order at its current positionget(int, DoubleBuffer)DoubleBuffer get(int index, DoubleBuffer buffer)
DoubleBuffer starting at the specified
absolute buffer position/index.
This method will not increment the position of the given DoubleBuffer.
index - the absolute position into the DoubleBufferbuffer - will receive the values of this matrix in column-major orderByteBuffer 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.
buffer - will receive the values of this matrix in column-major order at its current positionget(int, ByteBuffer)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.
index - the absolute position into the ByteBufferbuffer - will receive the values of this matrix in column-major orderDoubleBuffer get3x3(DoubleBuffer buffer)
DoubleBuffer at the current
buffer position.
This method will not increment the position of the given DoubleBuffer.
In order to specify the offset into the DoubleBuffer at which
the matrix is stored, use get3x3(int, DoubleBuffer), taking
the absolute position as parameter.
buffer - will receive the values of this matrix in column-major order at its current positionget3x3(int, DoubleBuffer)DoubleBuffer get3x3(int index, DoubleBuffer buffer)
DoubleBuffer starting at the specified
absolute buffer position/index.
This method will not increment the position of the given DoubleBuffer.
index - the absolute position into the DoubleBufferbuffer - will receive the values of this matrix in column-major orderByteBuffer 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.
buffer - will receive the values of this matrix in column-major order at its current positionget3x3(int, ByteBuffer)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.
index - the absolute position into the ByteBufferbuffer - will receive the values of this matrix in column-major orderDoubleBuffer get4x4(DoubleBuffer buffer)
DoubleBuffer at the current
buffer position.
This method will not increment the position of the given DoubleBuffer.
In order to specify the offset into the DoubleBuffer at which
the matrix is stored, use get4x4(int, DoubleBuffer), taking
the absolute position as parameter.
buffer - will receive the values of this matrix in column-major order at its current positionget4x4(int, DoubleBuffer)DoubleBuffer get4x4(int index, DoubleBuffer buffer)
DoubleBuffer starting at the specified
absolute buffer position/index.
This method will not increment the position of the given DoubleBuffer.
index - the absolute position into the DoubleBufferbuffer - will receive the values of this matrix in column-major orderByteBuffer 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.
buffer - will receive the values of this matrix in column-major order at its current positionget4x4(int, ByteBuffer)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.
index - the absolute position into the ByteBufferbuffer - will receive the values of this matrix in column-major orderdouble[] get(double[] arr,
int offset)
arr - the array to write the matrix values intooffset - the offset into the arraydouble[] get(double[] arr)
In order to specify an explicit offset into the array, use the method get(double[], int).
arr - the array to write the matrix values intoget(double[], int)double[] get3x3(double[] arr,
int offset)
arr - the array to write the matrix values intooffset - the offset into the arraydouble[] get3x3(double[] arr)
In order to specify an explicit offset into the array, use the method get3x3(double[], int).
arr - the array to write the matrix values intoget3x3(double[], int)double[] get4x4(double[] arr,
int offset)
arr - the array to write the matrix values intooffset - the offset into the arraydouble[] get4x4(double[] arr)
In order to specify an explicit offset into the array, use the method get4x4(double[], int).
arr - the array to write the matrix values intoget4x4(double[], int)Matrix3x2d scale(double x, double y, Matrix3x2d 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!
x - the factor of the x componenty - the factor of the y componentdest - will hold the resultMatrix3x2d scale(Vector2dc xy, Matrix3x2d 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!
xy - the factors of the x and y component, respectivelydest - will hold the resultMatrix3x2d scale(Vector2fc xy, Matrix3x2d 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!
xy - the factors of the x and y component, respectivelydest - will hold the resultMatrix3x2d scaleLocal(double xy, Matrix3x2d dest)
this 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!
xy - the factor to scale all two base axes bydest - will hold the resultMatrix3x2d scaleLocal(double x, double y, Matrix3x2d dest)
this 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!
x - the factor of the x componenty - the factor of the y componentdest - will hold the resultMatrix3x2d scaleAroundLocal(double sx, double sy, double ox, double oy, Matrix3x2d dest)
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.
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 Matrix3x2d().translate(ox, oy).scale(sx, sy).translate(-ox, -oy).mul(this, dest)
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 origindest - will hold the resultMatrix3x2d scaleAroundLocal(double factor, double ox, double oy, Matrix3x2d 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 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 Matrix3x2d().translate(ox, oy).scale(factor).translate(-ox, -oy).mul(this, dest)
factor - the scaling factor for all three axesox - the x coordinate of the scaling originoy - the y coordinate of the scaling origindest - will hold the resultMatrix3x2d scale(double xy, Matrix3x2d 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!
xy - the factor for the two componentsdest - will hold the resultscale(double, double, Matrix3x2d)Matrix3x2d scaleAround(double sx, double sy, double ox, double oy, Matrix3x2d 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)
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 origindest - will hold the resultMatrix3x2d scaleAround(double factor, double ox, double oy, Matrix3x2d 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)
factor - the scaling factor for all three axesox - the x coordinate of the scaling originoy - the y coordinate of the scaling origindest - will hold the resultVector3d transform(Vector3d v)
(0, 0, 1)
and store the result in that vector.v - the vector to transform and to hold the final resultVector3d.mul(Matrix3x2dc)Vector3d transform(Vector3dc v, Vector3d dest)
dest.v - the vector to transformdest - will contain the resultVector3d.mul(Matrix3x2dc, Vector3d)Vector3d transform(double x, double y, double z, Vector3d dest)
(x, y, z) by this matrix and store the result in dest.x - 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 resultVector2d transformPosition(Vector2d 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(Vector2dc, Vector2d).
v - the vector to transform and to hold the final resulttransformPosition(Vector2dc, Vector2d),
transform(Vector3d)Vector2d transformPosition(Vector2dc v, Vector2d 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(Vector2d).
v - the vector to transformdest - will hold the resulttransformPosition(Vector2d),
transform(Vector3dc, Vector3d)Vector2d transformPosition(double x, double y, Vector2d 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(Vector2d).
x - the x component of the vector to transformy - the y component of the vector to transformdest - will hold the resulttransformPosition(Vector2d),
transform(Vector3dc, Vector3d)Vector2d transformDirection(Vector2d 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(Vector2dc, Vector2d).
v - the vector to transform and to hold the final resulttransformDirection(Vector2dc, Vector2d)Vector2d transformDirection(Vector2dc v, Vector2d 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(Vector2d).
v - the vector to transform and to hold the final resultdest - will hold the resulttransformDirection(Vector2d)Vector2d transformDirection(double x, double y, Vector2d 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(Vector2d).
x - the x component of the vector to transformy - the y component of the vector to transformdest - will hold the resulttransformDirection(Vector2d)Matrix3x2d rotate(double ang, Matrix3x2d 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!
ang - the angle in radiansdest - will hold the resultMatrix3x2d rotateLocal(double ang, Matrix3x2d 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!
Reference: http://en.wikipedia.org
ang - the angle in radiansdest - will hold the resultMatrix3x2d rotateAbout(double ang, double x, double y, Matrix3x2d 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!
ang - the angle in radiansx - the x component of the rotation centery - the y component of the rotation centerdest - will hold the resulttranslate(double, double, Matrix3x2d),
rotate(double, Matrix3x2d)Matrix3x2d rotateTo(Vector2dc fromDir, Vector2dc toDir, Matrix3x2d 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!
fromDir - the normalized direction which should be rotate to point along toDirtoDir - the normalized destination directiondest - will hold the resultMatrix3x2d view(double left, double right, double bottom, double top, Matrix3x2d 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!
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 edgedest - will hold the resultVector2d origin(Vector2d 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:
Matrix3x2d inv = new Matrix3x2d(this).invertAffine(); inv.transform(origin.set(0, 0));
origin - will hold the position transformed to the origindouble[] viewArea(double[] 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.area - will hold the view area as [minX, minY, maxX, maxY]Vector2d positiveX(Vector2d dir)
+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:
Matrix3x2d inv = new Matrix3x2d(this).invert(); inv.transformDirection(dir.set(1, 0)).normalize();If
this is already an orthogonal matrix, then consider using normalizedPositiveX(Vector2d) instead.
Reference: http://www.euclideanspace.com
dir - will hold the direction of +XVector2d normalizedPositiveX(Vector2d dir)
+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:
Matrix3x2d inv = new Matrix3x2d(this).transpose(); inv.transformDirection(dir.set(1, 0));
Reference: http://www.euclideanspace.com
dir - will hold the direction of +XVector2d positiveY(Vector2d dir)
+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:
Matrix3x2d inv = new Matrix3x2d(this).invert(); inv.transformDirection(dir.set(0, 1)).normalize();If
this is already an orthogonal matrix, then consider using normalizedPositiveY(Vector2d) instead.
Reference: http://www.euclideanspace.com
dir - will hold the direction of +YVector2d normalizedPositiveY(Vector2d dir)
+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:
Matrix3x2d inv = new Matrix3x2d(this).transpose(); inv.transformDirection(dir.set(0, 1));
Reference: http://www.euclideanspace.com
dir - will hold the direction of +YVector2d unproject(double winX, double winY, int[] viewport, Vector2d 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(Matrix3x2d) and then the method unprojectInv() can be invoked on it.
winX - 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(double, double, int[], Vector2d),
invert(Matrix3x2d)Vector2d unprojectInv(double winX, double winY, int[] viewport, Vector2d 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.
winX - 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(double, double, int[], Vector2d)boolean testPoint(double x,
double y)
(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
x - the x-coordinate of the pointy - the y-coordinate of the pointtrue if the given point is inside the frustum; false otherwiseboolean testCircle(double x,
double y,
double r)
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 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
x - 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 otherwiseboolean testAar(double minX,
double minY,
double maxX,
double maxY)
this 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
minX - 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 otherwiseboolean equals(Matrix3x2dc m, double delta)
this 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.
m - the other matrixdelta - the allowed maximum differencetrue whether all of the matrix elements are equal; false otherwiseCopyright © 2015–2019 JOML. All rights reserved.