Сплетите кватернионы и примените их к лицам 3D
Contents
[
Hide
]
Aspose.3D for Python via .NET позволяет разработчикам объединить два преобразования ротации в одно, представленное в кватернионе.
Конкатенатные кватернионы
Кватернионы используются для представления ориентации в пространстве 3D. Метод concat, представленный классом Quaternion, можно использовать для объединения двух кватернионов. В этом примере кода мы объединяем два кватерниона и получаем третий полученный кватернион, а затем применяем эти три кватерниона к трем цилиндрам.
Образец программирования
Этот пример кода объединяет два кватерниона и применяет их к разным цилиндрам.
from aspose.threed import FileFormat, Scene
from aspose.threed.entities import Cylinder
from aspose.threed.utilities import Quaternion, Vector3
import math
# For complete examples and data files, please go to https:# github.com/aspose-3d/Aspose.3D-for-.NET
scene = Scene()
q1 = Quaternion.from_euler_angle(math.pi * 0.5, 0, 0)
q2 = Quaternion.from_angle_axis(-math.pi * 0.5, Vector3.X_AXIS)
# Concatenate q1 and q2. q1 and q2 rotate alone x-axis with same angle but different direction,
# So the concatenated result will be identity quaternion.
q3 = q1.concat(q2)
# Create 3 cylinders to represent each quaternion
cylinder = scene.root_node.create_child_node("cylinder-q1", Cylinder(0.1, 1, 2))
cylinder.transform.rotation = q1
cylinder.transform.translation = Vector3(-5, 2, 0)
cylinder = scene.root_node.create_child_node("cylinder-q2", Cylinder(0.1, 1, 2))
cylinder.transform.rotation = q2
cylinder.transform.translation = Vector3(0, 2, 0)
cylinder = scene.root_node.create_child_node("cylinder-q3", Cylinder(0.1, 1, 2))
cylinder.transform.rotation = q3
cylinder.transform.translation = Vector3(5, 2, 0)
output = "out" + "test_out.fbx"
# Save to file
scene.save(output, FileFormat.FBX7400ASCII)Результат в 3ds MAX