Class Matrix4

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

Matrix4 stochează o matrice de transformare 4×4 ca un tablou plat de 16 numere în ordine pe rânduri. Este tipul de Transform.transformMatrix și GlobalTransform.transformMatrix. Elementele individuale sunt accesibile ca m00m33 proprietăți, sau prin index prin getItem(i) / setItem(i, v). Matrix4 este exportat din @aspose/3d/utilities sub-calea.

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

ImageRenderOptions

Construiește o matrice TRS combinată și descompune‑o înapoi în componente.

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

ImageRenderOptions

ImageRenderOptionsImageRenderOptions
new Matrix4()Creează matricea identitate 4×4.
new Matrix4(matrix: number[])Creează o matrice dintr-un tablou de 16 elemente în ordine pe rânduri.
new Matrix4(...args: number[])Creează o matrice din 16 argumente numerice individuale.

Proprietăți statice

ImageRenderOptionsImageRenderOptionsImageRenderOptions
Matrix4.identityMatrix4Returnează o nouă matrice identitate.

ImageRenderOptions

Cele 16 elemente ale matricei sunt accesibile ca proprietăți individuale denumite m00, m01, m02, m03, m10, …, m33, unde prima cifră reprezintă rândul și a doua coloana. Toate sunt citibile și modificabile.

ImageRenderOptionsImageRenderOptionsImageRenderOptions
m00m33numberElemente individuale ale matricei (dispunere pe rânduri).
determinantnumber (doar citire)Determinantul scalar al matricei.

Metode statice

Matrix4.translate(v)

Creează o matrice de translație pură dintr-un Vector3, sau din numere individuale (tx, ty, tz) numere.

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

ImageRenderOptions

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)

Creează o matrice de scalare pură dintr-un Vector3, sau din numere individuale (sx, sy, sz) numere.

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

Matrix4.rotate(q)

Creează o matrice de rotație dintr-un Quaternion, sau dintr-un unghi (în radiani) și o axă Vector3.

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

ImageRenderOptions

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)

Creează o matrice de rotație din unghiuri Euler în radiani.

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

Metode de instanță

concatenate(m2)

Returnează produsul matricial this × m2. Folosiți acest lucru pentru a combina transformările (aplicați this mai întâi, apoi m2).

concatenate(m2: Matrix4): Matrix4

ImageRenderOptions

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()

Returnează inversa acestei matrici. Aruncă o excepție dacă matricea este singulară (determinant aproape de zero).

inverse(): Matrix4

transpose()

Returnează transpunerea acestei matrici (rândurile devin coloane).

transpose(): Matrix4

normalize()

Returnează o matrice nouă cu sub-matricela de rotație (partea stânga-sus 3×3) ortonormalizată prin împărțirea fiecărui rând la lungimea sa. Coloana de translație este păstrată.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Descompune această matrice în componentele de translație, scalare și rotație. Rezultatele sunt scrise în primul element al fiecărui tablou de ieșire.

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

ImageRenderOptions

translation any[] — Vector de ieșire. După apel, translation[0] este un obiect {x, y, z} cu traducerea.

scaling any[] — Vector de ieșire. După apel, scaling[0] este un obiect {x, y, z} cu factorii de scară.

rotation any[] — Array de ieșire. După apel, rotation[0] este un obiect {w, x, y, z} cu componentele quaternionului de rotație.

ImageRenderOptions

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)

Setează această matrice la produsul unei translații, rotații și scalări. Intrările pot fi obiecte simple cu x, y, z (și w pentru rotație) câmpuri.

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

toArray()

Returnează o copie a tabloului intern de 16 elemente în ordine row-major.

toArray(): number[]

getItem(index) / setItem(index, value)

Acces la element prin index liniar (0–15, ordine pe rânduri).

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

equals(other)

ImageRenderOptions true dacă toate cele 16 elemente sunt strict egale.

equals(other: Matrix4): boolean
 Română