MatrixKit
-
class HPS::MatrixKit
The MatrixKit class is a user space object, useful for carrying a group attribute settings.
Public Functions
-
MatrixKit &Adjoint()
Replaces this matrix with it’s matrix adjoint. The adjoint is similar to the inverse but is always guaranteed to exist, even for singular matrices.
- Returns
A reference to this object.
-
bool Compose(Vector const &in_translation, Vector const &in_scale, Quaternion const &in_rotation)
Composes this matrix from translation, scale, and rotation components.
- Parameters
in_translation – The translation Vector to use.
in_scale – The scale Vector to use.
in_rotation – The translation Quaternion to use.
- Returns
true if the matrix was successfully composed, false otherwise.
-
MatrixKit &Concatenate(MatrixKit const &in_kit)
Replaces this matrix with the matrix product of itself multiplied by another matrix.
- Parameters
in_kit – the right side operand of the matrix multiplication.
- Returns
A reference to this object.
-
bool Decompose(Vector &out_translation, Vector &out_scale, Quaternion &out_rotation) const
Decomposes this matrix into translation, scale, and rotation components.
- Parameters
out_translation – The translation Vector extracted from this matrix.
out_scale – The scale Vector extracted from this matrix.
out_scale – The out_rotation Quaternion extracted from this matrix.
- Returns
true if the matrix was successfully decomposed, false otherwise.
-
bool Empty() const
Indicates whether this object has any values set on it.
- Deprecated:
This function exists for compatibility and will always return false.
- Returns
true if no values are set on this object, false otherwise.
-
bool Equals(MatrixKit const &in_kit) const
Check if the source MatrixKit is equivalent to this object.
- Parameters
in_kit – The source MatrixKit to compare to this object.
- Returns
true if the objects are equivalent, false otherwise.
-
MatrixKit &Invert()
Replaces this matrix with it’s matrix inverse. If this matrix is singular (determinant = 0), it will be unchanged.
- Returns
A reference to this object.
-
bool IsIdentity() const
Indicates whether or not this matrix is an identity matrix
- Returns
Whether this matrix is an identity matrix.
-
MatrixKit()
Initializes an identity matrix.
-
MatrixKit(float const in_matrix_source[])
This constructor allows implicit construction from an array of floats.
- Parameters
in_matrix_source – An array of floats that will be used to construct a new matrix. This array is assumed to be at least 16 elements in length. If it is not, the behavior is undefined.
-
MatrixKit(FloatArray const &in_matrix_source)
This constructor allows implicit construction from an array of floats.
- Parameters
in_matrix_source – An array of floats that will be used to construct a new matrix. If this array is not at least 16 elements in length, only the valid members will be used, leaving the remainder initialized as the identity matrix.
-
MatrixKit(MatrixKit const &in_other)
The copy constructor creates a new MatrixKit object that contains the same settings as the source object.
- Parameters
in_kit – The source object to copy.
-
MatrixKit(Quaternion const &in_quaternion)
This constructor allows implicit construction from a quaternion.
- Parameters
in_quaternion – A quaternion used to construct a new matrix.
-
MatrixKit Multiply(float in_scalar) const
Performs a scalar multiplication of this matrix.
- Parameters
in_scalar – A scalar to multiply this object by.
- Returns
A new MatrixKit representing the product.
-
MatrixKit Multiply(MatrixKit const &in_right) const
Performs a matrix multiplication with this object as the left operand.
- Parameters
in_right – A matrix used as the right operand of a matrix multiplication.
- Returns
A new MatrixKit representing the product.
-
MatrixKit &MultiplyAndAssign(float in_scalar)
Performs a scalar multiplication of this matrix and then assigns it to this object.
- Parameters
in_scalar – A scalar to multiply this object by.
- Returns
A reference to this object after the multiplication.
-
MatrixKit &MultiplyAndAssign(MatrixKit const &in_right)
Performs a matrix multiplication with this object as the left operand and then assigns it to this object.
- Parameters
in_right – A matrix used as the right operand of a matrix multiplication.
- Returns
A reference to this object after the multiplication.
-
MatrixKit &Normalize()
Divides this matrix by its determinant. If this matrix is singular (determinant = 0), it will be unchanged.
- Returns
A reference to this object.
-
bool operator!=(MatrixKit const &in_kit) const
Check if the source MatrixKit is not equivalent to this object.
- Parameters
in_kit – The source MatrixKit to compare to this object.
- Returns
true if the objects are not equivalent, false otherwise.
-
MatrixKit operator*(float in_scalar) const
Performs a scalar multiplication of this matrix.
- Parameters
in_scalar – A scalar to multiply this object by.
- Returns
A new MatrixKit representing the product.
-
MatrixKit operator*(MatrixKit const &in_right) const
Performs a matrix multiplication with this object as the left operand.
- Parameters
in_right – A matrix used as the right operand of a matrix multiplication.
- Returns
A new MatrixKit representing the product.
-
MatrixKit const &operator*=(float in_scalar)
Performs a scalar multiplication of this matrix and then assigns it to this object.
- Parameters
in_scalar – A scalar to multiply this object by.
- Returns
A reference to this object after the multiplication.
-
MatrixKit const &operator*=(MatrixKit const &in_right)
Performs a matrix multiplication with this object as the left operand and then assigns it to this object.
- Parameters
in_right – A matrix used as the right operand of a matrix multiplication.
- Returns
A reference to this object after the multiplication.
-
MatrixKit &operator=(MatrixKit const &in_kit)
Copies the source MatrixKit into this object.
- Parameters
in_kit – The source MatrixKit to copy.
- Returns
A reference to this object.
-
bool operator==(MatrixKit const &in_kit) const
Check if the source MatrixKit is equivalent to this object.
- Parameters
in_kit – The source MatrixKit to compare to this object.
- Returns
true if the objects are equivalent, false otherwise.
-
void Reset()
Sets this kit to an identity matrix.
-
MatrixKit &Rotate(float in_x, float in_y, float in_z)
Concatenates a rotation matrix to this matrix with rotation around the primary axes.
- Parameters
in_x – The number of degrees to rotate around the x-axis.
in_y – The number of degrees to rotate around the y-axis.
in_z – The number of degrees to rotate around the z-axis.
- Returns
A reference to this object.
-
MatrixKit &RotateOffAxis(Vector const &in_vector, float in_theta)
Concatenates a rotation matrix to this matrix with rotation around an arbitrary vector.
- Parameters
in_vector – The vector to rotate around.
in_theta – the number of degrees to rotate around the specified vector
- Returns
A reference to this object.
-
MatrixKit &Scale(float in_x, float in_y, float in_z)
Concatenates a scale matrix to this matrix that represents a uniform scaling of the scene.
- Parameters
in_x – The scale multiplier along the x-axis.
in_y – The scale multiplier along the y-axis.
in_z – The scale multiplier along the z-axis.
- Returns
A reference to this object.
-
void Set(MatrixKit const &other)
Copies the data from the source MatrixKit into this object.
- Parameters
in_other – The source MatrixKit to copy.
-
MatrixKit &SetElement(size_t in_ordinal_zero_to_fifteen, float in_value)
Sets a single matrix element, indexed as a linear array in row-major order.
- Parameters
in_ordinal_zero_to_fifteen – The offset into the matrix. Valid range is [0, 15].
in_value – The matrix element.
- Returns
A reference to this object.
-
MatrixKit &SetElement(size_t in_row, size_t in_column, float in_value)
Sets a single matrix element.
- Parameters
in_row – The row index. Valid range is [0, 3].
in_column – The column index. Valid range is [0, 3].
in_value – The matrix element.
- Returns
A reference to this object.
-
MatrixKit &SetElements(FloatArray const &in_values)
Sets some or all elements in the matrix from an array, starting with the first element.
- Parameters
in_values – An array of float values in row-major order that should replace the values in the matrix.
- Returns
A reference to this object.
-
MatrixKit &SetElements(size_t in_value_count, float const in_values[])
Sets some or all elements in the matrix from an array, starting with the first element.
- Parameters
in_value_count – the number of elements in the input array. Valid range is [0, 16].
in_values – An array of float values in row-major order that should replace the values in the matrix.
- Returns
A reference to this object.
-
bool ShowAdjoint(MatrixKit &out_matrix) const
Computes the matrix adjoint of this matrix. The adjoint is similar to the inverse but is always guaranteed to exist, even for singular matrices.
- Parameters
out_matrix – The matrix adjoint of this matrix.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowDeterminant(float &out_determinant) const
Computes the matrix determinant of this matrix.
- Parameters
out_determinant – The matrix determinant.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowElement(size_t in_ordinal_zero_to_fifteen, float &out_value) const
Shows a single matrix element, indexed as a linear array in row-major order.
- Parameters
in_ordinal_zero_to_fifteen – The offset into the matrix. Valid range is [0, 15].
out_value – The matrix element.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowElement(size_t in_row, size_t in_column, float &out_value) const
Shows a single matrix element.
- Parameters
in_row – The row index. Valid range is [0, 3].
in_column – The column index. Valid range is [0, 3].
out_value – The matrix element.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowElements(float out_matrix[]) const
Shows all elements of this matrix as an array.
- Parameters
out_matrix – The contents of the matrix arranged as a linear array in row-major order.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowElements(FloatArray &out_matrix) const
Shows all elements of this matrix as an array.
- Parameters
out_matrix – The contents of the matrix arranged as a linear array in row-major order.
- Returns
true if the setting is valid, false otherwise.
-
bool ShowInverse(MatrixKit &out_matrix) const
Computes the matrix inverse of this matrix. Fails if this matrix is singular (determinant = 0).
- Parameters
out_matrix – The matrix inverse of this matrix.
- Returns
true if the setting is valid, false otherwise.
-
Plane Transform(Plane const &in_source) const
Transform a plane through this matrix.
- Parameters
in_source – The plane to apply a transformation to.
- Returns
A new plane representing the transformed plane.
-
PlaneArray Transform(PlaneArray const &in_source) const
Transform an array of planes through this matrix.
- Parameters
in_source – An array of planes to apply a transformation to.
- Returns
A new plane array representing the transformed planes.
-
Point Transform(Point const &in_source) const
Transform a point through this matrix.
- Parameters
in_source – The point to apply a transformation to.
- Returns
A new point representing the transformed point.
-
PointArray Transform(PointArray const &in_source) const
Transform an array of points through this matrix.
- Parameters
in_source – An array of points to apply a transformation to.
- Returns
A new point array representing the transformed points.
-
SimpleCuboid Transform(SimpleCuboid const &in_source) const
Transform a SimpleCuboid through this matrix.
- Parameters
in_source – The cuboid to apply a transformation to.
- Returns
A new SimpleCuboid representing the transformed cuboid.
-
SimpleSphere Transform(SimpleSphere const &in_source) const
Transform a SimpleSphere through this matrix.
- Parameters
in_source – The sphere to apply a transformation to.
- Returns
A new SimpleSphere representing the transformed sphere.
-
PlaneArray Transform(size_t in_count, Plane const in_source[]) const
Transform an array of planes through this matrix.
- Parameters
in_count – The number of elements in the source array.
in_source – An array of planes to apply a transformation to.
- Returns
A new plane array representing the transformed planes.
-
PointArray Transform(size_t in_count, Point const in_source[]) const
Transform an array of points through this matrix.
- Parameters
in_count – The number of elements in the source array.
in_source – An array of points to apply a transformation to.
- Returns
A new point array representing the transformed points.
-
VectorArray Transform(size_t in_count, Vector const in_source[]) const
Transform an array of vectors through this matrix.
- Parameters
in_count – The number of elements in the source array.
in_source – An array of vectors to apply a transformation to.
- Returns
A new vector array representing the transformed vectors.
-
Vector Transform(Vector const &in_source) const
Transform a vector through this matrix.
- Parameters
in_source – The vector to apply a transformation to.
- Returns
A new vector representing the transformed vector.
-
VectorArray Transform(VectorArray const &in_source) const
Transform an array of vectors through this matrix.
- Parameters
in_source – An array of vectors to apply a transformation to.
- Returns
A new vector array representing the transformed vectors.
-
MatrixKit &Translate(float in_x, float in_y, float in_z)
Concatenates a translation matrix to this matrix that moves geometry.
- Parameters
in_x – The number of units to translate along the x-axis.
in_y – The number of units to translate along the y-axis.
in_z – The number of units to translate along the z-axis.
- Returns
A reference to this object.
-
MatrixKit &Translate(Vector const &in_translation)
Concatenates a translation matrix to this matrix that moves geometry.
- Parameters
in_translation – A vector distance to translate by.
- Returns
A reference to this object.
-
MatrixKit &UnsetEverything()
Sets this kit to an identity matrix.
- Deprecated:
This function exists for compatibility and Reset should be preferred.
- Returns
A reference to this kit.
-
virtual ~MatrixKit()
Destroy this kit.
Public Members
-
float data[16]
Public Static Functions
-
static MatrixKit CreateNormalisationTransformation(int in_width, int in_height)
Creates a MatrixKit representing the transformation matrix from an arbitary 2D space to a normalized space.
- Parameters
in_width – The current space width.
in_heigth – The current space height.
- Returns
A new transformation MatrixKit.
-
MatrixKit &Adjoint()