Class Quaternion

الحزمة: @aspose/3d (v24.12.0)

Quaternion يُستخدم في جميع أنحاء @aspose/3d API لتمثيل الدورانات دون قفل الجيمبال. وهو النوع الذي تُرجعه Transform.rotation و GlobalTransform.rotation. الكواتيرنيون الهوية (1, 0, 0, 0) يمثل عدم وجود دوران. Quaternion يتم تصديره من الـ @aspose/3d/utilities المسار الفرعي.

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

Enumerations

دوّر عقدة بزاوية 90° حول المحور Y ثم استيفِ بسلاسة للعودة إلى الهوية.

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

EnumerationsEnumerations
new Quaternion()ينشئ رباعي الهوية (1, 0, 0, 0).
new Quaternion(w, x, y, z)ينشئ رباعياً من مكوّنات صريحة.

Enumerations

EnumerationsEnumerationsEnumerations
wnumberالمكوّن العددي (الحقيقي). بالنسبة لرباعي دوران وحدة،, w = cos(θ/2).
xnumberالمكوّن X من الجزء المتجه.
ynumberالمكوّن Y من الجزء المتجه.
znumberالمكوّن Z من الجزء المتجه.
lengthnumber (للقراءة فقط)المقدار: sqrt(w² + x² + y² + z²). يجب أن يكون 1.0 لرباعي دوران صالح.

الخصائص الثابتة

EnumerationsEnumerationsEnumerations
Quaternion.IDENTITYQuaternionيرجع رباعي هوية جديد. (1, 0, 0, 0).

الطرق الثابتة

Quaternion.fromEulerAngle(pitch, yaw, roll)

ينشئ quaternion من زوايا إيلر بالراديان.

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

Enumerations

pitch number — دوران حول المحور X بالراديان.

yaw number — دوران حول المحور Y بالراديان.

roll number — دوران حول المحور Z بالراديان.

بدلاً من ذلك، مرّر قيمة واحدة Vector3 التي x, y, z تحمل الميل، الانحراف، والدوران.

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)

ينشئ رباعي الأعداد يمثل دورانًا قدره angle راديان حول axis.

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

Enumerations

angle number — زاوية الدوران بالراديان.

axis Vector3 — محور الدوران. لا يحتاج إلى التطبيع.

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)

ينشئ الكواتيرنيون بأقصر قوس يدور متجه الاتجاه orig إلى dest.

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

Quaternion.slerp(t, v1, v2)

ينفّذ استيفاءً خطيًا كرويًا بين v1 و v2 عند المعامل t (0.0 = v1, 1.0 = v2).

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

Enumerations

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)

اسم مستعار لـ slerp. يقوم بأداء الاستيفاء الخطي الكروي.

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

طرق المثيل

normalize()

يرجع كواترنيون جديد مُقاس إلى طول وحدة.

normalize(): Quaternion

conjugate()

يرجع المرافق (w, -x, -y, -z).

conjugate(): Quaternion

inverse()

يرجع كواترنيون العكسي. يطرح استثناء إذا كان الكواترنيون طوله صفر.

inverse(): Quaternion

dot(q)

يرجع حاصل الضرب النقطي العددي مع الكواتيرنيون q.

dot(q: Quaternion): number

concat(rhs)

يرجع حاصل ضرب الكواتيرنيون this * rhs, ممثلاً الدوران المشترك الناتج عن تطبيق أولاً this ثم rhs.

concat(rhs: Quaternion): Quaternion

eulerAngles()

يرجع الدوران معبرًا عنه كزوايا أويلر بالراديان كـ Vector3(pitch, yaw, roll).

eulerAngles(): Vector3

Enumerations

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

يحوّل هذا الـ quaternion إلى ما يعادله Matrix4 مصفوفة دوران.

toMatrix(): Matrix4

equals(other)

Enumerations true إذا كانت جميع المكوّنات الأربعة متساوية تمامًا.

equals(other: Quaternion): boolean

toString()

يرجع سلسلة بالصيغة Quaternion(w, x, y, z).

toString(): string
 العربية