Class Matrix4

Balíček: @aspose/3d (v24.12.0)

Matrix4 ukládá transformační matici 4×4 jako ploché pole 16 čísel v řádkovém pořadí. Je to typ Transform.transformMatrix a GlobalTransform.transformMatrix. m00m33 jednotlivých prvků jsou přístupné jako getItem(i) / setItem(i, v). Matrix4 je exportováno z @aspose/3d/utilities podcesty.

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

Example

Vytvořte kombinovanou TRS matici a rozložte ji zpět na komponenty.

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()Vytvoří jednotkovou matici 4×4.
new Matrix4(matrix: number[])Vytvoří matici z 16‑prvkového pole v řádkovém pořadí.
new Matrix4(...args: number[])Vytvoří matici ze 16 jednotlivých číselných argumentů.

Všechny výčty v @aspose/3d: ProjectionType, LightType, TextureMapping, BooleanOperation, VertexElementType, MappingMode, ReferenceMode

ExampleExampleExample
Matrix4.identityMatrix4Vrátí novou jednotkovou matici.

Example

16 prvků matice je přístupných jako jednotlivé pojmenované vlastnosti m00, m01, m02, m03, m10, …, m33, kde první číslice představuje řádek a druhá sloupec. Vše jsou čitelné i zapisovatelné.

ExampleExampleExample
m00m33numberJednotlivé prvky matice (rozložení po řádcích).
determinantnumber (pouze ke čtení)Skalární determinant matice.

Statické metody

Matrix4.translate(v)

Vytvoří čistou translační matici z Vector3, nebo z jednotlivých (tx, ty, tz) čísla.

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)

Vytvoří čistou škálovací matici z Vector3, nebo z jednotlivých (sx, sy, sz) čísel.

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

Matrix4.rotate(q)

Vytvoří rotační matici z Quaternion, nebo z úhlu (v radiánech) a osy 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)

Vytvoří rotační matici z Eulerových úhlů v radiánech.

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

OBJ modul (@aspose/3d/formats/obj)

concatenate(m2)

Vrací součin matic this × m2. Použijte to ke kombinaci transformací (aplikujte this nejprve, pak 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()

Vrací inverzní matici. Vyvolá výjimku, pokud je matice singulární (determinant blízko nule).

inverse(): Matrix4

transpose()

Vrací transpozici této matice (řádky se stanou sloupci).

transpose(): Matrix4

normalize()

Vrací novou matici, kde je podmatice rotace (v levém horním rohu 3×3) ortonormována dělením každého řádku jeho délkou. Sloupec translace je zachován.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Rozloží tuto matici na komponenty translace, škálování a rotace. Výsledky jsou zapsány do prvního prvku každého výstupního pole.

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

Example

translation any[] — Výstupní pole. Po volání, translation[0] je objekt {x, y, z} s translací.

scaling any[] — Výstupní pole. Po volání, scaling[0] je objekt {x, y, z} s faktory měřítka.

rotation any[] — Výstupní pole. Po volání, rotation[0] je objekt {w, x, y, z} s komponentami rotačního kvaternionu.

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)

Nastaví tuto matici na součin translace, rotace a měřítka. Vstupy mohou být obyčejné objekty s x, y, z (a w pro rotaci) pole.

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

toArray()

Vrací kopii vnitřního 16prvkového pole v řádkovém pořadí.

toArray(): number[]

getItem(index) / setItem(index, value)

Přístup k prvkům pomocí lineárního indexu (0–15, řádkové uspořádání).

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

equals(other)

Example true pokud jsou všech 16 prvků striktně stejné.

equals(other: Matrix4): boolean
 Čeština