#include <hps.h>

Public Member Functions

MatrixKitAdjoint ()
 
MatrixKitConcatenate (MatrixKit const &in_kit)
 
bool Empty () const
 
bool Equals (MatrixKit const &in_kit) const
 
MatrixKitInvert ()
 
bool IsIdentity () const
 
 MatrixKit ()
 
 MatrixKit (MatrixKit const &in_other)
 
 MatrixKit (FloatArray const &in_matrix_source)
 
 MatrixKit (float const in_matrix_source[])
 
 MatrixKit (Quaternion const &in_quaternion)
 
MatrixKit Multiply (MatrixKit const &in_right) const
 
MatrixKit Multiply (float in_scalar) const
 
MatrixKitMultiplyAndAssign (MatrixKit const &in_right)
 
MatrixKitMultiplyAndAssign (float in_scalar)
 
MatrixKitNormalize ()
 
bool operator!= (MatrixKit const &in_kit) const
 
MatrixKit operator* (MatrixKit const &in_right) const
 
MatrixKit operator* (float in_scalar) const
 
MatrixKit const & operator*= (MatrixKit const &in_right)
 
MatrixKit const & operator*= (float in_scalar)
 
MatrixKitoperator= (MatrixKit const &in_kit)
 
bool operator== (MatrixKit const &in_kit) const
 
void Reset ()
 
MatrixKitRotate (float in_x, float in_y, float in_z)
 
MatrixKitRotateOffAxis (Vector const &in_vector, float in_theta)
 
MatrixKitScale (float in_x, float in_y, float in_z)
 
void Set (MatrixKit const &other)
 
MatrixKitSetElement (size_t in_row, size_t in_column, float in_value)
 
MatrixKitSetElement (size_t in_ordinal_zero_to_fifteen, float in_value)
 
MatrixKitSetElements (FloatArray const &in_values)
 
MatrixKitSetElements (size_t in_value_count, float const in_values[])
 
bool ShowAdjoint (MatrixKit &out_matrix) const
 
bool ShowDeterminant (float &out_determinant) const
 
bool ShowElement (size_t in_row, size_t in_column, float &out_value) const
 
bool ShowElement (size_t in_ordinal_zero_to_fifteen, float &out_value) const
 
bool ShowElements (FloatArray &out_matrix) const
 
bool ShowElements (float out_matrix[]) const
 
bool ShowInverse (MatrixKit &out_matrix) const
 
Point Transform (Point const &in_source) const
 
PointArray Transform (PointArray const &in_source) const
 
PointArray Transform (size_t in_count, Point const in_source[]) const
 
Vector Transform (Vector const &in_source) const
 
VectorArray Transform (VectorArray const &in_source) const
 
VectorArray Transform (size_t in_count, Vector const in_source[]) const
 
Plane Transform (Plane const &in_source) const
 
PlaneArray Transform (PlaneArray const &in_source) const
 
PlaneArray Transform (size_t in_count, Plane const in_source[]) const
 
SimpleCuboid Transform (SimpleCuboid const &in_source) const
 
SimpleSphere Transform (SimpleSphere const &in_source) const
 
MatrixKitTranslate (float in_x, float in_y, float in_z)
 
MatrixKitTranslate (Vector const &in_translation)
 
MatrixKitUnsetEverything ()
 
virtual ~MatrixKit ()
 

Static Public Member Functions

static MatrixKit GetDefault ()
 

Public Attributes

float data [16]
 

Detailed Description

The MatrixKit class is a user space object, useful for carrying a group attribute settings.

Constructor & Destructor Documentation

◆ MatrixKit() [1/5]

HPS::MatrixKit::MatrixKit ( )

Initializes an identity matrix.

◆ MatrixKit() [2/5]

HPS::MatrixKit::MatrixKit ( MatrixKit const &  in_other)

The copy constructor creates a new MatrixKit object that contains the same settings as the source object.

Parameters
in_kitThe source object to copy.

◆ MatrixKit() [3/5]

HPS::MatrixKit::MatrixKit ( FloatArray const &  in_matrix_source)

This constructor allows implicit construction from an array of floats.

Parameters
in_matrix_sourceAn 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() [4/5]

HPS::MatrixKit::MatrixKit ( float const  in_matrix_source[])

This constructor allows implicit construction from an array of floats.

