Quaternion — Aspose.3D FOSS for Java

Example

Quaternion reprezintă un cuaternion unitate utilizat pentru rotație. Evită blocajul gimbal și oferă interpolare lină între orientări. Acesta Transform clasa stochează rotația ca un Quaternion accesibil prin getRotation() / setRotation().

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Quaternion()Cuaternion de identitate (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Construiește din patru componente

Câmpuri publice

Quaternion folosește câmpuri publice pentru acces la componente (nu metode getter/setter):

ExampleExampleExampleExample
wdoubleq.wPartea scalară (reală)
xdoubleq.xComponenta X a părții vectoriale
ydoubleq.yComponenta Y a părții vectoriale
zdoubleq.zComponenta Z a părții vectoriale

Proprietăți calculate

ExampleExampleExampleExample
lengthdoublegetLength()Mărimea quaternionului (ar trebui să fie 1.0 pentru un quaternion unitate)

Câmpuri statice

ExampleExampleExample
IDENTITYQuaternionQuaternionul de identitate (1, 0, 0, 0) – fără rotație

Metode statice

ExampleTipul de returnareExample
Quaternion.fromEuler(double x, double y, double z)QuaternionCreează un quaternion din unghiuri Euler în grade
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionCreează un quaternion dintr-un unghi (radiani) și axa de rotație

Metode de instanță

ExampleTipul de returnareExample
normalize()QuaternionReturnează o copie cu lungime unitate
conjugate()QuaternionReturnează conjugata (partea vectorială negată)
inverse()QuaternionReturnează inversul multiplicativ
toEulerAngles()Vector3Convertește la unghiuri Euler în grade
toMatrix()Matrix4Convertește la o matrice de rotație 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);

Vezi și

 Română