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
| Name | Type | Access | Description |
|---|---|---|---|
m00 | number | Read/Write | Gets the m00. |
m01 | number | Read/Write | Gets the m01. |
m02 | number | Read/Write | Gets the m02. |
m03 | number | Read/Write | Gets the m03. |
m10 | number | Read/Write | Gets the m10. |
m11 | number | Read/Write | Gets the m11. |
m12 | number | Read/Write | Gets the m12. |
m13 | number | Read/Write | Gets the m13. |
m20 | number | Read/Write | Gets the m20. |
m21 | number | Read/Write | Gets the m21. |
m22 | number | Read/Write | Gets the m22. |
m23 | number | Read/Write | Gets the m23. |
m30 | number | Read/Write | Gets the m30. |
m31 | number | Read/Write | Gets the m31. |
m32 | number | Read/Write | Gets the m32. |
m33 | number | Read/Write | Gets the m33. |
determinant | number | Read | Gets the determinant. |
Statiska egenskaper
| Signature | Description |
|---|---|
constructor() | Creates a new 4x4 matrix, optionally from a 16‑element number array |
constructor(matrix: number[]) | |
constructor() | |
constructor() | |
getItem(key: number) → number | Returns the matrix element at the given linear index |
setItem(key: number, value: number) | Sets the item value. |
transpose() → Matrix4 | Returns a new Matrix4 that is the transpose of this matrix |
concatenate(m2: Matrix4) → Matrix4 | |
normalize() → Matrix4 | Returns a new Matrix4 with uniform scaling removed (unit length axes) |
inverse() → Matrix4 | |
decompose(translation: any[], scaling: any[], rotation: any[]) | Extracts translation, scaling, and rotation into the supplied arrays |
setTRS(translation: any, rotation: any, scale: any) | Sets the trs value. |
toArray() → number[] | Returns the matrix elements as a 16‑length number array in row‑major order |
identity() → Matrix4 | Resets the matrix to the identity matrix and returns this instance |
translate(tx: number, ty: number, tz: number) → Matrix4 | Applies a translation by (tx,ty,tz) or a vector and returns this matrix |
translate(v: any) → Matrix4 | |
translate(tx: any, ty: any, tz: any) → Matrix4 | |
scale(sx: number, sy: number, sz: number) → Matrix4 | Applies scaling by (sx,sy,sz) or a vector and returns this matrix |
scale(v: any) → Matrix4 | |
scale(sx: any, sy: any, sz: any) → Matrix4 | |
rotateFromEuler(rx: number, ry: number, rz: number) → Matrix4 | |
rotateFromEuler(v: any) → Matrix4 | |
rotateFromEuler(rx: any, ry: any, rz: any) → Matrix4 | |
rotate(angle: number, axis: any) → Matrix4 | Creates a rotation matrix from an angle and axis or from a quaternion |
rotate(q: Quaternion) → Matrix4 | |
rotate(angle: any, axis: any) → Matrix4 | |
toString() → string | Returns a human‑readable string representation of the matrix values |
equals(other: Matrix4) → boolean | Compares this matrix with another for element‑wise equality |
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