Class Matrix4

Paketti: @aspose/3d (v24.12.0)

Matrix4 tallentaa 4×4-muunnosmatriisin tasaisena taulukkona, jossa on 16 numeroa rivijärjestyksessä. Se on tyyppiä Transform.transformMatrix ja GlobalTransform.transformMatrix. Yksittäiset elementit ovat käytettävissä m00m33 ominaisuuksina, tai indeksin kautta getItem(i) / setItem(i, v). Matrix4 viedään kohteesta @aspose/3d/utilities alipolku.

export class Matrix4
import { Matrix4 } from '@aspose/3d/utilities';

ImageRenderOptions

Rakenna yhdistetty TRS‑matriisi ja hajota se takaisin komponenteiksi.

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()Luo 4×4-yksikkömatriisin.
new Matrix4(matrix: number[])Luo matriisin 16-elementtisestä taulukosta rivijärjestyksessä.
new Matrix4(...args: number[])Luo matriisin 16 yksittäisestä numerosta.

Staattiset ominaisuudet

ImageRenderOptionsImageRenderOptionsImageRenderOptions
Matrix4.identityMatrix4Palauttaa uuden yksikkömatriisin.

ImageRenderOptions

16 matriisin elementtiin pääsee käsiksi yksittäisinä nimettyinä ominaisuuksina m00, m01, m02, m03, m10, …, m33, jossa ensimmäinen numero on rivi ja toinen sarake. Kaikki ovat luettavissa ja kirjoitettavissa.

ImageRenderOptionsImageRenderOptionsImageRenderOptions
m00m33numberYksittäiset matriisin elementit (rivijärjestys).
determinantnumber (vain luku)Matriisin skalaarinen determinantti.

Staattiset metodit

Matrix4.translate(v)

Luo puhtaan siirtomatriisin jostakin Vector3, tai yksittäisistä (tx, ty, tz) numerot.

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)

Luo puhtaan skaalausmatriisin Vector3, tai yksittäisistä (sx, sy, sz) numeroista.

static scale(v: Vector3): Matrix4
static scale(sx: number, sy?: number, sz?: number): Matrix4

Matrix4.rotate(q)

Luo kiertomatriisin Quaternion, tai kulmasta (radiaaneina) ja akselista 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)

Luo kiertomatriisin Euler‑kulmista radiaaneina.

static rotateFromEuler(rx: number, ry?: number, rz?: number): Matrix4
static rotateFromEuler(v: Vector3): Matrix4

Instanssimetodit

concatenate(m2)

Palauttaa matriisitulon this × m2. Käytä tätä yhdistämään muunnoksia (sovella this ensin, sitten 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()

Palauttaa tämän matriisin käänteismatriisin. Heittää poikkeuksen, jos matriisi on singulaarinen (determinantti lähellä nollaa).

inverse(): Matrix4

transpose()

Palauttaa tämän matriisin transpoosin (rivit muuttuvat sarakkeiksi).

transpose(): Matrix4

normalize()

Palauttaa uuden matriisin, jossa kierto (vasemmassa yläkulmassa oleva 3×3) alimatriisi on ortonormoitettu jakamalla jokainen rivi sen pituudella. Käännöspalkki säilytetään.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Hajottaa tämän matriisin käännös-, skaalaus- ja kiertokomponentteihin. Tulokset kirjoitetaan kunkin tulos-taulukon ensimmäiseen alkioon.

decompose(translation: any[], scaling: any[], rotation: any[]): void

ImageRenderOptions

translation any[] — Tulostaulukko. Kutsun jälkeen, translation[0] on objekti {x, y, z} siirron kanssa.

scaling any[] — Tulostaulukko. Kutsun jälkeen, scaling[0] on objekti {x, y, z} skaalauskertoimien kanssa.

rotation any[] — Tulostaulukko. Kutsun jälkeen, rotation[0] on objekti {w, x, y, z} kierroksen kvaternionikomponenttien kanssa.

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)

Asettaa tämän matriisin käännöksen, kierron ja skaalaamisen tuloksi. Syötteet voivat olla tavallisia objekteja, joissa on x, y, z (ja w kierron) kentät.

setTRS(translation: any, rotation: any, scale: any): void

toArray()

Palauttaa kopion sisäisestä 16‑elementtisestä rivi‑painotteisesta taulukosta.

toArray(): number[]

getItem(index) / setItem(index, value)

Alkion pääsy lineaarisella indeksillä (0–15, rivi‑painotteinen järjestys).

getItem(key: number): number
setItem(key: number, value: number): void

equals(other)

ImageRenderOptions true jos kaikki 16 elementtiä ovat täsmälleen samat.

equals(other: Matrix4): boolean
 Suomi