Parameters
in_matrix_sourceAn 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() [5/5]

HPS::MatrixKit::MatrixKit ( Quaternion const &  in_quaternion)

This constructor allows implicit construction from a quaternion.

Parameters
in_quaternionA quaternion used to construct a new matrix.

◆ ~MatrixKit()

virtual HPS::MatrixKit::~MatrixKit ( )
virtual

Destroy this kit.

Member Function Documentation

◆ Adjoint()

MatrixKit& HPS::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.

◆ Concatenate()

MatrixKit& HPS::MatrixKit::Concatenate ( MatrixKit const &  in_kit)

Replaces this matrix with the matrix product of itself multiplied by another matrix.

Parameters
in_kitthe right side operand of the matrix multiplication.
Returns
A reference to this object.

◆ Empty()

bool HPS::MatrixKit::Empty ( ) const

Indicates whether this object has any values set on it.

Returns
true if no values are set on this object, false otherwise.
Deprecated:
This function exists for compatibility and will always return false.

◆ Equals()

bool HPS::MatrixKit::Equals ( MatrixKit const &  in_kit) const

Check if the source MatrixKit is equivalent to this object.

Parameters
in_kitThe source MatrixKit to compare to this object.
Returns
true if the objects are equivalent, false otherwise.

◆ GetDefault()

static MatrixKit HPS::MatrixKit::GetDefault ( )
static

Creates a MatrixKit representing the identity matrix.

Returns
An identity MatrixKit.

◆ Invert()

MatrixKit& HPS::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.

◆ IsIdentity()

bool HPS::MatrixKit::IsIdentity ( ) const

Indicates whether or not this matrix is an identity matrix

Returns
Whether this matrix is an identity matrix.

◆ Multiply() [1/2]

MatrixKit HPS::MatrixKit::Multiply ( MatrixKit const &  in_right) const

Performs a matrix multiplication with this object as the left operand.

Parameters
in_rightA matrix used as the right operand of a matrix multiplication.
Returns
A new MatrixKit representing the product.

◆ Multiply() [2/2]

MatrixKit HPS::MatrixKit::Multiply ( float  in_scalar) const

Performs a scalar multiplication of this matrix.

Parameters
in_scalarA scalar to multiply this object by.
Returns
A new MatrixKit representing the product.

◆ MultiplyAndAssign() [1/2]

MatrixKit& HPS::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_rightA matrix used as the right operand of a matrix multiplication.
Returns
A reference to this object after the multiplication.

◆ MultiplyAndAssign() [2/2]

MatrixKit& HPS::MatrixKit::MultiplyAndAssign ( float  in_scalar)

Performs a scalar multiplication of this matrix and then assigns it to this object.

Parameters
in_scalarA scalar to multiply this object by.
Returns
A reference to this object after the multiplication.

◆ Normalize()

MatrixKit& HPS::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.

◆ operator!=()

bool HPS::MatrixKit::operator!= ( MatrixKit const &  in_kit) const

Check if the source MatrixKit is not equivalent to this object.

Parameters
in_kitThe source MatrixKit to compare to this object.
Returns
true if the objects are not equivalent, false otherwise.

◆ operator*() [1/2]

MatrixKit HPS::MatrixKit::operator* ( MatrixKit const &  in_right) const

Performs a matrix multiplication with this object as the left operand.

Parameters
in_rightA matrix used as the right operand of a matrix multiplication.
Returns
A new MatrixKit representing the product.

◆ operator*() [2/2]

MatrixKit HPS::MatrixKit::operator* ( float  in_scalar) const

Performs a scalar multiplication of this matrix.

Parameters
in_scalarA scalar to multiply this object by.
Returns
A new MatrixKit representing the product.

◆ operator*=() [1/2]

MatrixKit const& HPS::MatrixKit::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_rightA matrix used as the right operand of a matrix multiplication.
Returns
A reference to this object after the multiplication.

◆ operator*=() [2/2]

MatrixKit const& HPS::MatrixKit::operator*= ( float  in_scalar)

Performs a scalar multiplication of this matrix and then assigns it to this object.

Parameters
in_scalarA scalar to multiply this object by.
Returns
A reference to this object after the multiplication.

◆ operator=()

MatrixKit& HPS::MatrixKit::operator= ( MatrixKit const &  in_kit)

Copies the source MatrixKit into this object.

