Dual Quaternion project added
This commit is contained in:
parent
cf73f5f262
commit
300fa328b3
3 changed files with 253 additions and 0 deletions
123
QuaternionDual/QuaternionDual.cpp
Normal file
123
QuaternionDual/QuaternionDual.cpp
Normal file
|
@ -0,0 +1,123 @@
|
|||
/* En-tête pour les classes
|
||||
* de quaternion dual.
|
||||
*/
|
||||
#include "QuaternionDual.hpp"
|
||||
/* Méthodes Dual. */
|
||||
/* Constructeur. */
|
||||
Dual::Dual(void)
|
||||
{
|
||||
setReal(1) ;
|
||||
setDual(1) ;
|
||||
}
|
||||
/* Constructeur. */
|
||||
Dual::Dual(double r, double d)
|
||||
{
|
||||
setReal(r) ;
|
||||
setDual(d) ;
|
||||
}
|
||||
/* Accesseurs. */
|
||||
double Dual::getReal(void)
|
||||
{
|
||||
return __r ;
|
||||
}
|
||||
double Dual::getDual(void)
|
||||
{
|
||||
return __d ;
|
||||
}
|
||||
/* Mutateur. */
|
||||
void Dual::setReal(double r)
|
||||
{
|
||||
__r = r ;
|
||||
}
|
||||
void Dual::setDual(double d)
|
||||
{
|
||||
__d = d ;
|
||||
}
|
||||
/* Affichage */
|
||||
void Dual::show(void)
|
||||
{
|
||||
std::cout << "Dual[" << getReal() << "]"
|
||||
<< "[" << getDual() << "]]"
|
||||
<< std::endl ;
|
||||
}
|
||||
/* Méthodes Quaternion. */
|
||||
/* Constructeurs. */
|
||||
Quaternion::Quaternion(void)
|
||||
{
|
||||
setScalar(1) ;
|
||||
setX(1) ;
|
||||
setY(1) ;
|
||||
setZ(1) ;
|
||||
setVector(1,1) ;
|
||||
}
|
||||
Quaternion::Quaternion(double t, double x, double y, double z)
|
||||
{
|
||||
setScalar(t) ;
|
||||
setX(x) ;
|
||||
setY(y) ;
|
||||
setZ(z) ;
|
||||
setVector(1,1,1,1) ;
|
||||
}
|
||||
Quaternion::Quaternion(double v[4])
|
||||
{
|
||||
setScalar(v[0]) ;
|
||||
setX(v[1]) ;
|
||||
setY(v[2]) ;
|
||||
setZ(v[3]) ;
|
||||
setVector(v) ;
|
||||
}
|
||||
Quaternion::Quaternion(vector4 vec)
|
||||
{
|
||||
setScalar(vec[0]) ;
|
||||
setX(vec[1]) ;
|
||||
setY(vec[2]) ;
|
||||
setZ(vec[3]) ;
|
||||
setVector(vec) ;
|
||||
}
|
||||
/* Accesseurs */
|
||||
double Quaternion::getScalar(void)
|
||||
{
|
||||
return __t
|
||||
}
|
||||
double Quaternion::getX(void)
|
||||
{
|
||||
return __x
|
||||
}
|
||||
double Quaternion::getY(void)
|
||||
{
|
||||
return __y
|
||||
}
|
||||
double Quaternion::getZ(void)
|
||||
{
|
||||
return __z
|
||||
}
|
||||
vector4 Quaternion::getVector(void)
|
||||
{
|
||||
return __vec
|
||||
}
|
||||
/* Mutateurs */
|
||||
void setScalar(double t) ;
|
||||
{
|
||||
__t = t ;
|
||||
}
|
||||
void setX(double x) ;
|
||||
{
|
||||
__x = x ;
|
||||
}
|
||||
void setY(double y) ;
|
||||
{
|
||||
__y = y ;
|
||||
}
|
||||
void setZ(double z) ;
|
||||
{
|
||||
__z = z ;
|
||||
}
|
||||
void setVector(double t, double x, double y, double z) ;
|
||||
{
|
||||
vector4 vec = {t, x, y, z} ;
|
||||
__vec = vec ;
|
||||
}
|
||||
void setVector(double* v)
|
||||
{
|
||||
vector4 vec(v) ;
|
||||
__vec = vec ;
|
112
QuaternionDual/QuaternionDual.hpp
Normal file
112
QuaternionDual/QuaternionDual.hpp
Normal file
|
@ -0,0 +1,112 @@
|
|||
/*************************\
|
||||
| Quaternions |
|
||||
\*************************/
|
||||
/*
|
||||
g++ -std=c++17 -o QuaternionDual main.cpp QuaternionDual.cpp
|
||||
*/
|
||||
#ifndef QUATERNIONS_HPP
|
||||
#define QUATERNIONS_HPP
|
||||
/* En-tête de la bibliothèque standard :
|
||||
* Entrées et sortie en C++.
|
||||
*/
|
||||
#include <iostream>
|
||||
/* En-tête de la bibliothèque standard :
|
||||
* Chaînes de caractère en C++.
|
||||
*/
|
||||
#include <string>
|
||||
/*
|
||||
* Vecteurs C++.
|
||||
*/
|
||||
#include <vector>
|
||||
/*
|
||||
* Tableaux C++.
|
||||
*/
|
||||
#include <array>
|
||||
/* Header Guard.
|
||||
* Pour éviter de redéfinir.
|
||||
* Tout le code de l'en-tête est dedans.
|
||||
*/
|
||||
typedef std::array<double, 2> vector2;
|
||||
typedef std::array<double, 4> vector4 ;
|
||||
/* Classe 'Dual'. */
|
||||
class Dual
|
||||
{
|
||||
/* Partie verrouillée (héritable). */
|
||||
protected:
|
||||
double __r ;// Réel.
|
||||
double __d ;// Dual.
|
||||
/* Partie accessible (héritable). */
|
||||
public:
|
||||
/* Constructeur. */
|
||||
Dual(void) ;
|
||||
Dual(double r, double d) ;
|
||||
/* Destructeur. */
|
||||
~Dual(void) ;
|
||||
/* Lecture. */
|
||||
double getReal(void) ;
|
||||
double getDual(void) ;
|
||||
/* Écriture. */
|
||||
void setReal(double r) ;
|
||||
void setDual(double d) ;
|
||||
/* Affichage. */
|
||||
void show(void);
|
||||
};
|
||||
/* Header Guard.
|
||||
* Pour éviter de redéfinir.
|
||||
* Tout le code de l'en-tête est dedans.
|
||||
*/
|
||||
/* Classe 'Quaternion'. */
|
||||
class Quaternion
|
||||
{
|
||||
/* Partie protégée (héritable). */
|
||||
protected:
|
||||
double __t ;// scalaire.
|
||||
/* Éléments de vecteur. */
|
||||
double __x ;
|
||||
double __y ;
|
||||
double __z ;
|
||||
/* Vecteur. */
|
||||
vector4 __vec ;
|
||||
public:
|
||||
/* Partie publique (accessible) */
|
||||
/* Constructeurs. */
|
||||
Quaternion(void) ;
|
||||
Quaternion(double t, double x, double y, double z) ;
|
||||
Quaternion(double* v) ;
|
||||
Quaternion(vector4 vec) ;
|
||||
/* Destructeur. */
|
||||
~Quaternion(void) ;
|
||||
/* Accesseurs. */
|
||||
double getScalar(void) ;
|
||||
double getX(void) ;
|
||||
double getY(void) ;
|
||||
double getZ(void) ;
|
||||
vector4 getVector(void) ;
|
||||
/* Mutateurs. */
|
||||
void setScalar( double t) ;
|
||||
void setX(double x) ;
|
||||
void setY(double y) ;
|
||||
void setZ(double z) ;
|
||||
void setVector(double t, double x, double y, double z) ;
|
||||
void setVector(double *v) ;
|
||||
void setVector(vector4 vec) ;
|
||||
/* Affichage. */
|
||||
void show(void) ;
|
||||
};
|
||||
/* Header Guard.
|
||||
* Pour éviter de redéfinir.
|
||||
* Tout le code de l'en-tête est dedans.
|
||||
*/
|
||||
/* Classe 'Quaternion dual'. */
|
||||
class QuaternionDual : protected Quaternion
|
||||
{
|
||||
/* Partie verrouillée (héritable). */
|
||||
protected:
|
||||
/* Partie accessible (héritable). */
|
||||
public:
|
||||
/* Constructeur. */
|
||||
QuaternionDual(void) ;
|
||||
/* Destructeur. */
|
||||
~QuaternionDual(void) ;
|
||||
};
|
||||
#endif//QUATERNIONS_HPP
|
18
QuaternionDual/main.cpp
Normal file
18
QuaternionDual/main.cpp
Normal file
|
@ -0,0 +1,18 @@
|
|||
/* Code principal. */
|
||||
/* Import de l'en-tête. */
|
||||
#include "QuaternionDual.hpp"
|
||||
/* Fonction principale. */
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
std::cout << "Début";
|
||||
Quaternion q();
|
||||
q.setX(7);
|
||||
std::cout << "Vecteur : ";
|
||||
for(auto n : q.getVector())
|
||||
{
|
||||
std::cout << n << " ";
|
||||
}
|
||||
std::cout << ".\n";
|
||||
std::cout << "Fin" << std::endl;
|
||||
return EXIT_SUCCESS ;
|
||||
}
|
Loading…
Reference in a new issue