Quaternion

Methods

Quaternion αντιπροσωπεύει ένα μοναδιαίο τετραδικό που χρησιμοποιείται για την κωδικοποίηση 3Δ περιστροφών. Σε αντίθεση με τις γωνίες Euler, τα τετραδικά αποφεύγουν το gimbal lock και παρεμβάλλονται ομαλά. Το Transform.rotation ιδιότητα σε έναν κόμβο σκηνής αποθηκεύει ένα Quaternion.

Τα συστατικά αποθηκεύονται ως (w, x, y, z) όπου w είναι το βαθμωτό μέρος και (x, y, z) σχηματίζουν το διανυσματικό μέρος.

from aspose.threed.utilities import Quaternion
import math

# Identity quaternion (no rotation)
q = Quaternion()   # w=1, x=0, y=0, z=0

# Rotation of 90 degrees around the Y axis
q = Quaternion.from_euler_angle(0.0, math.radians(90), 0.0)

Methods: aspose.threed.utilities

from aspose.threed.utilities import Quaternion

Methods

MethodsMethods
Quaternion()Τετραδικό ταυτότητας (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Συγκεκριμένος κατασκευαστής συστατικών

Methods

MethodsMethodsMethods
wfloatΒαθμωτό (πραγματικό) μέρος
xfloatΔιανυσματικό συστατικό x
yfloatΔιανυσματικό συστατικό y
zfloatΔιανυσματικό συστατικό z
lengthfloatΜέγεθος του τετραδικού

Στατικές μέθοδοι κατασκευής

MethodsΤύπος ΕπιστροφήςMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionΔημιουργεί από γωνίες Euler σε ακτίνια (pitch=X, yaw=Y, roll=Z). Δέχεται επίσης ένα Vector3 ως πρώτο όρισμα
Quaternion.from_angle_axis(angle, axis)QuaternionΚατασκευές από γωνία (ακτίνια) και ένα Vector3 άξονας
Quaternion.from_rotation(orig, dest)QuaternionΠεριστροφή του μικρότερου τόξου από κατεύθυνση orig προς κατεύθυνση dest
Quaternion.interpolate(t, from_q, to_q)Quaternionπαρεμβολή SLERP; t σε [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionΨευδώνυμο για interpolate

Μέθοδοι αντικειμένου

MethodsΤύπος ΕπιστροφήςMethods
normalize()QuaternionΕπιστρέφει ένα αντίγραφο μονάδας μήκους
conjugate()QuaternionΕπιστρέφει το συζυγές (w, -x, -y, -z)
inverse()QuaternionΕπιστρέφει το πολλαπλασιαστικό αντίστροφο· προκαλεί ValueError αν το μήκος είναι μηδέν
dot(q)floatΕσωτερικό γινόμενο με άλλο τετραδικό
concat(rhs)QuaternionΓινόμενο Hamilton (σύνθεση δύο περιστροφών)
euler_angles()Vector3Εξάγει γωνίες Euler (ακτίνια) ως Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Μετατρέπει σε πίνακα περιστροφής 4×4· προαιρετικά ενσωματώνει μια μετάθεση Vector3
to_angle_axis(angle, axis)NoneΑποσυνθέτει σε γωνία (ακτίνια) και άξονα· τα αποτελέσματα γράφονται σε λίστες μονού στοιχείου angle[0] και axis[0]

Methods

from aspose.threed import Scene
from aspose.threed.utilities import Quaternion, Vector3
import math

scene = Scene()
node = scene.root_node.create_child_node("rotated_box")

# Rotate 45 degrees around the Y axis
angle = math.radians(45)
q = Quaternion.from_euler_angle(0.0, angle, 0.0)
node.transform.rotation = q

# SLERP between two rotations
q_start = Quaternion.from_euler_angle(0, 0, 0)
q_end   = Quaternion.from_euler_angle(0, math.pi, 0)
q_mid   = Quaternion.slerp(0.5, q_start, q_end)

# Convert to matrix (useful for manual transforms)
mat = q.to_matrix()

# Extract Euler angles back
angles = q.euler_angles()   # Vector3(roll, pitch, yaw)
print(math.degrees(angles.y))   # ~45.0

Δείτε επίσης

 Ελληνικά