Quaternion — Aspose.3D FOSS for Java

Example

Quaternion αντιπροσωπεύει ένα μοναδιαίο quaternion που χρησιμοποιείται για περιστροφή. Αποφεύγει το gimbal lock και παρέχει ομαλή παρεμβολή μεταξύ προσανατολισμών. Το Transform η κλάση αποθηκεύει την περιστροφή ως Quaternion προσβάσιμο μέσω getRotation() / setRotation().

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Quaternion()Quaternion Ταυτότητας (1, 0, 0, 0)
Quaternion(double w, double x, double y, double z)Δημιουργείται από τέσσερα συστατικά

Δημόσια Πεδία

Quaternion χρησιμοποιεί δημόσια πεδία για πρόσβαση στα συστατικά (όχι μεθόδους getter/setter):

ExampleExampleExampleExample
wdoubleq.wΣυμμετρικό (πραγματικό) μέρος
xdoubleq.xΣυστατικό X του διανυσματικού μέρους
ydoubleq.yΣυστατικό Y του διανυσματικού μέρους
zdoubleq.zΣυστατικό Z του διανυσματικού μέρους

Υπολογιζόμενες Ιδιότητες

ExampleExampleExampleExample
lengthdoublegetLength()Μέγεθος του quaternion (πρέπει να είναι 1.0 για ένα μοναδιαίο quaternion)

Στατικά Πεδία

ExampleExampleExample
IDENTITYQuaternionΤο quaternion ταυτότητας (1, 0, 0, 0) – χωρίς περιστροφή

Στατικές Μεθόδους

ExampleΤύπος ΕπιστροφήςExample
Quaternion.fromEuler(double x, double y, double z)QuaternionΔημιουργεί ένα quaternion από γωνίες Euler σε μοίρες
Quaternion.fromAngleAxis(double angle, Vector3 axis)QuaternionΔημιουργεί ένα quaternion από γωνία (ακτίνια) και άξονα περιστροφής

Μεθόδους Αντικειμένου

ExampleΤύπος ΕπιστροφήςExample
normalize()QuaternionΕπιστρέφει ένα αντίγραφο μονάδας μήκους
conjugate()QuaternionΕπιστρέφει το συζυγές (αντιστροφή του διανυσματικού μέρους)
inverse()QuaternionΕπιστρέφει το πολλαπλασιαστικό αντίστροφο
toEulerAngles()Vector3Μετατρέπει σε γωνίες Euler σε μοίρες
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);

Δείτε επίσης

 Ελληνικά