Class Matrix4

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

Matrix4 pohranjuje 4×4 matricu transformacije kao ravni niz od 16 brojeva u redoslijedu po redovima. To je tip Transform.transformMatrix i GlobalTransform.transformMatrix. Pojedinačni elementi su dostupni kao m00m33 svojstva, ili po indeksu putem getItem(i) / setItem(i, v). Matrix4 se izvozi iz @aspose/3d/utilities pod-puta.

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

Izgradite kombiniranu TRS matricu i dekomponirajte je natrag u komponente.

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

new Matrix4()Stvara 4×4 jediničnu matricu.
new Matrix4(matrix: number[])Stvara matricu iz 16‑elemenata niza u redoslijedu po redovima.
new Matrix4(...args: number[])Stvara matricu iz 16 pojedinačnih numeričkih argumenata.

Statička svojstva

Matrix4.identityMatrix4Vraća novu jediničnu matricu.

16 elemenata matrice je dostupno kao pojedinačna imenovana svojstva m00, m01, m02, m03, m10, …, m33, gdje je prvi broj red, a drugi stupac. Sva su čitljiva i zapisiva.

m00m33numberPojedinačni elementi matrice (raspored po redovima).
determinantnumber (samo za čitanje)Skalarna determinanta matrice.

Statičke metode

Matrix4.translate(v)

Stvara čistu translacijsku matricu iz a Vector3, ili iz pojedinačnih (tx, ty, tz) brojevi.

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

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)

Stvara čistu matricu skaliranja iz Vector3, ili iz pojedinačnih (sx, sy, sz) brojeva.

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

Matrix4.rotate(q)

Stvara matricu rotacije iz Quaternion, ili iz kuta (u radijanima) i osi Vector3.

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

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)

Stvara matricu rotacije iz Eulerovih kutova u radijanima.

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

Metode instance

concatenate(m2)

Vraća proizvod matrica this × m2. Upotrijebite ovo za kombiniranje transformacija (primijenite this prvo, zatim m2).

concatenate(m2: Matrix4): Matrix4

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

Vraća inverz ove matrice. Baca iznimku ako je matrica singularna (determinanta blizu nule).

inverse(): Matrix4

transpose()

Vraća transponiranu matricu (redci postaju stupci).

transpose(): Matrix4

normalize()

Vraća novu matricu u kojoj je rotacijski (gornji‑lijevi 3×3) podmatrica ortonormirana dijeljenjem svakog retka s njegovom duljinom. Stupac translacije se očuva.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Rastavlja ovu matricu na komponente translacije, skaliranja i rotacije. Rezultati se zapisuju u prvi element svakog izlaznog niza.

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

translation any[] — Izlazni niz. Nakon poziva, translation[0] je objekt {x, y, z} s prijevodom.

scaling any[] — Izlazni niz. Nakon poziva, scaling[0] je objekt {x, y, z} s faktorima skaliranja.

rotation any[] — Izlazni niz. Nakon poziva, rotation[0] je objekt {w, x, y, z} s komponentama kvaterniona rotacije.

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)

Postavlja ovu matricu na produkt translacije, rotacije i skaliranja. Ulazi mogu biti obični objekti s x, y, z (i w za rotaciju) polja.

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

toArray()

Vraća kopiju interne 16‑elemenčne red‑po‑rednom (row-major) niza.

toArray(): number[]

getItem(index) / setItem(index, value)

Pristup elementu putem linearnog indeksa (0–15, redoslijed po redovima).

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

equals(other)

true ako su svih 16 elemenata strogo jednaki.

equals(other: Matrix4): boolean
 Hrvatski