Class Matrix4
Pakke: @aspose/3d (v24.12.0)
Matrix4 gemmer en 4×4 transformationsmatrix som et fladt array af 16 tal i række-major rækkefølge. Det er typen af Transform.transformMatrix og GlobalTransform.transformMatrix. Individuelle elementer er tilgængelige som m00–m33 egenskaber, eller via indeks ved getItem(i) / setItem(i, v). Matrix4 eksporteres fra @aspose/3d/utilities understi.
export class Matrix4import { Matrix4 } from '@aspose/3d/utilities';Example
Byg en kombineret TRS-matrix og dekomponer den tilbage til komponenterne.
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
Example
| Example | Example |
|---|---|
new Matrix4() | Opretter 4×4 identitetsmatrixen. |
new Matrix4(matrix: number[]) | Opretter en matrix fra et 16-elementers array i række-major rækkefølge. |
new Matrix4(...args: number[]) | Opretter en matrix fra 16 individuelle talargumenter. |
Alle enumerationer i @aspose/3d: ProjectionType, LightType, TextureMapping, BooleanOperation, VertexElementType, MappingMode, ReferenceMode
| Example | Example | Example |
|---|---|---|
Matrix4.identity | Matrix4 | Returnerer en ny identitetsmatrix. |
Example
De 16 matrixelementer er tilgængelige som individuelle navngivne egenskaber m00, m01, m02, m03, m10, …, m33, hvor det første ciffer er rækken og det andet er kolonnen. Alle er læsbare og skrivbare.
| Example | Example | Example |
|---|---|---|
m00–m33 | number | Individuelle matrixelementer (række-major layout). |
determinant | number (kun læse) | Den skalære determinant af matricen. |
Statiske metoder
Matrix4.translate(v)
Opretter en ren translation matrix fra en Vector3, eller fra individuelle (tx, ty, tz) tal.
static translate(v: Vector3): Matrix4
static translate(tx: number, ty?: number, tz?: number): Matrix4Example
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)
Opretter en ren skaleringsmatrix fra en Vector3, eller fra individuelle (sx, sy, sz) tal.
static scale(v: Vector3): Matrix4
static scale(sx: number, sy?: number, sz?: number): Matrix4Matrix4.rotate(q)
Opretter en rotationsmatrix fra en Quaternion, eller fra en vinkel (i radianer) og en akse Vector3.
static rotate(q: Quaternion): Matrix4
static rotate(angle: number, axis: Vector3): Matrix4Example
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)
Opretter en rotationsmatrix fra Euler‑vinkler i radianer.
static rotateFromEuler(rx: number, ry?: number, rz?: number): Matrix4
static rotateFromEuler(v: Vector3): Matrix4Matematikklasser
concatenate(m2)
Returnerer matrixproduktet this × m2. Brug dette til at kombinere transformationer (anvend this først, derefter m2).
concatenate(m2: Matrix4): Matrix4Example
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()
Returnerer den inverse af denne matrix. Kaster en fejl hvis matrixen er singular (determinanten tæt på nul).
inverse(): Matrix4transpose()
Returnerer transponeringen af denne matrix (rækker bliver til kolonner).
transpose(): Matrix4normalize()
Returnerer en ny matrix, hvor rotationsunder‑matricen (øverste venstre 3×3) er ortonormaliseret ved at dividere hver række med dens længde. Translationskolonnen bevares.
normalize(): Matrix4decompose(translation, scaling, rotation)
Decomposerer denne matrix i translations‑, skalerings‑ og rotationskomponenter. Resultaterne skrives ind i det første element i hvert output‑array.
decompose(translation: any[], scaling: any[], rotation: any[]): voidExample
translation any[] — Output-array. Efter kaldet, translation[0] er et objekt {x, y, z} med oversættelsen.
scaling any[] — Output-array. Efter kaldet, scaling[0] er et objekt {x, y, z} med skaleringsfaktorerne.
rotation any[] — Output-array. Efter kaldet, rotation[0] er et objekt {w, x, y, z} med rotationskvaternionens komponenter.
Example
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 denne matrix til produktet af en translation, rotation og skalering. Inputtene kan være almindelige objekter med x, y, z (og w for rotation) felter.
setTRS(translation: any, rotation: any, scale: any): voidtoArray()
Returnerer en kopi af den interne 16-elementers række‑major array.
toArray(): number[]getItem(index) / setItem(index, value)
Elementadgang via lineært indeks (0–15, række‑major rækkefølge).
getItem(key: number): number
setItem(key: number, value: number): voidequals(other)
Example true hvis alle 16 elementer er strengt ens.
equals(other: Matrix4): boolean