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 m00–m33 sifat, atau melalui indeks via getItem(i) / setItem(i, v). Matrix4 dieksport dari @aspose/3d/utilities sub-path.
export class Matrix4import { 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
| Name | Type | Access | Description |
|---|---|---|---|
m00 | number | Read/Write | Gets the m00. |
m01 | number | Read/Write | Gets the m01. |
m02 | number | Read/Write | Gets the m02. |
m03 | number | Read/Write | Gets the m03. |
m10 | number | Read/Write | Gets the m10. |
m11 | number | Read/Write | Gets the m11. |
m12 | number | Read/Write | Gets the m12. |
m13 | number | Read/Write | Gets the m13. |
m20 | number | Read/Write | Gets the m20. |
m21 | number | Read/Write | Gets the m21. |
m22 | number | Read/Write | Gets the m22. |
m23 | number | Read/Write | Gets the m23. |
m30 | number | Read/Write | Gets the m30. |
m31 | number | Read/Write | Gets the m31. |
m32 | number | Read/Write | Gets the m32. |
m33 | number | Read/Write | Gets the m33. |
determinant | number | Read | Gets the determinant. |
Sifat Statik
| Signature | Description |
|---|---|
constructor() | Creates a new 4x4 matrix, optionally from a 16‑element number array |
constructor(matrix: number[]) | |
constructor() | |
constructor() | |
getItem(key: number) → number | Returns the matrix element at the given linear index |
setItem(key: number, value: number) | Sets the item value. |
transpose() → Matrix4 | Returns a new Matrix4 that is the transpose of this matrix |
concatenate(m2: Matrix4) → Matrix4 | |
normalize() → Matrix4 | Returns a new Matrix4 with uniform scaling removed (unit length axes) |
inverse() → Matrix4 | |
decompose(translation: any[], scaling: any[], rotation: any[]) | Extracts translation, scaling, and rotation into the supplied arrays |
setTRS(translation: any, rotation: any, scale: any) | Sets the trs value. |
toArray() → number[] | Returns the matrix elements as a 16‑length number array in row‑major order |
identity() → Matrix4 | Resets the matrix to the identity matrix and returns this instance |
translate(tx: number, ty: number, tz: number) → Matrix4 | Applies a translation by (tx,ty,tz) or a vector and returns this matrix |
translate(v: any) → Matrix4 | |
translate(tx: any, ty: any, tz: any) → Matrix4 | |
scale(sx: number, sy: number, sz: number) → Matrix4 | Applies scaling by (sx,sy,sz) or a vector and returns this matrix |
scale(v: any) → Matrix4 | |
scale(sx: any, sy: any, sz: any) → Matrix4 | |
rotateFromEuler(rx: number, ry: number, rz: number) → Matrix4 | |
rotateFromEuler(v: any) → Matrix4 | |
rotateFromEuler(rx: any, ry: any, rz: any) → Matrix4 | |
rotate(angle: number, axis: any) → Matrix4 | Creates a rotation matrix from an angle and axis or from a quaternion |
rotate(q: Quaternion) → Matrix4 | |
rotate(angle: any, axis: any) → Matrix4 | |
toString() → string | Returns a human‑readable string representation of the matrix values |
equals(other: Matrix4) → boolean | Compares this matrix with another for element‑wise equality |
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.
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
m00–m33 | number | Elemen matriks individu (susunan row-major). |
determinant | number (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): Matrix4ImageRenderOptions
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): Matrix4Matrix4.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): Matrix4ImageRenderOptions
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): Matrix4Kaedah Contoh
concatenate(m2)
Mengembalikan hasil darab matriks this × m2. Gunakan ini untuk menggabungkan transformasi (laksanakan this pertama, kemudian m2).
concatenate(m2: Matrix4): Matrix4ImageRenderOptions
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(): Matrix4transpose()
Mengembalikan transpose matriks ini (baris menjadi lajur).
transpose(): Matrix4normalize()
Mengembalikan matriks baru dengan sub-matriks putaran (3×3 kiri-atas) diortonomalkan dengan membahagi setiap baris mengikut panjangnya. Lajur terjemahan dipelihara.
normalize(): Matrix4decompose(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[]): voidImageRenderOptions
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): voidtoArray()
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): voidequals(other)
ImageRenderOptions true jika semua 16 elemen adalah sama secara ketat.
equals(other: Matrix4): boolean