项目作者: Hafidzazmi

项目描述 :
Dual Quaternion (i.e Rotation & Translation) Library for c++
高级语言: C++
项目地址: git://github.com/Hafidzazmi/Dual-Quaternion-Library.git
创建时间: 2019-11-05T17:03:22Z
项目社区:https://github.com/Hafidzazmi/Dual-Quaternion-Library

开源协议:

下载


Dual-Quaternion-Library-C++

This library was build for Quaternion & Dual Quaternion Calculation Tutorial.

Quaternion::

Name Type Description
Create std::array Create Quaternion Rotation, Angle in Degree
Conjugate std::array Quaternion Conjugate
Normalize double Normalize Quaternion , Unit Quaternion = 1
Add std::array Add Two Quaternions
Subtract std::array Subtract Two Quaternions
Multiply std::array Multiply Two Quaternions
MultiplyScalar std::array Multiply Quaternion with scalar value

DualQuaternion::

Name Type Description
Create std::array Create Dual Quaternion Rotation and Translation, Angle in Degree
Rotation std::array Return Dual Quaternion Pure Rotation
Translation std::array Return Vector Quaternion Translation
Conjugate std::array Dual Quaternion Conjugate
Add std::array Add Two Dual Quaternions
Subtract std::array Subtract Two Dual Quaternions
Multiply std::array Multiply Two Dual Quaternions

Quaternion::Create

Create a quaternion rotation based on the equation below :

q= [cos( \theta /2), d*sin( \theta /2)]

where :

 q_{s} = cos( \theta /2)

 q_{v} = d*sin( \theta /2)

Example :

double Angle = 90; //in Degrees

std::array DirectionOfRotation = {0,1,0};

std::array Quaternion1;

Quaternion1 = Quaternion::Create(Angle,DirectionOfRotation);

Quaternion::Conjugate

Return Quaternion Conjugate based on the equation below :

q = [cos( \theta /2), -d*sin( \theta /2)]

Example :

Quaternion::Conjugate(Quaternion1);

Quaternion::Normalize

Return Quaternion Normalize based on the equation below :

||q|| = \sqrt{q0^{2} + q1^{2} + q2^{2} + q3^{2}}

Note : Normalize Unit Quaternion will return 1

Example :

Quaternion::Normalize(Quaternion1);

Quaternion::Add

Add two Quaternions (P + Q) based on the equation below :

 p + q = [p_{s} + q_{s},p_{v} + q_{v}]

Example :

Quaternion::Add(Quaternion1,Quaternion2);

Note :

This library used std::array<>

Any improvment are appreciated