Quaternion — Aspose.3D FOSS for Java

Example

Quaternion представлява единичен кватернион, използван за въртене. Той избягва gimbal lock и осигурява плавна интерполация между ориентациите. The Transform класът съхранява въртенето като Quaternion достъпен чрез getRotation() / setRotation().

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Quaternion()Идентичен кватернион (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Конструира се от четири компонента

Публични полета

Quaternion използва публични полета за достъп до компонентите (не getter/setter методи):

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

Изчислени свойства

ExampleExampleExampleExample
lengthdoublegetLength()Модул на кватерниона (трябва да бъде 1.0 за единичен кватернион)

Статични полета

ExampleExampleExample
IDENTITYQuaternionИдентичният кватернион (1, 0, 0, 0) – без завъртане

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

ExampleТип на връщанеExample
Quaternion.fromEuler(double x, double y, double z)QuaternionСъздава кватернион от ъгли на Юлер в градуси
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionСъздава кватернион от ъгъл (в радиани) и ос на въртене

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

ExampleТип на връщанеExample
normalize()QuaternionВръща копие с единична дължина
conjugate()QuaternionВръща конюгата (негирана векторна част)
inverse()QuaternionВръща мултипликативната обратна
toEulerAngles()Vector3Конвертира в ъгли на Юлер в градуси
toMatrix()Matrix4Конвертира в 4x4 матрица за завъртане

Example

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

Вижте също

 Български