About
maxon::Quaternion is a MAXON API ALIASES class used to represent quaternions and deliver standard mathematical operations. Unit quaternions, also known as versors, provide a convenient mathematical notation for representing orientations and rotations of objects in three dimensions. Compared to Euler angles they are simpler to compose and avoid the problem of gimbal lock. Compared to rotation matrices they are more compact, more numerically stable, and may be more efficient.
Creation and initialization
A maxon::Quaternion instance can be created on the stack and initialized through the proper method using a numerical data type as template:
Standard operations
The maxon::Quaternion class delivers a set of standard mathematical operators to perform calculation with quaternion. The operators deliver are:
quaternionB += quaternionA;
quaternionB -= quaternionA;
Get and Set operations
The maxon::Quaternion class is provided with a number of get methods to retrieve useful data from a maxon::Quaternion instance:
const maxon::Float valSqLength = quatY90.GetSquaredLength();
The maxon::Quaternion class is provided with a number of "set" methods to define a maxon::Quaternion instance:
The maxon::Quaternion class can be used to easily perform a rotation on a geometrical entity.
Conversion
A maxon::Quaternion instance can be converted to maxon::String using:
Utilities
A maxon::Quaternion instance can be read from and written to disk by serializing the data contained using the conventional functions.
const maxon::Id fileID(
"net.maxonexample.quaternion" );
Further Reading
std::enable_if< GetCollectionKind< T >::value==COLLECTION_KIND::ARRAY, Result< void > >::type ReadDocument(const Url &url, const Id &id, T &object, const DataDictionary &dict=DataDictionary())
Definition: io.h:35
QuaternionType GetConjugate() const
Definition: quaternion.h:422
static Result< QuaternionType > GetLerp(const QuaternionType &q1, const QuaternionType &q2, const ValueType t)
Definition: quaternion.h:472
Definition: c4d_quaternion.h:21
String ToString(const FormatStatement *formatStatement=nullptr) const
Definition: quaternion.h:570
The maxon namespace contains all declarations of the MAXON API.
Definition: c4d_basedocument.h:15
void SetRotation(const VectorType &rotation)
Definition: quaternion.h:341
maxon::Float Float
Definition: ge_sys_math.h:66
Definition: string.h:1213
static ValueType GetDot(const QuaternionType &q1, const QuaternionType &q2)
Calculates the dot product of two quaternions.
Definition: quaternion.h:467
Definition: apibaseid.h:250
#define iferr_return
Definition: resultbase.h:1465
Float64 Float
Definition: apibase.h:195
#define DiagnosticOutput(formatString,...)
Definition: debugdiagnostics.h:167
void SetAxisRotation(const VectorType &axis, const ValueType rotation)
Definition: quaternion.h:352
Result< QuaternionType > GetExp() const
Definition: quaternion.h:442
Result< QuaternionType > GetNormalized() const
Definition: quaternion.h:399
Result< void > WriteDocument(const Url &url, OPENSTREAMFLAGS flags, const Id &id, const T &object, IOFORMAT format=IOFORMAT::DEFAULT, const DataDictionary &dict=DataDictionary())
Definition: io.h:67
void SetMatrix(const MatrixType &m)
Definition: quaternion.h:321
Result< QuaternionType > GetLog() const
Definition: quaternion.h:427
Result< QuaternionType > GetPow(const ValueType &t) const
Definition: quaternion.h:456
MatrixType GetMatrix() const
Derives a rotation matrix from the quaternion.
Definition: quaternion.h:358
General 3×3 matrix template consisting of three column vectors v1, v2, v3.
Definition: matrix.h:14
MAXON_ATTRIBUTE_FORCE_INLINE Float32 DegToRad(Float32 r)
Converts float value from degrees to radians.
Definition: apibasemath.h:474
static constexpr Float64 PI05
floating point constant: 0.5 * PI
Definition: apibasemath.h:124
VectorType v
direction vector component
Definition: quaternion.h:237
Result< QuaternionType > GetInverse() const
Definition: quaternion.h:408
Definition: quaternion.h:24