Class Quaternion
Paket: @aspose/3d (v24.12.0)
Quaternion API boyunca kullanılır @aspose/3d API, gimbal kilidi olmadan dönüşleri temsil etmek için kullanılır. Bu, şu tarafından döndürülen tiptir Transform.rotation ve GlobalTransform.rotation. Kimlik kuaterni (1, 0, 0, 0) dönüş olmadığını temsil eder. Quaternion şu konumdan dışa aktarılır @aspose/3d/utilities alt-yol.
export class Quaternionimport { Quaternion } from '@aspose/3d/utilities';Enumerations
Bir düğümü Y ekseni etrafında 90° döndür ve ardından sorunsuz bir şekilde birime geri enterpole et.
import { Scene } from '@aspose/3d';
import { Quaternion } from '@aspose/3d/utilities';
const scene = new Scene();
const node = scene.rootNode.createChildNode('spinner');
// 90° around Y
const q90 = Quaternion.fromEulerAngle(0, Math.PI / 2, 0);
node.transform.rotation = q90;
// Slerp halfway back to identity
const identity = Quaternion.IDENTITY;
const half = Quaternion.slerp(0.5, q90, identity);
console.log(`Half rotation W: ${half.w.toFixed(4)}`);
// Half rotation W: 0.9239
Enumerations
| Enumerations | Enumerations |
|---|---|
new Quaternion() | Kimlik kuaterni oluşturur (1, 0, 0, 0). |
new Quaternion(w, x, y, z) | Açık bileşenlerden bir kuaterni oluşturur. |
Enumerations
| Enumerations | Enumerations | Enumerations |
|---|---|---|
w | number | Skaler (gerçek) bileşen. Bir birim dönüş kuaterni için, w = cos(θ/2). |
x | number | Vektör kısmının X bileşeni. |
y | number | Vektör kısmının Y bileşeni. |
z | number | Vektör kısmının Z bileşeni. |
length | number (salt okunur) | Büyüklük: sqrt(w² + x² + y² + z²). Geçerli bir dönüş kuaterniyonu için 1.0 olmalıdır. |
Statik Özellikler
| Enumerations | Enumerations | Enumerations |
|---|---|---|
Quaternion.IDENTITY | Quaternion | Yeni bir kimlik kuaterniyonu döndürür (1, 0, 0, 0). |
Statik Yöntemler
Quaternion.fromEulerAngle(pitch, yaw, roll)
Euler açılarını radian cinsinden alarak bir quaternion oluşturur.
static fromEulerAngle(pitch: number, yaw: number, roll: number): Quaternion
static fromEulerAngle(vec: Vector3): QuaternionEnumerations
pitch number — X ekseni etrafında radyan cinsinden dönüş.
yaw number — Y ekseni etrafında radyan cinsinden dönüş.
roll number — Z ekseni etrafında radyan cinsinden dönüş.
Alternatif olarak, tek bir Vector3 olan x, y, z pitch, yaw ve roll değerlerini tutar.
Enumerations
import { Quaternion } from '@aspose/3d/utilities';
const q = Quaternion.fromEulerAngle(0, Math.PI / 4, 0); // 45° around Y
console.log(`W: ${q.w.toFixed(4)}`); // W: 0.9239
Quaternion.fromAngleAxis(angle, axis)
Bir dönüşümü temsil eden bir quaternion oluşturur angle radyan etrafında axis.
static fromAngleAxis(angle: number, axis: Vector3): QuaternionEnumerations
angle number — Radyan cinsinden dönüş açısı.
axis Vector3 — Dönüş ekseni. Normalleştirilmeye gerek yok.
Enumerations
import { Quaternion, Vector3 } from '@aspose/3d/utilities';
const axis = new Vector3(0, 1, 0);
const q = Quaternion.fromAngleAxis(Math.PI / 2, axis);
console.log(`Rotating 90° around Y — W: ${q.w.toFixed(4)}`);
// Rotating 90° around Y — W: 0.7071
Quaternion.fromRotation(orig, dest)
Yön vektörünü döndüren en kısa yay quaternion’ını oluşturur orig hedefe dest.
static fromRotation(orig: Vector3, dest: Vector3): QuaternionQuaternion.slerp(t, v1, v2)
Arasında küresel doğrusal enterpolasyon gerçekleştirir v1 ve v2 parametrede t (0.0 = v1, 1.0 = v2).
static slerp(t: number, v1: Quaternion, v2: Quaternion): QuaternionEnumerations
import { Quaternion } from '@aspose/3d/utilities';
const start = Quaternion.fromEulerAngle(0, 0, 0);
const end = Quaternion.fromEulerAngle(0, Math.PI, 0);
const mid = Quaternion.slerp(0.5, start, end);
console.log(`Mid W: ${mid.w.toFixed(4)}`); // Mid W: 0.7071
Quaternion.interpolate(t, fromQ, toQ)
Takma adı slerp. Küresel doğrusal enterpolasyon gerçekleştirir.
static interpolate(t: number, fromQ: Quaternion, toQ: Quaternion): QuaternionÖrnek Yöntemler
normalize()
Birim uzunluğa ölçeklenmiş yeni bir quaternion döndürür.
normalize(): Quaternionconjugate()
Koniği döndürür (w, -x, -y, -z).
conjugate(): Quaternioninverse()
Ters quaternion’ı döndürür. Quaternion sıfır uzunlukta ise bir istisna fırlatır.
inverse(): Quaterniondot(q)
Kuaternion ile skaler nokta çarpımını döndürür q.
dot(q: Quaternion): numberconcat(rhs)
Kuaternion çarpımını döndürür this * rhs, önce uygulanarak birleşik dönüşümü temsil eder this ve ardından rhs.
concat(rhs: Quaternion): QuaternioneulerAngles()
Rotasyonu radyan cinsinden Euler açıları olarak döndürür Vector3(pitch, yaw, roll).
eulerAngles(): Vector3Enumerations
import { Quaternion } from '@aspose/3d/utilities';
const q = Quaternion.fromEulerAngle(0, Math.PI / 3, 0);
const euler = q.eulerAngles();
console.log(`Yaw: ${euler.y.toFixed(4)}`);
// Yaw: 1.0472 (= π/3)
toMatrix()
Bu kuaternionu eşdeğer bir Matrix4 dönüşüm matrisine.
toMatrix(): Matrix4equals(other)
Enumerations true tüm dört bileşen kesinlikle eşitse.
equals(other: Quaternion): booleantoString()
Şu biçimde bir dize döndürür Quaternion(w, x, y, z).
toString(): string