Matrix4

Paquete: @aspose/3d (v24.12.0)

Matrix4 almacena una matriz de transformación 4×4 como una matriz plana de 16 números en orden por filas. Es el tipo de Transform.transformMatrix y GlobalTransform.transformMatrix. Los elementos individuales son accesibles como m00m33 propiedades, o por índice mediante getItem(i) / setItem(i, v). Matrix4 se exporta desde el @aspose/3d/utilities subruta.

export class Matrix4
import { Matrix4 } from '@aspose/3d/utilities';

Examples

Construye una matriz TRS combinada y descomponla nuevamente en sus componentes.

import { Matrix4, Vector3, Quaternion } from '@aspose/3d/utilities';

const t = Matrix4.translate(new Vector3(5, 0, 0));
const r = Matrix4.rotate(Quaternion.fromEulerAngle(0, Math.PI / 4, 0));
const s = Matrix4.scale(new Vector3(2, 2, 2));

const trs = t.concatenate(r).concatenate(s);

const translation: any[] = [null];
const scaling: any[] = [null];
const rotation: any[] = [null];
trs.decompose(translation, scaling, rotation);

console.log(`Translation X: ${translation[0].x}`); // Translation X: 5
console.log(`Scale X: ${scaling[0].x.toFixed(4)}`); // Scale X: 2.0000

Examples

NameTypeAccessDescription
m00numberRead/WriteGets the m00.
m01numberRead/WriteGets the m01.
m02numberRead/WriteGets the m02.
m03numberRead/WriteGets the m03.
m10numberRead/WriteGets the m10.
m11numberRead/WriteGets the m11.
m12numberRead/WriteGets the m12.
m13numberRead/WriteGets the m13.
m20numberRead/WriteGets the m20.
m21numberRead/WriteGets the m21.
m22numberRead/WriteGets the m22.
m23numberRead/WriteGets the m23.
m30numberRead/WriteGets the m30.
m31numberRead/WriteGets the m31.
m32numberRead/WriteGets the m32.
m33numberRead/WriteGets the m33.
determinantnumberReadGets the determinant.

Propiedades estáticas

SignatureDescription
constructor()Creates a new 4x4 matrix, optionally from a 16‑element number array
constructor(matrix: number[])
constructor()
constructor()
getItem(key: number)numberReturns the matrix element at the given linear index
setItem(key: number, value: number)Sets the item value.
transpose()Matrix4Returns a new Matrix4 that is the transpose of this matrix
concatenate(m2: Matrix4)Matrix4
normalize()Matrix4Returns a new Matrix4 with uniform scaling removed (unit length axes)
inverse()Matrix4
decompose(translation: any[], scaling: any[], rotation: any[])Extracts translation, scaling, and rotation into the supplied arrays
setTRS(translation: any, rotation: any, scale: any)Sets the trs value.
toArray()number[]Returns the matrix elements as a 16‑length number array in row‑major order
identity()Matrix4Resets the matrix to the identity matrix and returns this instance
translate(tx: number, ty: number, tz: number)Matrix4Applies a translation by (tx,ty,tz) or a vector and returns this matrix
translate(v: any)Matrix4
translate(tx: any, ty: any, tz: any)Matrix4
scale(sx: number, sy: number, sz: number)Matrix4Applies scaling by (sx,sy,sz) or a vector and returns this matrix
scale(v: any)Matrix4
scale(sx: any, sy: any, sz: any)Matrix4
rotateFromEuler(rx: number, ry: number, rz: number)Matrix4
rotateFromEuler(v: any)Matrix4
rotateFromEuler(rx: any, ry: any, rz: any)Matrix4
rotate(angle: number, axis: any)Matrix4Creates a rotation matrix from an angle and axis or from a quaternion
rotate(q: Quaternion)Matrix4
rotate(angle: any, axis: any)Matrix4
toString()stringReturns a human‑readable string representation of the matrix values
equals(other: Matrix4)booleanCompares this matrix with another for element‑wise equality

Examples

Los 16 elementos de la matriz son accesibles como propiedades nombradas individuales. m00, m01, m02, m03, m10, …, m33, donde el primer dígito es la fila y el segundo es la columna. Todas son legibles y escribibles.

