Matrix4

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

Matrix4 čuva 4×4 matricu transformacije kao ravni niz od 16 brojeva u redosledu po redovima. To je tip Transform.transformMatrix i GlobalTransform.transformMatrix. Pojedinačni elementi su pristupačni kao m00m33 svojstva, ili po indeksu putem getItem(i) / setItem(i, v). Matrix4 se izvozi iz @aspose/3d/utilities podputanja.

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

Izgradite kombinovanu TRS matricu i dekomponujte je nazad u komponente.

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
NameTypeAccessDescription
m00numberRead/WriteGets the m00.
m01numberRead/WriteGets the m01.
m02numberRead/WriteGets the m02.
m03numberRead/WriteGets the m03.
m10numberRead/WriteGets the m10.
m11numberRead/WriteGets the m11.
m12numberRead/WriteGets the m12.
m13numberRead/WriteGets the m13.
m20numberRead/WriteGets the m20.
m21numberRead/WriteGets the m21.
m22numberRead/WriteGets the m22.
m23numberRead/WriteGets the m23.
m30numberRead/WriteGets the m30.
m31numberRead/WriteGets the m31.
m32numberRead/WriteGets the m32.
m33numberRead/WriteGets the m33.
determinantnumberReadGets the determinant.

Statička svojstva

SignatureDescription
constructor()Creates a new 4x4 matrix, optionally from a 16‑element number array
constructor(matrix: number[])
constructor()
constructor()
getItem(key: number)numberReturns the matrix element at the given linear index
setItem(key: number, value: number)Sets the item value.
transpose()Matrix4Returns a new Matrix4 that is the transpose of this matrix
concatenate(m2: Matrix4)Matrix4
normalize()Matrix4Returns 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()Matrix4Resets the matrix to the identity matrix and returns this instance
translate(tx: number, ty: number, tz: number)Matrix4Applies 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)Matrix4Applies 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)Matrix4Creates a rotation matrix from an angle and axis or from a quaternion
rotate(q: Quaternion)Matrix4
rotate(angle: any, axis: any)Matrix4
toString()stringReturns a human‑readable string representation of the matrix values
equals(other: Matrix4)booleanCompares this matrix with another for element‑wise equality

16 elemenata matrice je moguće pristupiti kao pojedinačnim imenovanim svojstvima m00, m01, m02, m03, m10, …, m33, gde je prvi broj red, a drugi kolona. Sva su čitljiva i upisiva.

| ————————- | ————————– | —————————————————- | | m00m33 | number | Pojedinačni elementi matrice (raspored po redovima). | | determinant | number (samo za čitanje) | Skalarni determinanta matrice. |

Statičke metode

Matrix4.translate(v)

Kreira čistu translacionu matricu iz Vector3, ili od pojedinačnih (tx, ty, tz) brojeva.

static translate(v: Vector3): Matrix4
static translate(tx: number, ty?: number, tz?: number): Matrix4
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)

Kreira čistu matricu skaliranja iz Vector3, ili od pojedinačnih (sx, sy, sz) brojeva.

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

Matrix4.rotate(q)

Kreira matricu rotacije iz Quaternion, ili iz ugla (u radijanima) i ose Vector3.

static rotate(q: Quaternion): Matrix4
static rotate(angle: number, axis: Vector3): Matrix4
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)

Kreira matricu rotacije iz Eulerovih uglova u radijanima.

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

Metode instance

concatenate(m2)

Vraća proizvod matrica this × m2. Koristite ovo za kombinovanje transformacija (primenite this prvo, zatim m2).

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

Vraća inverznu matricu. Baca izuzetak ako je matrica singularna (determinanta blizu nule).

inverse(): Matrix4

transpose()

Vraća transponovanu matricu (redovi postaju kolone).

transpose(): Matrix4

normalize()

Vraća novu matricu u kojoj je rotacija (gornja‑leva 3×3) podmatrica ortonormirana deljenjem svakog reda njegovom dužinom. Kolona translacije se čuva.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Razlaže ovu matricu na komponente translacije, skaliranja i rotacije. Rezultati se upisuju u prvi element svakog izlaznog niza.

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

translation any[] — Izlazni niz. Nakon poziva, translation[0] je objekat {x, y, z} sa prevodom.

scaling any[] — Niz izlaza. Nakon poziva, scaling[0] je objekat {x, y, z} sa faktorima skale.

rotation any[] — Niz izlaza. Nakon poziva, rotation[0] je objekat {w, x, y, z} sa komponentama kvaterniona rotacije.

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)

Postavlja ovu matricu na proizvod translacije, rotacije i skaliranja. Ulazi mogu biti obični objekti sa x, y, z (i w za rotaciju) polja.

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

toArray()

Vraća kopiju interne 16‑elementne niza po redovima.

toArray(): number[]

getItem(index) / setItem(index, value)

Pristup elementu linearnim indeksom (0–15, red‑major redosled).

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

equals(other)

equals(other: Matrix4): boolean
 Српски