Class Matrix4
Paket: @aspose/3d (v24.12.0)
Matrix4 16 sayılık tek boyutlu bir dizi olarak satır-öncelikli sırada 4×4 dönüşüm matrisini depolar. Bu, şunların türüdür Transform.transformMatrix ve GlobalTransform.transformMatrix. Tek tek elemanlara şu şekilde erişilebilir: m00–m33 özellikler olarak, ya da indeksle şu şekilde: getItem(i) / setItem(i, v). Matrix4 şu konumdan dışa aktarılır @aspose/3d/utilities alt-yol.
export class Matrix4import { Matrix4 } from '@aspose/3d/utilities';Enumerations
Birleştirilmiş bir TRS matrisi oluşturun ve onu bileşenlerine geri ayrıştırın.
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
Enumerations
| Enumerations | Enumerations |
|---|---|
new Matrix4() | 4×4 birim matrisini oluşturur. |
new Matrix4(matrix: number[]) | Satır-öncelikli sırada 16 elemanlı bir diziden bir matris oluşturur. |
new Matrix4(...args: number[]) | 16 ayrı sayı argümanından bir matris oluşturur. |
Statik Özellikler
| Enumerations | Enumerations | Enumerations |
|---|---|---|
Matrix4.identity | Matrix4 | Yeni bir birim matris döndürür. |
Enumerations
16 matris elemanı, ayrı ayrı adlandırılmış özellikler olarak erişilebilir m00, m01, m02, m03, m10, …, m33, burada ilk rakam satırı, ikinci rakam sütunu gösterir. Hepsi okunabilir ve yazılabilir.
| Enumerations | Enumerations | Enumerations |
|---|---|---|
m00–m33 | number | Tek tek matris elemanları (satır-öncelikli düzen). |
determinant | number (yalnızca okuma) | Matrisin skaler determinantı. |
Statik Yöntemler
Matrix4.translate(v)
Saf bir çeviri matrisi oluşturur Vector3, veya bireysel (tx, ty, tz) sayılar.
static translate(v: Vector3): Matrix4
static translate(tx: number, ty?: number, tz?: number): Matrix4Enumerations
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)
Saf bir ölçekleme matrisini şuradan oluşturur Vector3, ya da bireysel (sx, sy, sz) sayılar.
static scale(v: Vector3): Matrix4
static scale(sx: number, sy?: number, sz?: number): Matrix4Matrix4.rotate(q)
Bir rotasyon matrisini şuradan oluşturur Quaternion, ya da bir açıdan (radyan cinsinden) ve bir eksen Vector3.
static rotate(q: Quaternion): Matrix4
static rotate(angle: number, axis: Vector3): Matrix4Enumerations
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)
Radyan cinsinden Euler açılarıyla bir döndürme matrisi oluşturur.
static rotateFromEuler(rx: number, ry?: number, rz?: number): Matrix4
static rotateFromEuler(v: Vector3): Matrix4Örnek Yöntemler
concatenate(m2)
Matris çarpımını döndürür this × m2. Bu, dönüşümleri birleştirmek için kullanın (uygulayın this önce, sonra m2).
concatenate(m2: Matrix4): Matrix4Enumerations
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()
Bu matrisin tersini döndürür. Matris tekil ise (determinant sıfıra yakın) bir istisna fırlatır.
inverse(): Matrix4transpose()
Bu matrisin transpozunu döndürür (satırlar sütunlara dönüşür).
transpose(): Matrix4normalize()
Rotasyon (sol üst 3×3) alt matrisini her satırı uzunluğuna bölerek ortonormallaştıran yeni bir matris döndürür. Çeviri sütunu korunur.
normalize(): Matrix4decompose(translation, scaling, rotation)
Bu matrisi çeviri, ölçekleme ve rotasyon bileşenlerine ayırır. Sonuçlar her çıktı dizisinin ilk elemanına yazılır.
decompose(translation: any[], scaling: any[], rotation: any[]): voidEnumerations
translation any[] — Çıktı dizisi. Çağrıdan sonra, translation[0] bir nesnedir {x, y, z} çeviriyle.
scaling any[] — Çıktı dizisi. Çağrıdan sonra, scaling[0] bir nesnedir {x, y, z} ölçek faktörleriyle.
rotation any[] — Çıktı dizisi. Çağrıdan sonra, rotation[0] bir nesnedir {w, x, y, z} dönüş kuaternion bileşenleriyle.
Enumerations
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)
Bu matrisi bir çeviri, dönüş ve ölçeğin çarpımına ayarlar. Girdiler, şunları içeren basit nesneler olabilir x, y, z (ve w dönüş için) alanlar.
setTRS(translation: any, rotation: any, scale: any): voidtoArray()
İçsel 16 elemanlı satır-öncelikli dizinin bir kopyasını döndürür.
toArray(): number[]getItem(index) / setItem(index, value)
Eleman erişimi lineer indeksle (0–15, row-major order).
getItem(key: number): number
setItem(key: number, value: number): voidequals(other)
Enumerations true tüm 16 eleman kesinlikle eşitse.
equals(other: Matrix4): boolean