Class Quaternion

Class Quaternion

Pachet: @aspose/3d (v24.12.0)

Quaternion este utilizat pe tot parcursul @aspose/3d API-ului pentru a reprezenta rotații fără blocaj de tip gimbal. Este tipul returnat de Transform.rotation și GlobalTransform.rotation. Quaternionul de identitate (1, 0, 0, 0) reprezintă nicio rotație. Quaternion este exportat din @aspose/3d/utilities sub-calea.

export class Quaternion
import { Quaternion } from '@aspose/3d/utilities';

Example

Rotește un nod cu 90° în jurul axei Y și apoi interpolează lin înapoi la identitate.

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

Example

ExampleExample
new Quaternion()Creează quaternionul de identitate (1, 0, 0, 0).
new Quaternion(w, x, y, z)Creează un quaternion din componente explicite.

Example

ExampleExampleExample
wnumberComponentă scalară (reală). Pentru un quaternion de rotație unitate, w = cos(θ/2).
xnumberComponenta X a părții vectoriale.
ynumberComponenta Y a părții vectoriale.
znumberComponenta Z a părții vectoriale.
lengthnumber (doar citire)Magnitudine: sqrt(w² + x² + y² + z²). Ar trebui să fie 1.0 pentru un quaternion de rotație valid.

Proprietăți statice

ExampleExampleExample
Quaternion.IDENTITYQuaternionReturnează un nou quaternion de identitate (1, 0, 0, 0).

Metode statice

Quaternion.fromEulerAngle(pitch, yaw, roll)

Creează un quaternion din unghiuri Euler în radiani.

static fromEulerAngle(pitch: number, yaw: number, roll: number): Quaternion
static fromEulerAngle(vec: Vector3): Quaternion

Example

pitch number — Rotație în jurul axei X în radiani.

yaw number — Rotire în jurul axei Y în radiani.

roll number — Rotire în jurul axei Z în radiani.

Alternativ, transmite un singur Vector3 al cărui x, y, z conțin pitch, yaw și roll.

Example

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)

Creează un quaternion care reprezintă o rotire de angle radiani în jurul axis.

static fromAngleAxis(angle: number, axis: Vector3): Quaternion

Example

angle number — Unghiul de rotire în radiani.

axis Vector3 — Axa de rotație. Nu trebuie să fie normalizată.

Example

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)

Creează quaternionul cu cel mai scurt arc care rotește vectorul de direcție orig în dest.

static fromRotation(orig: Vector3, dest: Vector3): Quaternion

Quaternion.slerp(t, v1, v2)

Efectuează interpolarea liniară sferică între v1 și v2 la parametrul t (0.0 = v1, 1.0 = v2).

static slerp(t: number, v1: Quaternion, v2: Quaternion): Quaternion

Example

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 pentru slerp. Efectuează interpolarea liniară sferică.

static interpolate(t: number, fromQ: Quaternion, toQ: Quaternion): Quaternion

Metode de instanță

normalize()

Returnează un nou quaternion scalat la lungimea unitate.

normalize(): Quaternion

conjugate()

Returnează conjugata (w, -x, -y, -z).

conjugate(): Quaternion

inverse()

Returnează quaternionul invers. Aruncă o excepție dacă quaternionul are lungimea zero.

inverse(): Quaternion

dot(q)

Returnează produsul scalar cu quaternionul q.

dot(q: Quaternion): number

concat(rhs)

Returnează produsul quaternion this * rhs, reprezentând rotația combinată prin aplicarea mai întâi a this și apoi rhs.

concat(rhs: Quaternion): Quaternion

eulerAngles()

Returnează rotația exprimată ca unghiuri Euler în radiani ca un Vector3(pitch, yaw, roll).

eulerAngles(): Vector3

Example

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()

Convertește acest quaternion într-un echivalent Matrix4 matrice de rotație.

toMatrix(): Matrix4

equals(other)

Example true dacă toate cele patru componente sunt strict egale.

equals(other: Quaternion): boolean

toString()

Returnează un șir în forma Quaternion(w, x, y, z).

toString(): string
 Română