Class Matrix4

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

Matrix4 menyimpan matriks transformasi 4×4 sebagai susunan rata 16 nombor dalam row-major order. Ia adalah jenis Transform.transformMatrix dan GlobalTransform.transformMatrix. Elemen individu boleh diakses sebagai m00m33 sifat, atau melalui indeks via getItem(i) / setItem(i, v). Matrix4 dieksport dari @aspose/3d/utilities sub-path.

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

ImageRenderOptions

Bina matriks TRS gabungan dan uraikan semula kepada komponen‑komponennya.

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()Mencipta matriks identiti 4×4.
new Matrix4(matrix: number[])Mencipta matriks daripada susunan 16-elemen dalam row-major order.
new Matrix4(...args: number[])Mencipta matriks daripada 16 argumen nombor individu.

Sifat Statik

ImageRenderOptionsImageRenderOptionsImageRenderOptions
Matrix4.identityMatrix4Mengembalikan matriks identiti baru.

ImageRenderOptions

16 elemen matriks boleh diakses sebagai sifat bernama individu m00, m01, m02, m03, m10, …, m33, di mana digit pertama ialah baris dan digit kedua ialah lajur. Semua boleh dibaca dan ditulis.

ImageRenderOptionsImageRenderOptionsImageRenderOptions
m00m33numberElemen matriks individu (susunan row-major).
determinantnumber (baca sahaja)Determinant skalar matriks.

Kaedah Statik

Matrix4.translate(v)

Mencipta matriks terjemahan tulen daripada a Vector3, atau daripada individu (tx, ty, tz) nombor.

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)

Mencipta matriks skala tulen daripada Vector3, atau daripada individu (sx, sy, sz) nombor.

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

Matrix4.rotate(q)

Mencipta matriks putaran daripada Quaternion, atau daripada sudut (dalam radian) dan paksi 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)

Mencipta matriks putaran daripada sudut Euler dalam radian.

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

Kaedah Contoh

concatenate(m2)

Mengembalikan hasil darab matriks this × m2. Gunakan ini untuk menggabungkan transformasi (laksanakan this pertama, kemudian 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()

Mengembalikan invers matriks ini. Melempar pengecualian jika matriks singular (determinan hampir sifar).

inverse(): Matrix4

transpose()

Mengembalikan transpose matriks ini (baris menjadi lajur).

transpose(): Matrix4

normalize()

Mengembalikan matriks baru dengan sub-matriks putaran (3×3 kiri-atas) diortonomalkan dengan membahagi setiap baris mengikut panjangnya. Lajur terjemahan dipelihara.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Mendecomposisi matriks ini menjadi komponen terjemahan, skala, dan putaran. Hasil ditulis ke dalam elemen pertama setiap array output.

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

ImageRenderOptions

translation any[] — Tatasusunan output. Selepas panggilan, translation[0] adalah objek {x, y, z} dengan terjemahan.

scaling any[] — Tatasusunan output. Selepas panggilan, scaling[0] adalah objek {x, y, z} dengan faktor skala.

rotation any[] — Tatasusunan output. Selepas panggilan, rotation[0] adalah objek {w, x, y, z} dengan komponen quaternion putaran.

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)

Menetapkan matriks ini kepada hasil darab terjemahan, putaran, dan skala. Input boleh menjadi objek biasa dengan x, y, z (dan w untuk putaran) medan.

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

toArray()

Mengembalikan salinan array dalaman 16-elemen berformat baris-major.

toArray(): number[]

getItem(index) / setItem(index, value)

Akses elemen mengikut indeks linear (0–15, susunan baris utama).

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

equals(other)

ImageRenderOptions true jika semua 16 elemen adalah sama secara ketat.

equals(other: Matrix4): boolean
 Bahasa Melayu