# Matrix¶

Properties:

Methods:

class Leap::Matrix

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.

Since
1.0

Public Functions

bool Equals(Matrix other)

Compare Matrix equality component-wise.

thisMatrix == thatMatrix;


Since
1.0

Matrix()

Constructs an identity transformation matrix.

Matrix identityMatrix = new Matrix ();


Since
1.0

Matrix(Matrix other)

Constructs a copy of the specified Matrix object.

Matrix thisMatrix = new Matrix (thatMatrix);


Since
1.0

Matrix(Vector _xBasis, Vector _yBasis, Vector _zBasis)

Constructs a transformation matrix from the specified basis vectors.

Vector xBasis = new Vector (23, 0, 0);
Vector yBasis = new Vector (0, 12, 0);
Vector zBasis = new Vector (0, 0, 45);
Matrix transformMatrix = new Matrix (xBasis, yBasis, zBasis);


Since
1.0
Parameters
• _xBasis -

A Vector specifying rotation and scale factors for the x-axis.

• _yBasis -

A Vector specifying rotation and scale factors for the y-axis.

• _zBasis -

A Vector specifying rotation and scale factors for the z-axis.

Matrix(Vector _xBasis, Vector _yBasis, Vector _zBasis, Vector _origin)

Constructs a transformation matrix from the specified basis and translation vectors.

Hand leapHand = frame.Hand (handID);
Vector handXBasis = leapHand.PalmNormal.Cross (leapHand.Direction.Normalized);
Vector handYBasis = -leapHand.PalmNormal;
Vector handZBasis = -leapHand.Direction;
Vector handOrigin = leapHand.PalmPosition;
Matrix handTransform = new Matrix (handXBasis, handYBasis, handZBasis, handOrigin);


Since
1.0
Parameters
• _xBasis -

A Vector specifying rotation and scale factors for the x-axis.

• _yBasis -

A Vector specifying rotation and scale factors for the y-axis.

• _zBasis -

A Vector specifying rotation and scale factors for the z-axis.

• _origin -

A Vector specifying translation factors on all three axes.

Constructs a transformation matrix specifying a rotation around the specified vector.

Vector axisOfRotation = hand.Direction;
float angleOfRotation = 1.27f;
Matrix rotator = new Matrix (axisOfRotation, angleOfRotation);


Since
1.0
Parameters
• axis -

A Vector specifying the axis of rotation.

The amount of rotation in radians.

Matrix(Vector axis, float angleRadians, Vector translation)

Constructs a transformation matrix specifying a rotation around the specified vector and a translation by the specified vector.

Vector rotationAxis = Vector.YAxis;
float angle = .733f;
Vector translation = new Vector (10, 220, 103);
Matrix transform = new Matrix (rotationAxis, angle, translation);


Since
1.0
Parameters
• axis -

A Vector specifying the axis of rotation.

The angle of rotation in radians.

• translation -

A Vector representing the translation part of the transform.

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

Sets this transformation matrix to represent a rotation around the specified vector.

thisMatrix.SetRotation (Vector.ZAxis, 1.46f);


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.

The amount of rotation in radians.

float[] ToArray3x3(float[] output)

Copy this matrix to the specified array of 9 float values in row-major order.

double[] ToArray3x3(double[] output)

Copy this matrix to the specified array containing 9 double values in row-major order.

float[] ToArray3x3()

Convert this matrix to an array containing 9 float values in row-major order.

float[] ToArray4x4(float[] output)

Copy this matrix to the specified array of 16 float values in row-major order.

double[] ToArray4x4(double[] output)

Copy this matrix to the specified array of 16 double values in row-major order.

float[] ToArray4x4()

Convert this matrix to an array containing 16 float values in row-major order.

override string ToString()

Write the matrix to a string in a human readable format.

Since
1.0

Vector TransformDirection(Vector arg0)

Transforms a vector with this matrix by transforming its rotation and scale only.

Vector newDirection = thisMatrix.TransformDirection (oldDirection);


Return
A new Vector representing the transformed original.
Since
1.0
Parameters
• in -

The Vector to transform.

Vector TransformPoint(Vector arg0)

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.

Return
A new Vector representing the transformed original.
Since
1.0
Parameters
• in -

The Vector to transform.

Property

Matrix Identity

Returns the identity matrix specifying no translation, rotation, and scale.

Matrix identity = Matrix.Identity;


Return
The identity matrix.
Since
1.0

Vector 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

Public Static Functions

Matrix operator*(Matrix m1, Matrix m2)

Multiply two matrices.