Class Matrix4

Пакет: @aspose/3d (v24.12.0)

Matrix4 съхранява 4×4 трансформационна матрица като плосък масив от 16 числа в редово-основен ред. Това е типът на Transform.transformMatrix и GlobalTransform.transformMatrix. Индивидуалните елементи са достъпни като m00m33 свойства, или чрез индекс getItem(i) / setItem(i, v). Matrix4 се експортира от the @aspose/3d/utilities подпът.

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

ExampleExample
new Matrix4()Създава 4×4 единична матрица.
new Matrix4(matrix: number[])Създава матрица от 16‑елементен масив в редово‑основен ред.
new Matrix4(...args: number[])Създава матрица от 16 отделни числови аргументи.

Контролира към коя геометрична примитивна единица е свързана стойността на всеки елемент на върха.

ExampleExampleExample
Matrix4.identityMatrix4Връща нова единична матрица.

Example

16‑те елемента на матрицата са достъпни като отделни именовани свойства m00, m01, m02, m03, m10, …, m33, където първата цифра е редът, а втората – колоната. Всички са четими и записваеми.

ExampleExampleExample
m00m33numberОтделни елементи на матрицата (редово‑основен изглед).
determinantnumber (само за четене)Скалярният детерминант на матрицата.

Статични методи

Matrix4.translate(v)

Създава чиста транслационна матрица от Vector3, или от отделни (tx, ty, tz) числа.

static translate(v: Vector3): Matrix4
static translate(tx: number, ty?: number, tz?: number): Matrix4

Example

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

Matrix4.rotate(q)

Създава матрица за завъртане от a Quaternion, или от ъгъл (в радиани) и ос Vector3.

static rotate(q: Quaternion): Matrix4
static rotate(angle: number, axis: Vector3): Matrix4

Example

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

Example

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

transpose()

Връща транспонираната матрица (редовете стават колони).

transpose(): Matrix4

normalize()

Връща нова матрица, при която подматрицата за ротация (горен ляв 3×3) е орто‑нормализирана чрез делене на всеки ред с неговата дължина. Колоната за транслация се запазва.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Разлага тази матрица на компоненти за транслация, мащабиране и ротация. Резултатите се записват в първия елемент на всеки изходен масив.

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

Example

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, zw за въртене) полета.

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

toArray()

Връща копие на вътрешния 16‑елементен масив, подреден по редове.

toArray(): number[]

getItem(index) / setItem(index, value)

Достъп до елемент по линейния индекс (0–15, редово‑основен ред).

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

equals(other)

Example true ако всичките 16 елемента са строго равни.

equals(other: Matrix4): boolean
 Български