Class Quaternion
Pakke: @aspose/3d (v24.12.0)
Quaternion bruges gennem hele @aspose/3d API til at repræsentere rotationer uden gimbal lock. Det er den type, der returneres af Transform.rotation og GlobalTransform.rotation. Den identitetsquaternion (1, 0, 0, 0) repræsenterer ingen rotation. Quaternion eksporteres fra den @aspose/3d/utilities understi.
export class Quaternionimport { Quaternion } from '@aspose/3d/utilities';Enumerations
Roter en node 90° omkring Y‑aksen og interpolér derefter glat tilbage til identitet.
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() | Opretter den identitetsquaternion (1, 0, 0, 0). |
new Quaternion(w, x, y, z) | Opretter en quaternion ud fra eksplicitte komponenter. |
Enumerations
| Enumerations | Enumerations | Enumerations |
|---|---|---|
w | number | Skalar (reel) komponent. For en enhedsrotationsquaternion, w = cos(θ/2). |
x | number | X-komponent af vektordelen. |
y | number | Y-komponent af vektordelen. |
z | number | Z-komponent af vektordelen. |
length | number (skrivebeskyttet) | Størrelse: sqrt(w² + x² + y² + z²). Skal være 1.0 for en gyldig rotationskvaternion. |
Statiske egenskaber
| Enumerations | Enumerations | Enumerations |
|---|---|---|
Quaternion.IDENTITY | Quaternion | Returnerer en ny identitetskvaternion (1, 0, 0, 0). |
Statiske metoder
Quaternion.fromEulerAngle(pitch, yaw, roll)
Opretter en quaternion ud fra Euler‑vinkler i radianer.
static fromEulerAngle(pitch: number, yaw: number, roll: number): Quaternion
static fromEulerAngle(vec: Vector3): QuaternionEnumerations
pitch number — Rotation omkring X-aksen i radianer.
yaw number — Rotation omkring Y-aksen i radianer.
roll number — Rotation omkring Z-aksen i radianer.
Alternativt kan du videregive en enkelt Vector3 hvis x, y, z indeholder pitch, yaw og roll.
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)
Opretter en quaternion, der repræsenterer en rotation på angle radianer omkring axis.
static fromAngleAxis(angle: number, axis: Vector3): QuaternionEnumerations
angle number — Rotationsvinkel i radianer.
axis Vector3 — Rotationsaksen. Behøver ikke at være normaliseret.
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)
Opretter den korteste-bue quaternion, der roterer retningsvektoren orig til dest.
static fromRotation(orig: Vector3, dest: Vector3): QuaternionQuaternion.slerp(t, v1, v2)
Udfører sfærisk lineær interpolation mellem v1 og v2 ved parameter 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)
Alias for slerp. Udfører sfærisk lineær interpolation.
static interpolate(t: number, fromQ: Quaternion, toQ: Quaternion): QuaternionInstansmetoder
normalize()
Returnerer en ny quaternion skaleret til enhedslængde.
normalize(): Quaternionconjugate()
Returnerer konjugatet (w, -x, -y, -z).
conjugate(): Quaternioninverse()
Returnerer den inverse quaternion. Kaster en fejl, hvis quaternionen har nul længde.
inverse(): Quaterniondot(q)
Returnerer det skalære prikprodukt med quaternion q.
dot(q: Quaternion): numberconcat(rhs)
Returnerer quaternion-produktet this * rhs, der repræsenterer den kombinerede rotation ved først at anvende this og derefter rhs.
concat(rhs: Quaternion): QuaternioneulerAngles()
Returnerer rotationen udtrykt som Euler-vinkler i radianer som en 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()
Konverterer denne quaternion til en ækvivalent Matrix4 rotationsmatrix.
toMatrix(): Matrix4equals(other)
Enumerations true hvis alle fire komponenter er strengt ens.
equals(other: Quaternion): booleantoString()
Returnerer en streng i formen Quaternion(w, x, y, z).
toString(): string