ExamplesExamplesExamples
m00m33numberElementos individuales de la matriz (disposición por filas).
determinantnumber (solo lectura)El determinante escalar de la matriz.

Métodos estáticos

Matrix4.translate(v)

Crea una matriz de traslación pura a partir de un Vector3, o a partir de individual (tx, ty, tz) números.

static translate(v: Vector3): Matrix4
static translate(tx: number, ty?: number, tz?: number): Matrix4

Examples

import { Matrix4, Vector3 } from '@aspose/3d/utilities';

const m = Matrix4.translate(new Vector3(3, 0, 0));
console.log(`m03: ${m.m03}`); // m03: 3

Matrix4.scale(v)

Crea una matriz de escalado puro a partir de un Vector3, o de individual (sx, sy, sz) números.

static scale(v: Vector3): Matrix4
static scale(sx: number, sy?: number, sz?: number): Matrix4

Matrix4.rotate(q)

Crea una matriz de rotación a partir de una Quaternion, o a partir de un ángulo (en radianes) y un eje Vector3.

static rotate(q: Quaternion): Matrix4
static rotate(angle: number, axis: Vector3): Matrix4

Examples

import { Matrix4, Quaternion } from '@aspose/3d/utilities';

const q = Quaternion.fromEulerAngle(0, Math.PI / 2, 0);
const m = Matrix4.rotate(q);
console.log(`Rotation matrix m00: ${m.m00.toFixed(4)}`);
// Rotation matrix m00: 0.0000

Matrix4.rotateFromEuler(rx, ry, rz)

Crea una matriz de rotación a partir de ángulos de Euler en radianes.

static rotateFromEuler(rx: number, ry?: number, rz?: number): Matrix4
static rotateFromEuler(v: Vector3): Matrix4

Métodos de instancia

concatenate(m2)

Devuelve el producto de matrices this × m2. Utiliza esto para combinar transformaciones (aplicar this primero, luego m2).

concatenate(m2: Matrix4): Matrix4

Examples

import { Matrix4, Vector3 } from '@aspose/3d/utilities';

const translate = Matrix4.translate(new Vector3(1, 0, 0));
const scale = Matrix4.scale(new Vector3(2, 2, 2));
const combined = translate.concatenate(scale);
console.log(`m03: ${combined.m03}`); // m03: 1

inverse()

Devuelve la inversa de esta matriz. Lanza una excepción si la matriz es singular (determinante cercano a cero).

inverse(): Matrix4

transpose()

Devuelve la transpuesta de esta matriz (las filas se convierten en columnas).

transpose(): Matrix4

normalize()

Devuelve una nueva matriz con la submatriz de rotación (3×3 superior izquierda) ortonormalizada dividiendo cada fila por su longitud. La columna de traslación se conserva.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Descompone esta matriz en componentes de traslación, escala y rotación. Los resultados se escriben en el primer elemento de cada arreglo de salida.

decompose(translation: any[], scaling: any[], rotation: any[]): void

Examples

translation any[] — Matriz de salida. Después de la llamada, translation[0] es un objeto {x, y, z} con la traducción.

scaling any[] — Matriz de salida. Después de la llamada, scaling[0] es un objeto {x, y, z} con los factores de escala.

rotation any[] — Matriz de salida. Después de la llamada, rotation[0] es un objeto {w, x, y, z} con los componentes del cuaternión de rotación.

Examples

import { Matrix4, Vector3, Quaternion } from '@aspose/3d/utilities';

const m = Matrix4.translate(new Vector3(0, 5, 0));
const trans: any[] = [null], scale: any[] = [null], rot: any[] = [null];
m.decompose(trans, scale, rot);
console.log(`Y: ${trans[0].y}`); // Y: 5

setTRS(translation, rotation, scale)

Establece esta matriz al producto de una traslación, rotación y escala. Las entradas pueden ser objetos simples con x, y, z (y w para rotación) campos.

setTRS(translation: any, rotation: any, scale: any): void

toArray()

Devuelve una copia del array interno de 16 elementos en orden fila mayor.

toArray(): number[]

getItem(index) / setItem(index, value)

Acceso a elementos mediante índice lineal (0–15, orden fila mayor).

getItem(key: number): number
setItem(key: number, value: number): void

equals(other)

Examples true si todos los 16 elementos son estrictamente iguales.

equals(other: Matrix4): boolean
 Español