Class Matrix4
Paquet: @aspose/3d (v24.12.0)
Matrix4 emmagatzema una matriu de transformació 4×4 com una matriu plana de 16 nombres en ordre per files. És el tipus de Transform.transformMatrix i GlobalTransform.transformMatrix. Els elements individuals són accessibles com a m00–m33 propietats, o per índex mitjançant getItem(i) / setItem(i, v). Matrix4 s’exporta des del @aspose/3d/utilities subcamí.
export class Matrix4import { Matrix4 } from '@aspose/3d/utilities';Example
Construeix una matriu TRS combinada i descompon-la de nou en components.
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
Example
| Example | Example |
|---|---|
new Matrix4() | Crea la matriu d’identitat 4×4. |
new Matrix4(matrix: number[]) | Crea una matriu a partir d’una matriu de 16 elements en ordre per files. |
new Matrix4(...args: number[]) | Crea una matriu a partir de 16 arguments numèrics individuals. |
Propietats estàtiques
| Example | Example | Example |
|---|---|---|
Matrix4.identity | Matrix4 | Retorna una nova matriu d’identitat. |
Example
Els 16 elements de la matriu són accessibles com a propietats individuals amb nom m00, m01, m02, m03, m10, …, m33, on el primer dígit és la fila i el segon és la columna. Tots són llegibles i modificables.
| Example | Example | Example |
|---|---|---|
m00–m33 | number | Elements individuals de la matriu (disposició per files). |
determinant | number (només lectura) | El determinant escalar de la matriu. |
Converteix aquest quaternion a una matriu de rotació Matrix4 equivalent.
Matrix4.translate(v)
Crea una matriu de translació pura a partir d’un Vector3, o a partir d’individuals (tx, ty, tz) nombres.
static translate(v: Vector3): Matrix4
static translate(tx: number, ty?: number, tz?: number): Matrix4Example
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 matriu d’escalat pura a partir d’un Vector3, o des de individual (sx, sy, sz) nombres.
static scale(v: Vector3): Matrix4
static scale(sx: number, sy?: number, sz?: number): Matrix4Matrix4.rotate(q)
Crea una matriu de rotació a partir d’una Quaternion, o a partir d’un angle (en radians) i un eix Vector3.
static rotate(q: Quaternion): Matrix4
static rotate(angle: number, axis: Vector3): Matrix4Example
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 matriu de rotació a partir d’angles d’Euler en radians.
static rotateFromEuler(rx: number, ry?: number, rz?: number): Matrix4
static rotateFromEuler(v: Vector3): Matrix4toString()
concatenate(m2)
Retorna el producte de matrius this × m2. Utilitza això per combinar transformacions (aplica this primer, després m2).
concatenate(m2: Matrix4): Matrix4Example
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()
Retorna l’invers d’aquesta matriu. Llença una excepció si la matriu és singular (determinant proper a zero).
inverse(): Matrix4transpose()
Retorna la transposada d’aquesta matriu (les files es converteixen en columnes).
transpose(): Matrix4normalize()
Retorna una nova matriu amb la submatriu de rotació (la part superior esquerra de 3×3) ortonormalitzada dividint cada fila per la seva longitud. La columna de translació es conserva.
normalize(): Matrix4decompose(translation, scaling, rotation)
Descompon aquesta matriu en components de translació, escala i rotació. Els resultats s’escriuen al primer element de cada array de sortida.
decompose(translation: any[], scaling: any[], rotation: any[]): voidExample
translation any[] — Matriu de sortida. Després de la crida, translation[0] és un objecte {x, y, z} amb la translació.
scaling any[] — Matriu de sortida. Després de la crida, scaling[0] és un objecte {x, y, z} amb els factors d’escala.
rotation any[] — Matriu de sortida. Després de la crida, rotation[0] és un objecte {w, x, y, z} amb els components del quaternió de rotació.
Example
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)
Estableix aquesta matriu com el producte d’una translació, rotació i escala. Les entrades poden ser objectes simples amb x, y, z (i w per a rotació) camps.
setTRS(translation: any, rotation: any, scale: any): voidtoArray()
Retorna una còpia de l’array intern de 16 elements en ordre per files.
toArray(): number[]getItem(index) / setItem(index, value)
Accés a elements per índex lineal (0–15, ordre per files).
getItem(key: number): number
setItem(key: number, value: number): voidequals(other)
Example true si tots els 16 elements són estrictament iguals.
equals(other: Matrix4): boolean