Class Matrix4
パッケージ: @aspose/3d (v24.12.0)
Matrix4 4×4 の変換行列を、行優先順序の 16 個の数値からなるフラット配列として格納します。これは次の型です Transform.transformMatrix および GlobalTransform.transformMatrix.。個々の要素は次のようにアクセスできます m00–m33 プロパティとして、またはインデックスで getItem(i) / setItem(i, v). Matrix4 は次の場所からエクスポートされます @aspose/3d/utilities サブパスです。.
export class Matrix4import { Matrix4 } from '@aspose/3d/utilities';ImageRenderOptions
結合された 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
ImageRenderOptions
| ImageRenderOptions | ImageRenderOptions |
|---|---|
new Matrix4() | 4×4 の単位行列を作成します。. |
new Matrix4(matrix: number[]) | 行優先順序の 16 要素配列から行列を作成します。. |
new Matrix4(...args: number[]) | 16 個の個別の数値引数から行列を作成します。. |
静的プロパティ
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
Matrix4.identity | Matrix4 | 新しい単位行列を返します。. |
ImageRenderOptions
16 個の行列要素は個別の名前付きプロパティとしてアクセス可能です m00, m01, m02, m03, m10, …, m33,、最初の桁が行、2 番目の桁が列を表します。すべて読み書き可能です。.
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
m00–m33 | number | 個々の行列要素(行優先レイアウト)。. |
determinant | number (読み取り専用) | 行列のスカラー行列式。. |
静的メソッド
Matrix4.translate(v)
a から純粋な平行移動行列を作成します Vector3,、または個別の (tx, ty, tz) 数値です。.
static translate(v: Vector3): Matrix4
static translate(tx: number, ty?: number, tz?: number): Matrix4ImageRenderOptions
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)
a から純粋なスケーリング行列を作成します Vector3,、または個別に (sx, sy, sz) 数。.
static scale(v: Vector3): Matrix4
static scale(sx: number, sy?: number, sz?: number): Matrix4Matrix4.rotate(q)
から回転行列を作成します Quaternion,、または角度(ラジアン)と軸から Vector3.
static rotate(q: Quaternion): Matrix4
static rotate(angle: number, axis: Vector3): Matrix4ImageRenderOptions
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インスタンスメソッド
concatenate(m2)
行列積を返します this × m2.。これを使用して変換を組み合わせます(適用 this 最初に、次に m2).
concatenate(m2: Matrix4): Matrix4ImageRenderOptions
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(): Matrix4transpose()
この行列の転置を返します(行が列になります)。.
transpose(): Matrix4normalize()
回転部分(左上 3×3 のサブ行列)を各行の長さで割って直交正規化した新しい行列を返します。平行移動列は保持されます。.
normalize(): Matrix4decompose(translation, scaling, rotation)
この行列を平行移動、スケーリング、回転の成分に分解します。結果は各出力配列の最初の要素に書き込まれます。.
decompose(translation: any[], scaling: any[], rotation: any[]): voidImageRenderOptions
translation any[] — 出力配列。呼び出し後、, translation[0] はオブジェクトです {x, y, z} 変換を含みます。.
scaling any[] — 出力配列。呼び出し後、, scaling[0] はオブジェクトです {x, y, z} スケール係数を含みます。.
rotation any[] — 出力配列。呼び出し後、, rotation[0] はオブジェクトです {w, x, y, z} 回転クォータニオンの成分を含みます。.
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)
この行列を平行移動、回転、スケールの積に設定します。入力はプレーンオブジェクトで、次のフィールドを持つことができます x, y, z (および w 回転用) フィールドです。.
setTRS(translation: any, rotation: any, scale: any): voidtoArray()
内部の 16 要素の行優先配列のコピーを返します。.
toArray(): number[]getItem(index) / setItem(index, value)
線形インデックス (0–15、行優先順) による要素アクセス。.
getItem(key: number): number
setItem(key: number, value: number): voidequals(other)
ImageRenderOptions true すべての 16 要素が厳密に等しい場合。.
equals(other: Matrix4): boolean