Quaternion — Aspose.3D FOSS for Java

Overview

Quaternion представляє одиничний кватерніон, що використовується для обертання. Він уникає гімбального блокування та забезпечує плавну інтерполяцію між орієнтаціями. The Transform клас зберігає обертання як a Quaternion доступний через getRotation() / setRotation().

Overview: com.aspose.threed

import com.aspose.threed.*;

Overview

OverviewOverview
Quaternion()Одиничний кватерніон (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Конструюється з чотирьох компонент

Публічні поля

Quaternion використовує публічні поля для доступу до компонентів (не методи getter/setter):

OverviewOverviewOverviewOverview
wdoubleq.wСкалярна (реальна) частина
xdoubleq.xX‑компонента векторної частини
ydoubleq.yY‑компонента векторної частини
zdoubleq.zZ‑компонента векторної частини

Обчислені властивості

OverviewOverviewOverviewOverview
lengthdoublegetLength()Модуль кватерніону (повинен бути 1.0 для одиничного кватерніону)

Статичні поля

OverviewOverviewOverview
IDENTITYQuaternionОдиничний кватерніон (1, 0, 0, 0) – без обертання

Статичні методи

OverviewТип поверненняOverview
Quaternion.fromEuler(double x, double y, double z)QuaternionСтворює кватерніон з кутів Ейлера в градусах
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionСтворює кватерніон за кутом (радіани) та віссю обертання

Методи екземпляра

OverviewТип поверненняOverview
normalize()QuaternionПовертає копію одиничної довжини
conjugate()QuaternionПовертає спряжене (негативна векторна частина)
inverse()QuaternionПовертає мультиплікативний обернений
toEulerAngles()Vector3Перетворює в кути Ейлера в градусах
toMatrix()Matrix4Перетворює у 4x4 матрицю обертання

Overview

import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.*;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("rotated");

// Create from Euler angles (degrees)
Quaternion q = Quaternion.fromEuler(0.0, 90.0, 0.0);
node.getTransform().setRotation(q);

// Read back as Euler
Vector3 euler = node.getTransform().getEulerAngles();
System.out.println(euler);   // approximately (0, 90, 0)

// Create from angle-axis
Quaternion q2 = Quaternion.fromAngleAxis(Math.toRadians(45), Vector3.UNIT_Y);
node.getTransform().setRotation(q2);

// Combine rotations via multiply
Quaternion start = Quaternion.IDENTITY;
Quaternion end = Quaternion.fromEuler(0.0, 180.0, 0.0);
Quaternion combined = Quaternion.multiply(start, end);

Див. також

 Українська