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 m00m33 egenskaper, eller via index med getItem(i) / setItem(i, v). Matrix4 exporteras från @aspose/3d/utilities underkatalog.

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

ImageRenderOptionsImageRenderOptions
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

ImageRenderOptionsImageRenderOptionsImageRenderOptions
Matrix4.identityMatrix4Returnerar 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.

ImageRenderOptionsImageRenderOptionsImageRenderOptions
m00m33numberEnskilda matriselement (radordningslayout).
determinantnumber (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): Matrix4

ImageRenderOptions

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

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

ImageRenderOptions

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

Instansmetoder

concatenate(m2)

Returnerar matrisprodukten this × m2. Använd detta för att kombinera transformationer (tillämpa this först, sedan m2).

concatenate(m2: Matrix4): Matrix4

ImageRenderOptions

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

transpose()

Returnerar transponatet av denna matris (rader blir kolumner).

transpose(): Matrix4

normalize()

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

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

ImageRenderOptions

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

toArray()

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

equals(other)

ImageRenderOptions true om alla 16 element är strikt lika.

equals(other: Matrix4): boolean
 Svenska