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
| Name | Type | Access | Description |
|---|---|---|---|
w | number | Read/Write | Gets the w. |
x | number | Read/Write | Gets the x. |
y | number | Read/Write | Gets the y. |
z | number | Read/Write | Gets the z. |
length | number | Read | Gets the length. |
Enumerations
| Signature | Description |
|---|---|
constructor() | Initializes a quaternion with the given w, x, y, and z components |
constructor(w: number, x: number, y: number, z: number) | |
constructor(w: number, x: number, y: number, z: number) | |
IDENTITY() → Quaternion | Returns the identity quaternion representing no rotation |
normalize() → Quaternion | Returns a unit‑length version of this quaternion |
conjugate() → Quaternion | Returns the conjugate of the quaternion |
inverse() → Quaternion | Returns the multiplicative inverse of the quaternion |
dot(q: Quaternion) → number | Computes the dot product with another quaternion |
concat(rhs: Quaternion) → Quaternion | Returns the concatenation (multiplication) of this quaternion with another |
eulerAngles() → Vector3 | Returns a Vector3 of Euler angles representing the rotation |
fromEulerAngle(pitch: number, yaw: number, roll: number) → Quaternion | Overload accepts a Vector3 or numeric pitch with yaw and roll |
fromEulerAngle(vec: Vector3) → Quaternion | |
| `fromEulerAngle(pitch: Vector3 | number, yaw: number, roll: number) → Quaternion` |
fromAngleAxis(a: number, axis: Vector3) → Quaternion | Creates a quaternion from a rotation angle and axis vector |
fromRotation(orig: Vector3, dest: Vector3) → Quaternion | Builds a quaternion that rotates from one direction vector to another |
interpolate(t: number, fromQ: Quaternion, toQ: Quaternion) → Quaternion | Linearly interpolates between two quaternions using parameter t |
slerp(t: number, v1: Quaternion, v2: Quaternion) → Quaternion | Performs spherical linear interpolation between two quaternions at t |
toString() → string | Returns a string representation of the quaternion components |
equals(other: Quaternion) → boolean | Checks whether another quaternion has identical component values |
toMatrix() → Matrix4 | Converts the quaternion into a 4×4 rotation matrix |
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
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`.
```typescript
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
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.
```typescript
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
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.
```typescript
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