julien-c's picture
julien-c HF staff
do not gitignore the builds
6cd9596
import { Vector3 } from './Vector3';
import { Euler } from './Euler';
import { Quaternion } from './Quaternion';
import { BufferAttribute } from './../core/BufferAttribute';
import { Matrix } from './Matrix3';
/**
* A 4x4 Matrix.
*
* @example
* // Simple rig for rotating around 3 axes
* var m = new THREE.Matrix4();
* var m1 = new THREE.Matrix4();
* var m2 = new THREE.Matrix4();
* var m3 = new THREE.Matrix4();
* var alpha = 0;
* var beta = Math.PI;
* var gamma = Math.PI/2;
* m1.makeRotationX( alpha );
* m2.makeRotationY( beta );
* m3.makeRotationZ( gamma );
* m.multiplyMatrices( m1, m2 );
* m.multiply( m3 );
*/
export class Matrix4 implements Matrix {
constructor();
/**
* Array with matrix values.
*/
elements: number[];
/**
* Sets all fields of this matrix.
*/
set(
n11: number,
n12: number,
n13: number,
n14: number,
n21: number,
n22: number,
n23: number,
n24: number,
n31: number,
n32: number,
n33: number,
n34: number,
n41: number,
n42: number,
n43: number,
n44: number
): Matrix4;
/**
* Resets this matrix to identity.
*/
identity(): Matrix4;
clone(): this;
copy(m: Matrix4): this;
copyPosition(m: Matrix4): Matrix4;
extractBasis(xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4;
makeBasis(xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4;
/**
* Copies the rotation component of the supplied matrix m into this matrix rotation component.
*/
extractRotation(m: Matrix4): Matrix4;
makeRotationFromEuler(euler: Euler): Matrix4;
makeRotationFromQuaternion(q: Quaternion): Matrix4;
/**
* Constructs a rotation matrix, looking from eye towards center with defined up vector.
*/
lookAt(eye: Vector3, target: Vector3, up: Vector3): Matrix4;
/**
* Multiplies this matrix by m.
*/
multiply(m: Matrix4): Matrix4;
premultiply(m: Matrix4): Matrix4;
/**
* Sets this matrix to a x b.
*/
multiplyMatrices(a: Matrix4, b: Matrix4): Matrix4;
/**
* Sets this matrix to a x b and stores the result into the flat array r.
* r can be either a regular Array or a TypedArray.
*
* @deprecated This method has been removed completely.
*/
multiplyToArray(a: Matrix4, b: Matrix4, r: number[]): Matrix4;
/**
* Multiplies this matrix by s.
*/
multiplyScalar(s: number): Matrix4;
/**
* @deprecated Use {@link Matrix4#applyToBufferAttribute matrix4.applyToBufferAttribute( attribute )} instead.
*/
applyToBuffer(
buffer: BufferAttribute,
offset?: number,
length?: number
): BufferAttribute;
applyToBufferAttribute(attribute: BufferAttribute): BufferAttribute;
/**
* Computes determinant of this matrix.
* Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm
*/
determinant(): number;
/**
* Transposes this matrix.
*/
transpose(): Matrix4;
/**
* Sets the position component for this matrix from vector v.
*/
setPosition(v: Vector3): Matrix4;
/**
* Sets this matrix to the inverse of matrix m.
* Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm.
*/
getInverse(m: Matrix4, throwOnDegeneratee?: boolean): Matrix4;
/**
* Multiplies the columns of this matrix by vector v.
*/
scale(v: Vector3): Matrix4;
getMaxScaleOnAxis(): number;
/**
* Sets this matrix as translation transform.
*/
makeTranslation(x: number, y: number, z: number): Matrix4;
/**
* Sets this matrix as rotation transform around x axis by theta radians.
*
* @param theta Rotation angle in radians.
*/
makeRotationX(theta: number): Matrix4;
/**
* Sets this matrix as rotation transform around y axis by theta radians.
*
* @param theta Rotation angle in radians.
*/
makeRotationY(theta: number): Matrix4;
/**
* Sets this matrix as rotation transform around z axis by theta radians.
*
* @param theta Rotation angle in radians.
*/
makeRotationZ(theta: number): Matrix4;
/**
* Sets this matrix as rotation transform around axis by angle radians.
* Based on http://www.gamedev.net/reference/articles/article1199.asp.
*
* @param axis Rotation axis.
* @param theta Rotation angle in radians.
*/
makeRotationAxis(axis: Vector3, angle: number): Matrix4;
/**
* Sets this matrix as scale transform.
*/
makeScale(x: number, y: number, z: number): Matrix4;
/**
* Sets this matrix to the transformation composed of translation, rotation and scale.
*/
compose(translation: Vector3, rotation: Quaternion, scale: Vector3): Matrix4;
/**
* Decomposes this matrix into the translation, rotation and scale components.
* If parameters are not passed, new instances will be created.
*/
decompose(
translation?: Vector3,
rotation?: Quaternion,
scale?: Vector3
): Object[]; // [Vector3, Quaternion, Vector3]
/**
* Creates a frustum matrix.
*/
makePerspective(
left: number,
right: number,
bottom: number,
top: number,
near: number,
far: number
): Matrix4;
/**
* Creates a perspective projection matrix.
*/
makePerspective(
fov: number,
aspect: number,
near: number,
far: number
): Matrix4;
/**
* Creates an orthographic projection matrix.
*/
makeOrthographic(
left: number,
right: number,
top: number,
bottom: number,
near: number,
far: number
): Matrix4;
equals(matrix: Matrix4): boolean;
fromArray(array: number[], offset?: number): Matrix4;
toArray(): number[];
/**
* @deprecated Use {@link Matrix4#copyPosition .copyPosition()} instead.
*/
extractPosition(m: Matrix4): Matrix4;
/**
* @deprecated Use {@link Matrix4#makeRotationFromQuaternion .makeRotationFromQuaternion()} instead.
*/
setRotationFromQuaternion(q: Quaternion): Matrix4;
/**
* @deprecated Use {@link Vector3#applyMatrix4 vector.applyMatrix4( matrix )} instead.
*/
multiplyVector3(v: any): any;
/**
* @deprecated Use {@link Vector4#applyMatrix4 vector.applyMatrix4( matrix )} instead.
*/
multiplyVector4(v: any): any;
/**
* @deprecated This method has been removed completely.
*/
multiplyVector3Array(array: number[]): number[];
/**
* @deprecated Use {@link Vector3#transformDirection Vector3.transformDirection( matrix )} instead.
*/
rotateAxis(v: any): void;
/**
* @deprecated Use {@link Vector3#applyMatrix4 vector.applyMatrix4( matrix )} instead.
*/
crossVector(v: any): void;
/**
* @deprecated Use {@link Matrix4#toArray .toArray()} instead.
*/
flattenToArrayOffset(array: number[], offset: number): number[];
}