Class Quaternion
Package : @aspose/3d (v24.12.0)
Quaternion est utilisé tout au long du @aspose/3d API pour représenter des rotations sans blocage de cardan. C’est le type renvoyé par Transform.rotation et GlobalTransform.rotation. Le quaternion d’identité (1, 0, 0, 0) représente aucune rotation. Quaternion est exporté depuis le @aspose/3d/utilities sous‑chemin.
export class Quaternionimport { Quaternion } from '@aspose/3d/utilities';ColladaSaveOptions
Faire pivoter un nœud de 90° autour de l’axe Y, puis interpoler en douceur jusqu’à l’identité.
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
ColladaSaveOptions
| ColladaSaveOptions | ColladaSaveOptions |
|---|---|
new Quaternion() | Crée le quaternion d’identité (1, 0, 0, 0). |
new Quaternion(w, x, y, z) | Crée un quaternion à partir de composants explicites. |
ColladaSaveOptions
| ColladaSaveOptions | ColladaSaveOptions | ColladaSaveOptions |
|---|---|---|
w | number | Composante scalaire (réelle). Pour un quaternion de rotation unitaire, w = cos(θ/2). |
x | number | Composante X de la partie vectorielle. |
y | number | Composante Y de la partie vectorielle. |
z | number | Composante Z de la partie vectorielle. |
length | number (lecture seule) | Magnitude : sqrt(w² + x² + y² + z²). Doit être 1.0 pour un quaternion de rotation valide. |
Propriétés statiques
| ColladaSaveOptions | ColladaSaveOptions | ColladaSaveOptions |
|---|---|---|
Quaternion.IDENTITY | Quaternion | Renvoie un nouveau quaternion identité (1, 0, 0, 0). |
Méthodes statiques
Quaternion.fromEulerAngle(pitch, yaw, roll)
Crée un quaternion à partir d’angles d’Euler exprimés en radians.
static fromEulerAngle(pitch: number, yaw: number, roll: number): Quaternion
static fromEulerAngle(vec: Vector3): QuaternionColladaSaveOptions
pitch number — Rotation autour de l’axe X en radians.
yaw number — Rotation autour de l’axe Y en radians.
roll number — Rotation autour de l’axe Z en radians.
Alternativement, passez un seul Vector3 dont x, y, z contiennent le tangage, le lacet et le roulis.
ColladaSaveOptions
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)
Crée un quaternion représentant une rotation de angle radians autour de axis.
static fromAngleAxis(angle: number, axis: Vector3): QuaternionColladaSaveOptions
angle number — Angle de rotation en radians.
axis Vector3 — L’axe de rotation. N’a pas besoin d’être normalisé.
ColladaSaveOptions
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)
Crée le quaternion d’arc le plus court qui fait pivoter le vecteur de direction orig vers dest.
static fromRotation(orig: Vector3, dest: Vector3): QuaternionQuaternion.slerp(t, v1, v2)
Effectue une interpolation linéaire sphérique entre v1 et v2 au paramètre t (0.0 = v1, 1.0 = v2).
static slerp(t: number, v1: Quaternion, v2: Quaternion): QuaternionColladaSaveOptions
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 de slerp. Effectue une interpolation linéaire sphérique.
static interpolate(t: number, fromQ: Quaternion, toQ: Quaternion): QuaternionIOConfig (base)
normalize()
Renvoie un nouveau quaternion mis à l’échelle à une longueur unité.
normalize(): Quaternionconjugate()
Renvoie le conjugué (w, -x, -y, -z).
conjugate(): Quaternioninverse()
Renvoie le quaternion inverse. Lève une exception si le quaternion a une longueur nulle.
inverse(): Quaterniondot(q)
Renvoie le produit scalaire avec le quaternion q.
dot(q: Quaternion): numberconcat(rhs)
Renvoie le produit quaternionique this * rhs, représentant la rotation combinée d’abord en appliquant this et ensuite rhs.
concat(rhs: Quaternion): QuaternioneulerAngles()
Renvoie la rotation exprimée en angles d’Euler en radians sous forme de Vector3(pitch, yaw, roll).
eulerAngles(): Vector3ColladaSaveOptions
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()
Convertit ce quaternion en un équivalent Matrix4 matrice de rotation.
toMatrix(): Matrix4equals(other)
ColladaSaveOptions true si les quatre composantes sont strictement égales.
equals(other: Quaternion): booleantoString()
Renvoie une chaîne sous la forme Quaternion(w, x, y, z).
toString(): string