|
Blender V4.3
|
#include <ostream>#include "BLI_math_angle_types.hh"#include "BLI_math_base.hh"#include "BLI_math_basis_types.hh"#include "BLI_struct_equality_utils.hh"Go to the source code of this file.
Classes | |
| struct | blender::math::EulerBase< T > |
| struct | blender::math::EulerXYZBase< T > |
| struct | blender::math::Euler3Base< T > |
Namespaces | |
| namespace | blender |
| namespace | blender::math |
Typedefs | |
| using | blender::math::EulerXYZ = EulerXYZBase<float> |
| using | blender::math::Euler3 = Euler3Base<float> |
Enumerations | |
| enum | blender::math::EulerOrder { blender::math::XYZ = 1 , blender::math::XZY , blender::math::YXZ , blender::math::YZX , blender::math::ZXY , blender::math::ZYX } |
Functions | |
| std::ostream & | blender::math::operator<< (std::ostream &stream, EulerOrder order) |
Euler rotations are represented as a triple of angle representing a rotation around each basis vector. The order in which the three rotations are applied changes the resulting orientation.
A blender::math::EulerXYZ represent an Euler triple with fixed axis order (XYZ). A blender::math::Euler3 represents an Euler triple with arbitrary axis order.
They are prone to gimbal lock and are not suited for many applications. However they are more intuitive than other rotation types. Their main use is for converting user facing rotation values to other rotation types.
The rotation values can still be reinterpreted like this: Euler3(float3(my_euler3_zyx_rot), EulerOrder::XYZ) This will swap the X and Z rotation order and will likely not produce the same rotation matrix.
If the goal is to convert (keep the same orientation) to Euler3 then you have to do an assignment. eg: Euler3 my_euler(EulerOrder::XYZ); my_euler = my_quaternion:
Definition in file BLI_math_euler_types.hh.