Class Matrix4

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

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

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

Izgradite kombinovanu TRS matricu i dekomponujte je nazad 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()Kreira 4×4 identitetsku matricu.
new Matrix4(matrix: number[])Kreira matricu iz niza od 16 elemenata u redosledu po redovima.
new Matrix4(...args: number[])Kreira matricu iz 16 pojedinačnih brojevnih argumenata.

Statička svojstva

Matrix4.identityMatrix4Vraća novu identitetsku matricu.

16 elemenata matrice je moguće pristupiti kao pojedinačnim imenovanim svojstvima m00, m01, m02, m03, m10, …, m33, gde je prvi broj red, a drugi kolona. Sva su čitljiva i upisiva.

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

Statičke metode

Matrix4.translate(v)

Kreira čistu translacionu matricu iz Vector3, ili od pojedinačnih (tx, ty, tz) brojeva.

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)

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

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

Matrix4.rotate(q)

Kreira matricu rotacije iz Quaternion, ili iz ugla (u radijanima) i ose 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)

Kreira matricu rotacije iz Eulerovih uglova 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. Koristite ovo za kombinovanje transformacija (primenite 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 inverznu matricu. Baca izuzetak ako je matrica singularna (determinanta blizu nule).

inverse(): Matrix4

transpose()

Vraća transponovanu matricu (redovi postaju kolone).

transpose(): Matrix4

normalize()

Vraća novu matricu u kojoj je rotacija (gornja‑leva 3×3) podmatrica ortonormirana deljenjem svakog reda njegovom dužinom. Kolona translacije se čuva.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Razlaže ovu matricu na komponente translacije, skaliranja i rotacije. Rezultati se upisuju u prvi element svakog izlaznog niza.

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

translation any[] — Izlazni niz. Nakon poziva, translation[0] je objekat {x, y, z} sa prevodom.

scaling any[] — Niz izlaza. Nakon poziva, scaling[0] je objekat {x, y, z} sa faktorima skale.

rotation any[] — Niz izlaza. Nakon poziva, rotation[0] je objekat {w, x, y, z} sa 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 proizvod translacije, rotacije i skaliranja. Ulazi mogu biti obični objekti sa x, y, z (i w za rotaciju) polja.

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

toArray()

Vraća kopiju interne 16‑elementne niza po redovima.

toArray(): number[]

getItem(index) / setItem(index, value)

Pristup elementu linearnim indeksom (0–15, red‑major redosled).

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

equals(other)

true ako su svih 16 elemenata strogo jednaki.

equals(other: Matrix4): boolean
 Српски