Matrix4

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

Matrix4 lagrar en 4×4 transformationsmatris som en platt array med 16 tal i radordning. Det är typen av Transform.transformMatrix och GlobalTransform.transformMatrix. Enskilda element är åtkomliga som m00m33 egenskaper, eller via index med getItem(i) / setItem(i, v). Matrix4 exporteras från @aspose/3d/utilities underkatalog.

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

ImageRenderOptions

Bygg en kombinerad TRS‑matris och dekomponera den tillbaka till komponenter.

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

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.

Statiska egenskaper

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

ImageRenderOptions

De 16 matriselementen är åtkomliga som enskilda namngivna egenskaper m00, m01, m02, m03, m10, …, m33, där den första siffran är raden och den andra är kolumnen. Alla är läsbara och skrivbara.

ImageRenderOptionsImageRenderOptionsImageRenderOptions
m00m33numberEnskilda matriselement (radordningslayout).
determinantnumber (skrivskyddad)Den skalära determinanten för matrisen.

Statiska metoder

Matrix4.translate(v)

Skapar en ren translationsmatris från en Vector3, eller från individuella (tx, ty, tz) tal.

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

ImageRenderOptions

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)

Skapar en ren skalningsmatris från en Vector3, eller från individuella (sx, sy, sz) tal.

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

Matrix4.rotate(q)

Skapar en rotationsmatris från en Quaternion, eller från en vinkel (i radianer) och en axel Vector3.

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

ImageRenderOptions

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)

Skapar en rotationsmatris från Euler‑vinklar i radianer.

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

Instansmetoder

concatenate(m2)

Returnerar matrisprodukten this × m2. Använd detta för att kombinera transformationer (tillämpa this först, sedan m2).

concatenate(m2: Matrix4): Matrix4

ImageRenderOptions

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

Returnerar inversen av denna matris. Kastar ett fel om matrisen är singulär (determinant nära noll).

inverse(): Matrix4

transpose()

Returnerar transponatet av denna matris (rader blir kolumner).

transpose(): Matrix4

normalize()

Returnerar en ny matris där rotationsdelmatrisen (övre vänstra 3×3) ortonormeras genom att dela varje rad med dess längd. Översättningskolumnen bevaras.

normalize(): Matrix4

decompose(translation, scaling, rotation)

Dekomponerar denna matris i översättnings-, skalnings- och rotationskomponenter. Resultaten skrivs in i det första elementet i varje utmatningsarray.

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

ImageRenderOptions

translation any[] — Utdataarray. Efter anropet, translation[0] är ett objekt {x, y, z} med översättningen.

scaling any[] — Utdataarray. Efter anropet, scaling[0] är ett objekt {x, y, z} med skalningsfaktorerna.

rotation any[] — Utdataarray. Efter anropet, rotation[0] är ett objekt {w, x, y, z} med rotationskvaternionens komponenter.

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)

Sätter denna matris till produkten av en translation, rotation och skala. Indatan kan vara enkla objekt med x, y, z (och w för rotation) fält.

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

toArray()

Returnerar en kopia av den interna 16‑elementens rad‑major‑arrayen.

toArray(): number[]

getItem(index) / setItem(index, value)

Elementåtkomst med linjärt index (0–15, rad-major ordning).

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

equals(other)

ImageRenderOptions true om alla 16 element är strikt lika.

equals(other: Matrix4): boolean
 Svenska