Class Matrix4
Paket: @aspose/3d (v24.12.0)
Matrix4 lagrar en 4×4 transformationsmatris som en platt array med 16 tal i radordning. Det är typen av Transform.transformMatrix och GlobalTransform.transformMatrix. Enskilda element är åtkomliga som m00–m33 egenskaper, eller via index med getItem(i) / setItem(i, v). Matrix4 exporteras från @aspose/3d/utilities underkatalog.
export class Matrix4import { Matrix4 } from '@aspose/3d/utilities';ImageRenderOptions
Bygg en kombinerad TRS‑matris och dekomponera den tillbaka till komponenter.
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() | Skapar 4×4-identitetsmatrisen. |
new Matrix4(matrix: number[]) | Skapar en matris från en 16-elementarray i radordning. |
new Matrix4(...args: number[]) | Skapar en matris från 16 enskilda numeriska argument. |
Statiska egenskaper
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
Matrix4.identity | Matrix4 | Returnerar en ny identitetsmatris. |
ImageRenderOptions
De 16 matriselementen är åtkomliga som enskilda namngivna egenskaper m00, m01, m02, m03, m10, …, m33, där den första siffran är raden och den andra är kolumnen. Alla är läsbara och skrivbara.
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
m00–m33 | number | Enskilda matriselement (radordningslayout). |
determinant | number (skrivskyddad) | Den skalära determinanten för matrisen. |
Statiska metoder
Matrix4.translate(v)
Skapar en ren translationsmatris från en Vector3, eller från individuella (tx, ty, tz) tal.
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)
Skapar en ren skalningsmatris från en Vector3, eller från individuella (sx, sy, sz) tal.
static scale(v: Vector3): Matrix4
static scale(sx: number, sy?: number, sz?: number): Matrix4Matrix4.rotate(q)
Skapar en rotationsmatris från en Quaternion, eller från en vinkel (i radianer) och en axel 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)
Skapar en rotationsmatris från Euler‑vinklar i radianer.
static rotateFromEuler(rx: number, ry?: number, rz?: number): Matrix4
static rotateFromEuler(v: Vector3): Matrix4Instansmetoder
concatenate(m2)
Returnerar matrisprodukten this × m2. Använd detta för att kombinera transformationer (tillämpa this först, sedan 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()
Returnerar inversen av denna matris. Kastar ett fel om matrisen är singulär (determinant nära noll).
inverse(): Matrix4transpose()
Returnerar transponatet av denna matris (rader blir kolumner).
transpose(): Matrix4normalize()
Returnerar en ny matris där rotationsdelmatrisen (övre vänstra 3×3) ortonormeras genom att dela varje rad med dess längd. Översättningskolumnen bevaras.
normalize(): Matrix4decompose(translation, scaling, rotation)
Dekomponerar denna matris i översättnings-, skalnings- och rotationskomponenter. Resultaten skrivs in i det första elementet i varje utmatningsarray.
decompose(translation: any[], scaling: any[], rotation: any[]): voidImageRenderOptions
translation any[] — Utdataarray. Efter anropet, translation[0] är ett objekt {x, y, z} med översättningen.
scaling any[] — Utdataarray. Efter anropet, scaling[0] är ett objekt {x, y, z} med skalningsfaktorerna.
rotation any[] — Utdataarray. Efter anropet, rotation[0] är ett objekt {w, x, y, z} med rotationskvaternionens komponenter.
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)
Sätter denna matris till produkten av en translation, rotation och skala. Indatan kan vara enkla objekt med x, y, z (och w för rotation) fält.
setTRS(translation: any, rotation: any, scale: any): voidtoArray()
Returnerar en kopia av den interna 16‑elementens rad‑major‑arrayen.
toArray(): number[]getItem(index) / setItem(index, value)
Elementåtkomst med linjärt index (0–15, rad-major ordning).
getItem(key: number): number
setItem(key: number, value: number): voidequals(other)
ImageRenderOptions true om alla 16 element är strikt lika.
equals(other: Matrix4): boolean