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 m00–m33 svojstva, ili po indeksu putem getItem(i) / setItem(i, v). Matrix4 se izvozi iz @aspose/3d/utilities pod-puta.
export class Matrix4import { 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.identity | Matrix4 | Vrać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.
m00–m33 | number | Pojedinačni elementi matrice (raspored po redovima). |
determinant | number (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): Matrix4import { 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): Matrix4Matrix4.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): Matrix4import { 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): Matrix4Metode instance
concatenate(m2)
Vraća proizvod matrica this × m2. Upotrijebite ovo za kombiniranje transformacija (primijenite this prvo, zatim m2).
concatenate(m2: Matrix4): Matrix4import { 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(): Matrix4transpose()
Vraća transponiranu matricu (redci postaju stupci).
transpose(): Matrix4normalize()
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(): Matrix4decompose(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[]): voidtranslation 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): voidtoArray()
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): voidequals(other)
true ako su svih 16 elemenata strogo jednaki.equals(other: Matrix4): boolean