Class Matrix4
Pakket: @aspose/3d (v24.12.0)
Matrix4 slaat een 4×4 transformatie‑matrix op als een platte array van 16 getallen in rij‑major volgorde. Het is het type van Transform.transformMatrix en GlobalTransform.transformMatrix. Individuele elementen zijn toegankelijk als m00–m33 eigenschappen, of via index met getItem(i) / setItem(i, v). Matrix4 wordt geëxporteerd vanuit de @aspose/3d/utilities sub‑pad.
export class Matrix4import { Matrix4 } from '@aspose/3d/utilities';ImageRenderOptions
Bouw een gecombineerde TRS-matrix en decomposeer deze terug in componenten.
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
| ImageRenderOptions | ImageRenderOptions |
|---|---|
new Matrix4() | Maakt de 4×4 identiteitsmatrix. |
new Matrix4(matrix: number[]) | Maakt een matrix aan vanuit een array van 16 elementen in rij‑major volgorde. |
new Matrix4(...args: number[]) | Maakt een matrix aan vanuit 16 individuele numerieke argumenten. |
Statische eigenschappen
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
Matrix4.identity | Matrix4 | Retourneert een nieuwe identiteitsmatrix. |
ImageRenderOptions
De 16 matrixelementen zijn toegankelijk als individuele benoemde eigenschappen m00, m01, m02, m03, m10, …, m33, waarbij het eerste cijfer de rij is en het tweede de kolom. Alle zijn lees‑ en schrijfbaar.
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
m00–m33 | number | Individuele matrixelementen (rij‑major indeling). |
determinant | number (alleen-lezen) | De scalair determinant van de matrix. |
Statische methoden
Matrix4.translate(v)
Maakt een zuivere translatiematrix van een Vector3, of van individuele (tx, ty, tz) cijfers.
static translate(v: Vector3): Matrix4
static translate(tx: number, ty?: number, tz?: number): Matrix4ImageRenderOptions
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)
Maakt een pure schaalsmatrix van een Vector3, of van individuele (sx, sy, sz) cijfers.
static scale(v: Vector3): Matrix4
static scale(sx: number, sy?: number, sz?: number): Matrix4Matrix4.rotate(q)
Maakt een rotatiematrix van een Quaternion, of van een hoek (in radialen) en een as Vector3.
static rotate(q: Quaternion): Matrix4
static rotate(angle: number, axis: Vector3): Matrix4ImageRenderOptions
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)
Maakt een rotatiematrix aan vanuit Euler-hoeken in radialen.
static rotateFromEuler(rx: number, ry?: number, rz?: number): Matrix4
static rotateFromEuler(v: Vector3): Matrix4Instantie‑methoden
concatenate(m2)
Retourneert het matrixproduct this × m2. Gebruik dit om transformaties te combineren (pas this eerst, dan m2).
concatenate(m2: Matrix4): Matrix4ImageRenderOptions
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()
Retourneert de inverse van deze matrix. Gooit een fout als de matrix singulier is (determinant bijna nul).
inverse(): Matrix4transpose()
Retourneert de transponering van deze matrix (rijen worden kolommen).
transpose(): Matrix4normalize()
Retourneert een nieuwe matrix waarbij de rotatie (linkerboven 3×3) submatrix geortho‑normaliseerd wordt door elke rij te delen door zijn lengte. De translatiekolom blijft behouden.
normalize(): Matrix4decompose(translation, scaling, rotation)
Decomposeert deze matrix in translatie-, schaal- en rotatiecomponenten. Resultaten worden geschreven naar het eerste element van elk uitvoerarray.
decompose(translation: any[], scaling: any[], rotation: any[]): voidImageRenderOptions
translation any[] — Uitvoerarray. Na de aanroep, translation[0] is een object {x, y, z} met de translatie.
scaling any[] — Uitvoerarray. Na de aanroep, scaling[0] is een object {x, y, z} met de schaalfactoren.
rotation any[] — Uitvoerarray. Na de aanroep, rotation[0] is een object {w, x, y, z} met de rotatiequaternioncomponenten.
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)
Stelt deze matrix in op het product van een translatie, rotatie en schaal. De invoer kan gewone objecten zijn met x, y, z (en w voor rotatie) velden.
setTRS(translation: any, rotation: any, scale: any): voidtoArray()
Retourneert een kopie van de interne 16‑elementen rij‑major array.
toArray(): number[]getItem(index) / setItem(index, value)
Elementtoegang via lineaire index (0–15, rij-major volgorde).
getItem(key: number): number
setItem(key: number, value: number): voidequals(other)
ImageRenderOptions true als alle 16 elementen strikt gelijk zijn.
equals(other: Matrix4): boolean