Class Matrix4
Пакет: @aspose/3d (v24.12.0)
Matrix4 съхранява 4×4 трансформационна матрица като плосък масив от 16 числа в редово-основен ред. Това е типът на Transform.transformMatrix и GlobalTransform.transformMatrix. Индивидуалните елементи са достъпни като m00–m33 свойства, или чрез индекс getItem(i) / setItem(i, v). Matrix4 се експортира от the @aspose/3d/utilities подпът.
export class Matrix4import { Matrix4 } from '@aspose/3d/utilities';Example
Създайте комбинирана TRS матрица и я декомпозирайте обратно на компоненти.
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
| Example | Example |
|---|---|
new Matrix4() | Създава 4×4 единична матрица. |
new Matrix4(matrix: number[]) | Създава матрица от 16‑елементен масив в редово‑основен ред. |
new Matrix4(...args: number[]) | Създава матрица от 16 отделни числови аргументи. |
Контролира към коя геометрична примитивна единица е свързана стойността на всеки елемент на върха.
| Example | Example | Example |
|---|---|---|
Matrix4.identity | Matrix4 | Връща нова единична матрица. |
Example
16‑те елемента на матрицата са достъпни като отделни именовани свойства m00, m01, m02, m03, m10, …, m33, където първата цифра е редът, а втората – колоната. Всички са четими и записваеми.
| Example | Example | Example |
|---|---|---|
m00–m33 | number | Отделни елементи на матрицата (редово‑основен изглед). |
determinant | number (само за четене) | Скалярният детерминант на матрицата. |
Статични методи
Matrix4.translate(v)
Създава чиста транслационна матрица от Vector3, или от отделни (tx, ty, tz) числа.
static translate(v: Vector3): Matrix4
static translate(tx: number, ty?: number, tz?: number): Matrix4Example
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)
Създава чиста скалираща матрица от Vector3, или от отделни (sx, sy, sz) числа.
static scale(v: Vector3): Matrix4
static scale(sx: number, sy?: number, sz?: number): Matrix4Matrix4.rotate(q)
Създава матрица за завъртане от a Quaternion, или от ъгъл (в радиани) и ос Vector3.
static rotate(q: Quaternion): Matrix4
static rotate(angle: number, axis: Vector3): Matrix4Example
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)
Създава ротационна матрица от ъгли на Юлер в радиани.
static rotateFromEuler(rx: number, ry?: number, rz?: number): Matrix4
static rotateFromEuler(v: Vector3): Matrix4Създава кватернион с най-кратка дъга, който завърта вектор на посоката orig към dest.
concatenate(m2)
Връща произведението на матриците this × m2. Използвайте това, за да комбинирате трансформациите (приложете this първо, след това m2).
concatenate(m2: Matrix4): Matrix4Example
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()
Връща обратната матрица. Генерира изключение, ако матрицата е сингулярна (детерминантата е близо до нула).
inverse(): Matrix4transpose()
Връща транспонираната матрица (редовете стават колони).
transpose(): Matrix4normalize()
Връща нова матрица, при която подматрицата за ротация (горен ляв 3×3) е орто‑нормализирана чрез делене на всеки ред с неговата дължина. Колоната за транслация се запазва.
normalize(): Matrix4decompose(translation, scaling, rotation)
Разлага тази матрица на компоненти за транслация, мащабиране и ротация. Резултатите се записват в първия елемент на всеки изходен масив.
decompose(translation: any[], scaling: any[], rotation: any[]): voidExample
translation any[] — Изходен масив. След извикването, translation[0] е обект {x, y, z} с превода.
scaling any[] — Изходен масив. След извикването, scaling[0] е обект {x, y, z} с факторите на мащабиране.
rotation any[] — Изходен масив. След извикването, rotation[0] е обект {w, x, y, z} с компонентите на кватернион за въртене.
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)
Задава тази матрица като произведение на транслация, въртене и мащаб. Входовете могат да бъдат обикновени обекти с x, y, z (и w за въртене) полета.
setTRS(translation: any, rotation: any, scale: any): voidtoArray()
Връща копие на вътрешния 16‑елементен масив, подреден по редове.
toArray(): number[]getItem(index) / setItem(index, value)
Достъп до елемент по линейния индекс (0–15, редово‑основен ред).
getItem(key: number): number
setItem(key: number, value: number): voidequals(other)
Example true ако всичките 16 елемента са строго равни.
equals(other: Matrix4): boolean