Parameters
in_kitThe source MatrixKit to copy.
Returns
A reference to this object.

◆ operator==()

bool HPS::MatrixKit::operator== ( MatrixKit const &  in_kit) const

Check if the source MatrixKit is equivalent to this object.

Parameters
in_kitThe source MatrixKit to compare to this object.
Returns
true if the objects are equivalent, false otherwise.

◆ Reset()

void HPS::MatrixKit::Reset ( )

Sets this kit to an identity matrix.

◆ Rotate()

MatrixKit& HPS::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_xThe number of degrees to rotate around the x-axis.
in_yThe number of degrees to rotate around the y-axis.
in_zThe number of degrees to rotate around the z-axis.
Returns
A reference to this object.

◆ RotateOffAxis()

MatrixKit& HPS::MatrixKit::RotateOffAxis ( Vector const &  in_vector,
float  in_theta 
)

Concatenates a rotation matrix to this matrix with rotation around an arbitrary vector.

Parameters
in_vectorThe vector to rotate around.
in_thetathe number of degrees to rotate around the specified vector
Returns
A reference to this object.

◆ Scale()

MatrixKit& HPS::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_xThe scale multiplier along the x-axis.
in_yThe scale multiplier along the y-axis.
in_zThe scale multiplier along the z-axis.
Returns
A reference to this object.

◆ Set()

void HPS::MatrixKit::Set ( MatrixKit const &  other)

Copies the data from the source MatrixKit into this object.

Parameters
in_otherThe source MatrixKit to copy.

◆ SetElement() [1/2]

MatrixKit& HPS::MatrixKit::SetElement ( size_t  in_row,
size_t  in_column,
float  in_value 
)

Sets a single matrix element.

Parameters
in_rowThe row index. Valid range is [0, 3].
in_columnThe column index. Valid range is [0, 3].
in_valueThe matrix element.
Returns
A reference to this object.

◆ SetElement() [2/2]

MatrixKit& HPS::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_fifteenThe offset into the matrix. Valid range is [0, 15].
in_valueThe matrix element.
Returns
A reference to this object.

◆ SetElements() [1/2]

MatrixKit& HPS::MatrixKit::SetElements ( FloatArray const &  in_values)

Sets some or all elements in the matrix from an array, starting with the first element.

Parameters
in_valuesAn array of float values in row-major order that should replace the values in the matrix.
Returns
A reference to this object.

◆ SetElements() [2/2]

MatrixKit& HPS::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_countthe number of elements in the input array. Valid range is [0, 16].
in_valuesAn array of float values in row-major order that should replace the values in the matrix.
Returns
A reference to this object.

◆ ShowAdjoint()

bool HPS::MatrixKit::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_matrixThe matrix adjoint of this matrix.
Returns
true if the setting is valid, false otherwise.

◆ ShowDeterminant()

bool HPS::MatrixKit::ShowDeterminant ( float &  out_determinant) const

Computes the matrix determinant of this matrix.

Parameters
out_determinantThe matrix determinant.
Returns
true if the setting is valid, false otherwise.

◆ ShowElement() [1/2]

bool HPS::MatrixKit::ShowElement ( size_t  in_row,
size_t  in_column,
float &  out_value 
) const

Shows a single matrix element.

Parameters
in_rowThe row index. Valid range is [0, 3].
in_columnThe column index. Valid range is [0, 3].
out_valueThe matrix element.
Returns
true if the setting is valid, false otherwise.

◆ ShowElement() [2/2]

bool HPS::MatrixKit::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_fifteenThe offset into the matrix. Valid range is [0, 15].
out_valueThe matrix element.
Returns
true if the setting is valid, false otherwise.

◆ ShowElements() [1/2]

bool HPS::MatrixKit::ShowElements ( FloatArray out_matrix) const

Shows all elements of this matrix as an array.

Parameters
out_matrixThe contents of the matrix arranged as a linear array in row-major order.
Returns
true if the setting is valid, false otherwise.

◆ ShowElements() [2/2]

bool HPS::MatrixKit::ShowElements ( float  out_matrix[]) const

Shows all elements of this matrix as an array.

Parameters
out_matrixThe contents of the matrix arranged as a linear array in row-major order.
Returns
true if the setting is valid, false otherwise.

◆ ShowInverse()

bool HPS::MatrixKit::ShowInverse ( MatrixKit out_matrix) const

