Properties:
Methods:
The Matrix struct represents a transformation matrix.
To use this struct to transform a Vector, construct a matrix containing the desired transformation and then use the Matrix::transformPoint() or Matrix::transformDirection() functions to apply the transform.
Transforms can be combined by multiplying two or more transform matrices using the * operator.
Public Functions
- Since
- 1.0
Public MembersMatrix()Matrix(const Matrix & other)
Constructs a transformation matrix from the specified basis and translation vectors.
Hand leapHand = frame.hand(handID); Vector handXBasis = leapHand.basis().xBasis; Vector handYBasis = leapHand.basis().yBasis; Vector handZBasis = leapHand.basis().zBasis; Vector handOrigin = leapHand.palmPosition(); Matrix handTransform = Matrix(handXBasis, handYBasis, handZBasis, handOrigin);
- Since
- 1.0
- Parameters
Matrix(const Vector & axis, float angleRadians)Constructs a transformation matrix specifying a rotation around the specified vector.
Vector axisOfRotation = leapHand.direction(); float angleOfRotation = 1.27; Matrix rotator = Matrix(axisOfRotation, angleOfRotation);
- Since
- 1.0
- Parameters
- axis -
A Vector specifying the axis of rotation.
- angleRadians -
The amount of rotation in radians.
Constructs a transformation matrix specifying a rotation around the specified vector and a translation by the specified vector.
Vector rotationAxis = Vector::yAxis(); float angle = .733; Vector translation = Vector(10,220,103); Matrix transform = Matrix(rotationAxis, angle, translation);bool operator!=(const Matrix & other)
Multiply transform matrices.
Combines two transformations into a single equivalent transformation.
thisMatrix * thatMatrix;
Multiply transform matrices and assign the product.
thisMatrix *= thatMatrix;
- Since
- 1.0
bool operator==(const Matrix & other)Matrix rigidInverse()Performs a matrix inverse if the matrix consists entirely of rigid transformations (translations and rotations).
If the matrix is not rigid, this operation will not represent an inverse.
thisMatrix = thatMatrix.rigidInverse();Note that all matrices that are directly returned by the API are rigid.
- Return
- The rigid inverse of the matrix.
- Since
- 1.0
void setRotation(const Vector & axis, float angleRadians)Sets this transformation matrix to represent a rotation around the specified vector.
thisMatrix.setRotation(Vector::zAxis(), 1.46);This function erases any previous rotation and scale transforms applied to this matrix, but does not affect translation.
- Since
- 1.0
- Parameters
- axis -
A Vector specifying the axis of rotation.
- angleRadians -
The amount of rotation in radians.
template < typename T >T * toArray3x3(T * output)Writes the 3x3 Matrix object to a 9 element row-major float or double array.
Translation factors are discarded.
Returns a pointer to the same data.
- Since
- 1.0
FloatArray toArray3x3()Convert a 3x3 Matrix object to a 9 element row-major float array.
Translation factors are discarded.
FloatArray rotations = thisMatrix.toArray3x3();Returns a FloatArray struct to avoid dynamic memory allocation.
- Since
- 1.0
template < typename T >T * toArray4x4(T * output)Writes the 4x4 Matrix object to a 16 element row-major float or double array.
Returns a pointer to the same data.
- Since
- 1.0
FloatArray toArray4x4()Convert a 4x4 Matrix object to a 16 element row-major float array.
FloatArray transforms = thisMatrix.toArray4x4();Returns a FloatArray struct to avoid dynamic memory allocation.
- Since
- 1.0
template < typename Matrix3x3Type >const Matrix3x3Type toMatrix3x3()Convert a Leap::Matrix object to another 3x3 matrix type.
The new type must define a constructor function that takes each matrix element as a parameter in row-major order.
Translation factors are discarded.
- Since
- 1.0
template < typename Matrix4x4Type >const Matrix4x4Type toMatrix4x4()Convert a Leap::Matrix object to another 4x4 matrix type.
The new type must define a constructor function that takes each matrix element as a parameter in row-major order.
- Since
- 1.0
std::string toString()Write the matrix to a string in a human readable format.
- Since
- 1.0
Transforms a vector with this matrix by transforming its rotation, scale, and translation.
Vector newPosition = thisMatrix.transformPoint(oldPosition);Translation is applied after rotation and scale.
Public Static FunctionsVector origin
The translation factors for all three axes.
Vector thisTranslation = thisMatrix.origin;
- Since
- 1.0
Vector xBasis
The basis vector for the x-axis.
Vector xTransform = thisMatrix.xBasis;
- Since
- 1.0
Vector yBasis
The basis vector for the y-axis.
Vector yTransform = thisMatrix.yBasis;
- Since
- 1.0
Vector zBasis
The basis vector for the z-axis.
Vector zTransform = thisMatrix.zBasis;
- Since
- 1.0
const Matrix & identity()Returns the identity matrix specifying no translation, rotation, and scale.
Matrix identity = Matrix::identity();
- Return
- The identity matrix.
- Since
- 1.0