Concatenar cuaterniones y aplicar en entidades 3D
Contents
[
Hide
]
Aspose.3D for .NET permite a los desarrolladores combinar dos transformaciones de rotación en una representada en un cuaternión.
Concatenar cuaterniones
Los cuaterniones se usan para representar una orientación en el espacio 3D. El método Concat
expuesto por la clase Quaternion
se puede usar para combinar dos cuaterniones. En este ejemplo de código, combinamos dos cuaterniones y obtenemos un tercer cuaterniones resultante, y luego aplicamos estos tres cuaterniones a tres cilindros.
Muestra de programación
Este ejemplo de código combina dos cuaterniones y los aplica a diferentes cilindros.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
Scene scene = new Scene(); | |
Quaternion q1 = Quaternion.FromEulerAngle(Math.PI * 0.5, 0, 0); | |
Quaternion q2 = Quaternion.FromAngleAxis(-Math.PI * 0.5, Vector3.XAxis); | |
// 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. | |
Quaternion q3 = q1.Concat(q2); | |
// Create 3 cylinders to represent each quaternion | |
Node cylinder = scene.RootNode.CreateChildNode("cylinder-q1", new Cylinder(0.1, 1, 2)); | |
cylinder.Transform.Rotation = q1; | |
cylinder.Transform.Translation = new Vector3(-5, 2, 0); | |
cylinder = scene.RootNode.CreateChildNode("cylinder-q2", new Cylinder(0.1, 1, 2)); | |
cylinder.Transform.Rotation = q2; | |
cylinder.Transform.Translation = new Vector3(0, 2, 0); | |
cylinder = scene.RootNode.CreateChildNode("cylinder-q3", new Cylinder(0.1, 1, 2)); | |
cylinder.Transform.Rotation = q3; | |
cylinder.Transform.Translation = new Vector3(5, 2, 0); | |
// Save to file | |
scene.Save("test_out.fbx"); |
Resultado en 3ds MAX