Computes the matrix inverse of this matrix. Fails if this matrix is singular (determinant = 0).

Parameters
out_matrixThe matrix inverse of this matrix.
Returns
true if the setting is valid, false otherwise.

◆ Transform() [1/11]

Point HPS::MatrixKit::Transform ( Point const &  in_source) const

Transform a point through this matrix.

Parameters
in_sourceThe point to apply a transformation to.
Returns
A new point representing the transformed point.

◆ Transform() [2/11]

PointArray HPS::MatrixKit::Transform ( PointArray const &  in_source) const

Transform an array of points through this matrix.

Parameters
in_sourceAn array of points to apply a transformation to.
Returns
A new point array representing the transformed points.

◆ Transform() [3/11]

PointArray HPS::MatrixKit::Transform ( size_t  in_count,
Point const  in_source[] 
) const

Transform an array of points through this matrix.

Parameters
in_countThe number of elements in the source array.
in_sourceAn array of points to apply a transformation to.
Returns
A new point array representing the transformed points.

◆ Transform() [4/11]

Vector HPS::MatrixKit::Transform ( Vector const &  in_source) const

Transform a vector through this matrix.

Parameters
in_sourceThe vector to apply a transformation to.
Returns
A new vector representing the transformed vector.

◆ Transform() [5/11]

VectorArray HPS::MatrixKit::Transform ( VectorArray const &  in_source) const

Transform an array of vectors through this matrix.

Parameters
in_sourceAn array of vectors to apply a transformation to.
Returns
A new vector array representing the transformed vectors.

◆ Transform() [6/11]

VectorArray HPS::MatrixKit::Transform ( size_t  in_count,
Vector const  in_source[] 
) const

Transform an array of vectors through this matrix.

Parameters
in_countThe number of elements in the source array.
in_sourceAn array of vectors to apply a transformation to.
Returns
A new vector array representing the transformed vectors.

◆ Transform() [7/11]

Plane HPS::MatrixKit::Transform ( Plane const &  in_source) const

Transform a plane through this matrix.

Parameters
in_sourceThe plane to apply a transformation to.
Returns
A new plane representing the transformed plane.

◆ Transform() [8/11]

PlaneArray HPS::MatrixKit::Transform ( PlaneArray const &  in_source) const

Transform an array of planes through this matrix.

Parameters
in_sourceAn array of planes to apply a transformation to.
Returns
A new plane array representing the transformed planes.

◆ Transform() [9/11]

PlaneArray HPS::MatrixKit::Transform ( size_t  in_count,
Plane const  in_source[] 
) const

Transform an array of planes through this matrix.

Parameters
in_countThe number of elements in the source array.
in_sourceAn array of planes to apply a transformation to.
Returns
A new plane array representing the transformed planes.

◆ Transform() [10/11]

SimpleCuboid HPS::MatrixKit::Transform ( SimpleCuboid const &  in_source) const

Transform a SimpleCuboid through this matrix.

Parameters
in_sourceThe cuboid to apply a transformation to.
Returns
A new SimpleCuboid representing the transformed cuboid.

◆ Transform() [11/11]

SimpleSphere HPS::MatrixKit::Transform ( SimpleSphere const &  in_source) const

Transform a SimpleSphere through this matrix.

Parameters
in_sourceThe sphere to apply a transformation to.
Returns
A new SimpleSphere representing the transformed sphere.

◆ Translate() [1/2]

MatrixKit& HPS::MatrixKit::Translate ( float  in_x,
float  in_y,
float  in_z 
)

Concatenates a translation matrix to this matrix that moves geometry.

Parameters
in_xThe number of units to translate along the x-axis.
in_yThe number of units to translate along the y-axis.
in_zThe number of units to translate along the z-axis.
Returns
A reference to this object.

◆ Translate() [2/2]

MatrixKit& HPS::MatrixKit::Translate ( Vector const &  in_translation)

Concatenates a translation matrix to this matrix that moves geometry.

Parameters
in_translationA vector distance to translate by.
Returns
A reference to this object.

◆ UnsetEverything()

MatrixKit& HPS::MatrixKit::UnsetEverything ( )

Sets this kit to an identity matrix.

Returns
A reference to this kit.
Deprecated:
This function exists for compatibility and Reset should be preferred.

The documentation for this class was generated from the following file: