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 m00m33 egenskaber, eller via indeks ved getItem(i) / setItem(i, v). Matrix4 eksporteres fra @aspose/3d/utilities understi.

export class Matrix4
import { 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

ExampleExample
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

ExampleExampleExample
Matrix4.identityMatrix4Returnerer 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.

ExampleExampleExample
m00m33numberIndividuelle matrixelementer (række-major layout).
determinantnumber (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): Matrix4

Example

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): Matrix4

Matrix4.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): Matrix4

Example

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): Matrix4

Matematikklasser

concatenate(m2)

Returnerer matrixproduktet this × m2. Brug dette til at kombinere transformationer (anvend this først, derefter m2).

concatenate(m2: Matrix4): Matrix4

Example

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(): Matrix4

transpose()

Returnerer transponeringen af denne matrix (rækker bliver til kolonner).

transpose(): Matrix4

normalize()

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(): Matrix4

decompose(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[]): void

Example

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): void

toArray()

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): void

equals(other)

Example true hvis alle 16 elementer er strengt ens.

equals(other: Matrix4): boolean
 Dansk