@drew-y/transformation-matrix
Version:
3D Transformation Matrix Utility
50 lines (49 loc) • 2.41 kB
TypeScript
import { EulerOrder } from "./definitions";
/**
* Transformation Matrix helper class.
*
* Adapted from mrdoob/three.js at
* https://github.com/mrdoob/three.js/blob/d4aa9e00ea29808534a3e082f602c544e5f2419c/src/math/Matrix3.js
* */
export declare class Matrix {
private elements;
getElements(): number[];
/** XYZ Position */
getPosition(): [number, number, number];
/**
* @param order - Euler angle order.
* returns [X, Y, Z, RX, RY, RZ]
*/
getPose(order?: EulerOrder): [number, number, number, number, number, number];
/** Set from a flat 4x4 column major transformation matrix */
setFromMatrixArray(matrix: number[]): this;
setPose(x: number, y: number, z: number, rx: number, ry: number, rz: number, order?: EulerOrder): this;
setPosition(x: number, y: number, z: number): this;
/** Set from euler angles in degrees. */
setRotation(x: number, y: number, z: number, order?: EulerOrder): this;
setRotationFromQuaternion(x: number, y: number, z: number, w: number): this;
/** Creates a new Matrix that is the product of this matrix and the passed one. */
multiplied(m: Matrix): Matrix;
/** Multiply this matrix by the passed one */
multiply(matrix: Matrix): this;
/** Alias for multiply */
transform(matrix: Matrix): this;
/** Rotates this matrix by the supplied quaternion */
applyQuaternion(x: number, y: number, z: number, w: number): Matrix;
/** Create a new matrix that represents this one rotated by the passed angles */
rotated(x: number, y: number, z: number, order?: EulerOrder): Matrix;
/** Rotate this matrix by the passed angles */
rotate(x: number, y: number, z: number, order?: EulerOrder): this;
/** Returns a three length array representing angles in degrees */
getEuler(order?: EulerOrder): [number, number, number];
/** Returns a quaternion representing this rotation as XYZW */
toQuaternion(): [number, number, number, number];
/** Extract the rotational portion of this matrix to a 3x3 column-major flat array */
toMatrix3Array(): number[];
toJSON(): number[];
toArray(): number[];
clone(): Matrix;
static fromPose(x: number, y: number, z: number, rx: number, ry: number, rz: number, order?: EulerOrder): Matrix;
/** Create a new matrix from a flat 4x4 column-major array */
static fromArray(matrix: number[]): Matrix;
}