ModellingMatrixControl

class HPS::ModellingMatrixControl : public HPS::Control

The ModellingMatrixControl class is a smart pointer that is tied to a database object. This control gives you access to a segment’s modelling matrix. You can set an entire matrix or individual elements. Additionally, this class provides a small set of utility methods for all the basic transformations, as well as getting the matrix adjoint and determinant. Elements of modelling matrices are in row-major order.

Public Functions

ModellingMatrixControl &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.

ModellingMatrixControl &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.

ModellingMatrixControl &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.

ModellingMatrixControl(ModellingMatrixControl &&in_that)

The move constructor creates a ModellingMatrixControl by transferring the underlying impl of the rvalue reference to this ModellingMatrixControl thereby avoiding a copy and allocation.

Parameters

in_that – An rvalue reference to a ModellingMatrixControl to take the impl from.

ModellingMatrixControl(ModellingMatrixControl const &in_that)

Initializes a control tied to the same object as in_that.

explicit ModellingMatrixControl(ReferenceKey const &in_ref)

Initializes a control tied to the geometry reference in_ref.

explicit ModellingMatrixControl(SegmentKey const &in_seg)

Initializes a control tied to the segment in_seg.

ModellingMatrixControl &Normalize()

Divides this matrix by its determinant. If this matrix is singular (determinant = 0), it will be unchanged.

Returns

A reference to this object.

inline virtual HPS::Type ObjectType() const

This function returns the type the object, as declared (if the object is derived, this does not give the true type of the derived object).

Returns

The declared type of the object in question, which may differ from the true, underlying type.

ModellingMatrixControl &operator=(ModellingMatrixControl &&in_that)

The move assignment operator transfers the underlying impl of the rvalue reference to this ModellingMatrixControl thereby avoiding a copy.

Parameters

in_that – An rvalue reference to a ModellingMatrixControl to take the impl from.

Returns

A reference to this ModellingMatrixControl.

ModellingMatrixControl &operator=(ModellingMatrixControl const &in_that)

Share the underlying smart-pointer of the ModellingMatrixControl source.

Parameters

in_that – The ModellingMatrixControl source of the assignment.

Returns

A reference to this ModellingMatrixControl.

ModellingMatrixControl &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.

ModellingMatrixControl &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.

ModellingMatrixControl &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.

ModellingMatrixControl &Set(MatrixKit const &in_matrix)

Copies all settings from the source MatrixKit into this object.

Parameters

in_matrix – The source MatrixKit to copy.

ModellingMatrixControl &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.

ModellingMatrixControl &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.

ModellingMatrixControl &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.

ModellingMatrixControl &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 Show(MatrixKit &out_matrix) const

Copies all settings from this control into the given MatrixKit.

Parameters

out_matrix – The MatrixKit to populate with the contents of 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(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.

ModellingMatrixControl &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.

ModellingMatrixControl &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.

ModellingMatrixControl &UnsetEverything()

Removes all settings from this object.

Returns

A reference to this object.

~ModellingMatrixControl()

Releases a reference to the database object this control is tied to.

Public Static Attributes

static const HPS::Type staticType = HPS::Type::ModellingMatrixControl