Castor3D 0.16.0
Multiplatform 3D engine
Fonctions membres publiques | Fonctions membres publiques statiques | Liste de tous les membres
Référence du modèle de la classe castor::QuaternionT< T >

Représentation d'un quaternion. Plus de détails...

#include <Quaternion.hpp>

Graphe d'héritage de castor::QuaternionT< T >:
Inheritance graph
[légende]
Graphe de collaboration de castor::QuaternionT< T >:
Collaboration graph
[légende]

Fonctions membres publiques

 QuaternionT ()
 Constructeur.
 
 QuaternionT (QuaternionT const &rhs)
 Constructeur par copie.
 
 QuaternionT (QuaternionT &&rhs) noexcept
 Constructeur par déplacement.
 
 QuaternionT (double const *values)
 Constructeur.
 
 QuaternionT (float const *values)
 Constructeur.
 
 QuaternionT (Point4f const &values)
 Constructeur.
 
 QuaternionT (Point4d const &values)
 Constructeur.
 
 ~QuaternionT () noexcept=default
 Destructeur.
 
QuaternionT< T > & operator= (QuaternionT< T > const &rhs)
 Opérateur d'affectation par copie.
 
QuaternionT< T > & operator= (QuaternionT< T > &&rhs) noexcept
 Opérateur d'affectation par déplacement.
 
QuaternionT< T > & operator+= (QuaternionT< T > const &rhs)
 Opérateur d'affectation par addition.
 
QuaternionT< T > & operator-= (QuaternionT< T > const &rhs)
 Opérateur d'affectation par soustraction.
 
QuaternionT< T > & operator*= (QuaternionT< T > const &rhs)
 Opérateur d'affectation par multiplication.
 
QuaternionT< T > & operator*= (double rhs)
 Opérateur d'affectation par multiplication.
 
QuaternionT< T > & operator*= (float rhs)
 Opérateur d'affectation par multiplication.
 
template<Vector3fT PtT>
PtT & transform (PtT const &vector, PtT &result) const
 Transforme un vecteur et donne le résultat.
 
template<Vector3dT PtT>
PtT & transform (PtT const &vector, PtT &result) const
 Transforme un vecteur et donne le résultat.
 
void toMatrix (float *matrix) const
 Remplit une matrice de rotation à partir de ce Quaternion.
 
void toMatrix (double *matrix) const
 Remplit une matrice de rotation à partir de ce Quaternion.
 
void toMatrix (Matrix4x4f &matrix) const
 Remplit une matrice de rotation à partir de ce Quaternion.
 
void toMatrix (Matrix4x4d &matrix) const
 Remplit une matrice de rotation à partir de ce Quaternion.
 
void toAxisAngle (Point3f &vector, Angle &angle) const
 Calcule l'axe et l'angle de ce Quaternion.
 
void toAxisAngle (Point3d &vector, Angle &angle) const
 Calcule l'axe et l'angle de ce Quaternion.
 
void toAxes (Point3f &x, Point3f &y, Point3f &z) const
 Calcule 3 axes à partir de ce quaternion.
 
void toAxes (Point3d &x, Point3d &y, Point3d &z) const
 Calcule 3 axes à partir de ce quaternion.
 
void conjugate ()
 Définit ce Quaternion à son conjugué
 
QuaternionT< T > getConjugate () const
 Récupère le conjugué de ce Quaternion.
 
double getMagnitude () const
 Récupère la magnitude de ce Quaternion.
 
AngleT< T > getPitch () const
 
AngleT< T > getYaw () const
 
AngleT< T > getRoll () const
 
QuaternionT< T > mix (QuaternionT< T > const &target, double factor) const
 Interpolation sphérique linéaire de deux quaternions.
 
QuaternionT< T > mix (QuaternionT< T > const &target, float factor) const
 Interpolation sphérique linéaire de deux quaternions.
 
QuaternionT< T > lerp (QuaternionT< T > const &target, double factor) const
 Interpolation linéaire de deux quaternions.
 
QuaternionT< T > lerp (QuaternionT< T > const &target, float factor) const
 Interpolation linéaire de deux quaternions.
 
QuaternionT< T > slerp (QuaternionT< T > const &target, double factor) const
 Interpolation sphérique linéaire de deux quaternions.
 
QuaternionT< T > slerp (QuaternionT< T > const &target, float factor) const
 Interpolation sphérique linéaire de deux quaternions.
 
PointData< T, 4u > * operator-> ()
 
PointData< T, 4u > const * operator-> () const
 
- Fonctions membres publiques hérités de castor::DataHolderT< QuaternionDataT< T > >
 DataHolderT () noexcept=default
 
 DataHolderT (QuaternionDataT< T > d) noexcept
 
QuaternionDataT< T > & getData ()
 
QuaternionDataT< T > const & getData () const
 
void setData (QuaternionDataT< T > data)
 
- Fonctions membres publiques hérités de castor::Coords< T, Count >
void swap (Coords &rhs) noexcept
 Echange les données de c epoint avec celles du point donné
 
uint32_t size () const
 
T const & operator[] (uint32_t index) const
 Récupère la donnée à l'index donné
 
T & operator[] (uint32_t index)
 Récupère la donnée à l'index donné
 
T * ptr ()
 Récupère un pointeur non constant sur les données.
 
T const * constPtr () const
 Récupère un pointeur constant sur les données.
 
iterator begin ()
 Récupère un itérateur sur le premier élément.
 
const_iterator begin () const
 Récupère un itérateur constant sur le premier élément.
 
iterator end ()
 Récupère un itérateur sur le dernier élément.
 
const_iterator end () const
 Récupère un itérateur constant sur le dernier élément.
 
 Coords ()=default
 
 Coords (Point< T, Count > &rhs)
 
 Coords (T *rhs)
 
Coordsoperator= (T *rhs)
 
Coordsoperator= (Point< T, Count > const &rhs)
 
template<typename U , uint32_t UCount>
Coordsoperator+= (Coords< U, UCount > const &rhs)
 
template<typename U , uint32_t UCount>
Coordsoperator-= (Coords< U, UCount > const &rhs)
 
template<typename U , uint32_t UCount>
Coordsoperator*= (Coords< U, UCount > const &rhs)
 
template<typename U , uint32_t UCount>
Coordsoperator/= (Coords< U, UCount > const &rhs)
 
template<typename U , uint32_t UCount>
Coordsoperator+= (Point< U, UCount > const &rhs)
 
template<typename U , uint32_t UCount>
Coordsoperator-= (Point< U, UCount > const &rhs)
 
template<typename U , uint32_t UCount>
Coordsoperator*= (Point< U, UCount > const &rhs)
 
template<typename U , uint32_t UCount>
Coordsoperator/= (Point< U, UCount > const &rhs)
 
template<typename U >
Coordsoperator+= (U const *coords)
 
template<typename U >
Coordsoperator-= (U const *coords)
 
template<typename U >
Coordsoperator*= (U const *coords)
 
template<typename U >
Coordsoperator/= (U const *coords)
 
Coordsoperator+= (T const &coord)
 
Coordsoperator-= (T const &coord)
 
Coordsoperator*= (T const &coord)
 
Coordsoperator/= (T const &coord)
 

Fonctions membres publiques statiques

static QuaternionT< T > fromMatrix (Matrix4x4f const &matrix)
 Met à jour ce Quaternion à partir d'une matrice de rotation.
 
static QuaternionT< T > fromMatrix (Matrix4x4d const &matrix)
 Met à jour ce Quaternion à partir d'une matrice de rotation.
 
static QuaternionT< T > fromMatrix (float const *matrix)
 Met à jour ce Quaternion à partir d'une matrice de rotation.
 
static QuaternionT< T > fromMatrix (double const *matrix)
 Met à jour ce Quaternion à partir d'une matrice de rotation.
 
static QuaternionT< T > fromAxisAngle (Point3f const &vector, Angle const &angle)
 Met à jour ce Quaternion à partir d'un axe et d'un angle.
 
static QuaternionT< T > fromAxisAngle (Point3d const &vector, Angle const &angle)
 Met à jour ce Quaternion à partir d'un axe et d'un angle.
 
static QuaternionT< T > fromAxes (Point3f const &x, Point3f const &y, Point3f const &z)
 Met à jour ce Quaternion à partir de 3 axes.
 
static QuaternionT< T > fromAxes (Point3d const &x, Point3d const &y, Point3d const &z)
 Met à jour ce Quaternion à partir de 3 axes.
 
static QuaternionT< T > fromComponents (float x, float y, float z, float w)
 Met à jour ce Quaternion à partir de 4 composantes.
 
static QuaternionT< T > fromComponents (double x, double y, double z, double w)
 Met à jour ce Quaternion à partir de 4 composantes.
 
static QuaternionT< T > identity ()
 Récupère le Quaternion identité
 
static QuaternionT< T > null ()
 Récupère le Quaternion nul.
 

Membres hérités additionnels

- Types publics hérités de castor::Coords< T, Count >
using iterator = value_type *
 
using const_iterator = value_type const *
 

Description détaillée

template<typename T>
class castor::QuaternionT< T >

Représentation d'un quaternion.

Remarques
Un quaternion peut se voir comme un axe et un angle.
Un quaternion se compose d'un axe et d'un angle

Documentation des constructeurs et destructeur

◆ QuaternionT() [1/7]

template<typename T >
castor::QuaternionT< T >::QuaternionT ( )

Constructeur.

◆ QuaternionT() [2/7]

template<typename T >
castor::QuaternionT< T >::QuaternionT ( QuaternionT< T > const & rhs)

Constructeur par copie.

Paramètres
[in]rhsL'objet Quaternion à copier

◆ QuaternionT() [3/7]

template<typename T >
castor::QuaternionT< T >::QuaternionT ( QuaternionT< T > && rhs)
noexcept

Constructeur par déplacement.

Paramètres
[in]rhsL'objet Quaternion à déplacer

◆ QuaternionT() [4/7]

template<typename T >
castor::QuaternionT< T >::QuaternionT ( double const * values)
explicit

Constructeur.

Paramètres
[in]valuesLes valeurs du Quaternion

◆ QuaternionT() [5/7]

template<typename T >
castor::QuaternionT< T >::QuaternionT ( float const * values)
explicit

Constructeur.

Paramètres
[in]valuesLes valeurs du Quaternion

◆ QuaternionT() [6/7]

template<typename T >
castor::QuaternionT< T >::QuaternionT ( Point4f const & values)
explicit

Constructeur.

Paramètres
[in]valuesLes valeurs du quaternion

◆ QuaternionT() [7/7]

template<typename T >
castor::QuaternionT< T >::QuaternionT ( Point4d const & values)
explicit

Constructeur.

Paramètres
[in]valuesLes valeurs du quaternion

◆ ~QuaternionT()

template<typename T >
castor::QuaternionT< T >::~QuaternionT ( )
defaultnoexcept

Destructeur.

Documentation des fonctions membres

◆ conjugate()

template<typename T >
void castor::QuaternionT< T >::conjugate ( )

Définit ce Quaternion à son conjugué

◆ fromAxes() [1/2]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromAxes ( Point3d const & x,
Point3d const & y,
Point3d const & z )
static

Met à jour ce Quaternion à partir de 3 axes.

Paramètres
[in]x,y,zLes axes

◆ fromAxes() [2/2]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromAxes ( Point3f const & x,
Point3f const & y,
Point3f const & z )
static

Met à jour ce Quaternion à partir de 3 axes.

Paramètres
[in]x,y,zLes axes

◆ fromAxisAngle() [1/2]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromAxisAngle ( Point3d const & vector,
Angle const & angle )
static

Met à jour ce Quaternion à partir d'un axe et d'un angle.

Paramètres
[in]vectorL'axe
[in]angleL'angle

◆ fromAxisAngle() [2/2]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromAxisAngle ( Point3f const & vector,
Angle const & angle )
static

Met à jour ce Quaternion à partir d'un axe et d'un angle.

Paramètres
[in]vectorL'axe
[in]angleL'angle

◆ fromComponents() [1/2]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromComponents ( double x,
double y,
double z,
double w )
static

Met à jour ce Quaternion à partir de 4 composantes.

Paramètres
[in]x,y,z,wLes composantes

◆ fromComponents() [2/2]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromComponents ( float x,
float y,
float z,
float w )
static

Met à jour ce Quaternion à partir de 4 composantes.

Paramètres
[in]x,y,z,wLes composantes

◆ fromMatrix() [1/4]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromMatrix ( double const * matrix)
static

Met à jour ce Quaternion à partir d'une matrice de rotation.

Paramètres
[in]matrixLa matrice de rotation

◆ fromMatrix() [2/4]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromMatrix ( float const * matrix)
static

Met à jour ce Quaternion à partir d'une matrice de rotation.

Paramètres
[in]matrixLa matrice de rotation

◆ fromMatrix() [3/4]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromMatrix ( Matrix4x4d const & matrix)
static

Met à jour ce Quaternion à partir d'une matrice de rotation.

Paramètres
[in]matrixLa matrice de rotation

◆ fromMatrix() [4/4]

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::fromMatrix ( Matrix4x4f const & matrix)
static

Met à jour ce Quaternion à partir d'une matrice de rotation.

Paramètres
[in]matrixLa matrice de rotation

◆ getConjugate()

template<typename T >
QuaternionT< T > castor::QuaternionT< T >::getConjugate ( ) const

Récupère le conjugué de ce Quaternion.

Renvoie
Le conjugué

◆ getMagnitude()

template<typename T >
double castor::QuaternionT< T >::getMagnitude ( ) const

Récupère la magnitude de ce Quaternion.

Renvoie
La magnitude

◆ getPitch()

template<typename T >
AngleT< T > castor::QuaternionT< T >::getPitch ( ) const
Renvoie
L'angle de pitch.

◆ getRoll()

template<typename T >
AngleT< T > castor::QuaternionT< T >::getRoll ( ) const
Renvoie
L'angle de roll.

◆ getYaw()

template<typename T >
AngleT< T > castor::QuaternionT< T >::getYaw ( ) const
Renvoie
L'angle de yaw.

◆ identity()

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::identity ( )
static

Récupère le Quaternion identité

◆ lerp() [1/2]

template<typename T >
QuaternionT< T > castor::QuaternionT< T >::lerp ( QuaternionT< T > const & target,
double factor ) const

Interpolation linéaire de deux quaternions.

Paramètres
[in]targetLe quaternion cible
[in]factorLe facteur d'interpolation. L'interpolation est définie à l'intérieur de l'intervalle [0, 1].
Renvoie
Le résultat de l'interpolation.

◆ lerp() [2/2]

template<typename T >
QuaternionT< T > castor::QuaternionT< T >::lerp ( QuaternionT< T > const & target,
float factor ) const

Interpolation linéaire de deux quaternions.

Paramètres
[in]targetLe quaternion cible
[in]factorLe facteur d'interpolation. L'interpolation est définie à l'intérieur de l'intervalle [0, 1].
Renvoie
Le résultat de l'interpolation.

◆ mix() [1/2]

template<typename T >
QuaternionT< T > castor::QuaternionT< T >::mix ( QuaternionT< T > const & target,
double factor ) const

Interpolation sphérique linéaire de deux quaternions.

Remarques
L'interpolation est orientée et le rotation est effectuée à vitesse constante.
Paramètres
[in]targetLe quaternion cible
[in]factorLe facteur d'interpolation. L'interpolation est définie hors de l'intervalle [0, 1].
Renvoie
Le résultat de l'interpolation.

◆ mix() [2/2]

template<typename T >
QuaternionT< T > castor::QuaternionT< T >::mix ( QuaternionT< T > const & target,
float factor ) const

Interpolation sphérique linéaire de deux quaternions.

Remarques
L'interpolation est orientée et le rotation est effectuée à vitesse constante.
Paramètres
[in]targetLe quaternion cible
[in]factorLe facteur d'interpolation. L'interpolation est définie hors de l'intervalle [0, 1].
Renvoie
Le résultat de l'interpolation.

◆ null()

template<typename T >
static QuaternionT< T > castor::QuaternionT< T >::null ( )
static

Récupère le Quaternion nul.

◆ operator*=() [1/3]

template<typename T >
QuaternionT< T > & castor::QuaternionT< T >::operator*= ( double rhs)

Opérateur d'affectation par multiplication.

Paramètres
[in]rhsLe scalaire à multiplier
Renvoie
Une référence sur cet objet Quaternion

◆ operator*=() [2/3]

template<typename T >
QuaternionT< T > & castor::QuaternionT< T >::operator*= ( float rhs)

Opérateur d'affectation par multiplication.

Paramètres
[in]rhsLe scalaire à multiplier
Renvoie
Une référence sur cet objet Quaternion

◆ operator*=() [3/3]

template<typename T >
QuaternionT< T > & castor::QuaternionT< T >::operator*= ( QuaternionT< T > const & rhs)

Opérateur d'affectation par multiplication.

Paramètres
[in]rhsL'objet Quaternion à multiplier
Renvoie
Une référence sur cet objet Quaternion

◆ operator+=()

template<typename T >
QuaternionT< T > & castor::QuaternionT< T >::operator+= ( QuaternionT< T > const & rhs)

Opérateur d'affectation par addition.

Paramètres
[in]rhsL'objet Quaternion à ajouter
Renvoie
Une référence sur cet objet Quaternion

◆ operator-=()

template<typename T >
QuaternionT< T > & castor::QuaternionT< T >::operator-= ( QuaternionT< T > const & rhs)

Opérateur d'affectation par soustraction.

Paramètres
[in]rhsL'objet Quaternion à soustraire
Renvoie
Une référence sur cet objet Quaternion

◆ operator->() [1/2]

template<typename T >
PointData< T, 4u > * castor::QuaternionT< T >::operator-> ( )
inline

Références castor::DataHolderT< QuaternionDataT< T > >::getData().

Voici le graphe d'appel pour cette fonction :

◆ operator->() [2/2]

template<typename T >
PointData< T, 4u > const * castor::QuaternionT< T >::operator-> ( ) const
inline

Références castor::DataHolderT< QuaternionDataT< T > >::getData().

Voici le graphe d'appel pour cette fonction :

◆ operator=() [1/2]

template<typename T >
QuaternionT< T > & castor::QuaternionT< T >::operator= ( QuaternionT< T > && rhs)
noexcept

Opérateur d'affectation par déplacement.

Paramètres
[in]rhsL'objet Quaternion à déplacer
Renvoie
Une référence sur cet objet Quaternion

◆ operator=() [2/2]

template<typename T >
QuaternionT< T > & castor::QuaternionT< T >::operator= ( QuaternionT< T > const & rhs)

Opérateur d'affectation par copie.

Paramètres
[in]rhsL'objet Quaternion à copier
Renvoie
Une référence sur cet objet Quaternion

◆ slerp() [1/2]

template<typename T >
QuaternionT< T > castor::QuaternionT< T >::slerp ( QuaternionT< T > const & target,
double factor ) const

Interpolation sphérique linéaire de deux quaternions.

Remarques
L'interpolation prend toujours le chemin le plus court, et la rotation est effectuée à vitesse constante.
Paramètres
[in]targetLe quaternion cible
[in]factorLe facteur d'interpolation. L'interpolation est définie hors de l'intervalle [0, 1].
Renvoie
Le résultat de l'interpolation.

Référencé par castor3d::InterpolatorT< castor::Quaternion, InterpolatorType::eLinear >::interpolate().

Voici le graphe des appelants de cette fonction :

◆ slerp() [2/2]

template<typename T >
QuaternionT< T > castor::QuaternionT< T >::slerp ( QuaternionT< T > const & target,
float factor ) const

Interpolation sphérique linéaire de deux quaternions.

Remarques
L'interpolation prend toujours le chemin le plus court, et la rotation est effectuée à vitesse constante.
Paramètres
[in]targetLe quaternion cible
[in]factorLe facteur d'interpolation. L'interpolation est définie hors de l'intervalle [0, 1].
Renvoie
Le résultat de l'interpolation.

◆ toAxes() [1/2]

template<typename T >
void castor::QuaternionT< T >::toAxes ( Point3d & x,
Point3d & y,
Point3d & z ) const

Calcule 3 axes à partir de ce quaternion.

Paramètres
[out]x,y,zLes axes

◆ toAxes() [2/2]

template<typename T >
void castor::QuaternionT< T >::toAxes ( Point3f & x,
Point3f & y,
Point3f & z ) const

Calcule 3 axes à partir de ce quaternion.

Paramètres
[out]x,y,zLes axes

◆ toAxisAngle() [1/2]

template<typename T >
void castor::QuaternionT< T >::toAxisAngle ( Point3d & vector,
Angle & angle ) const

Calcule l'axe et l'angle de ce Quaternion.

Paramètres
[out]vectorReçoit l'axe
[out]angleReçoit l'angle

◆ toAxisAngle() [2/2]

template<typename T >
void castor::QuaternionT< T >::toAxisAngle ( Point3f & vector,
Angle & angle ) const

Calcule l'axe et l'angle de ce Quaternion.

Paramètres
[out]vectorReçoit l'axe
[out]angleReçoit l'angle

Référencé par castor3d::SceneNode::getAxisAngle().

Voici le graphe des appelants de cette fonction :

◆ toMatrix() [1/4]

template<typename T >
void castor::QuaternionT< T >::toMatrix ( double * matrix) const

Remplit une matrice de rotation à partir de ce Quaternion.

Paramètres
[out]matrixLa matrice à remplir

◆ toMatrix() [2/4]

template<typename T >
void castor::QuaternionT< T >::toMatrix ( float * matrix) const

Remplit une matrice de rotation à partir de ce Quaternion.

Paramètres
[out]matrixLa matrice à remplir

◆ toMatrix() [3/4]

template<typename T >
void castor::QuaternionT< T >::toMatrix ( Matrix4x4d & matrix) const

Remplit une matrice de rotation à partir de ce Quaternion.

Paramètres
[out]matrixLa matrice à remplir

◆ toMatrix() [4/4]

template<typename T >
void castor::QuaternionT< T >::toMatrix ( Matrix4x4f & matrix) const

Remplit une matrice de rotation à partir de ce Quaternion.

Paramètres
[out]matrixLa matrice à remplir

◆ transform() [1/2]

template<typename T >
template<Vector3fT PtT>
PtT & castor::QuaternionT< T >::transform ( PtT const & vector,
PtT & result ) const

Transforme un vecteur et donne le résultat.

Paramètres
[in]vectorLe vecteur à transformer
[out]resultReçoit le résultat
Renvoie
Une référence sur result

◆ transform() [2/2]

template<typename T >
template<Vector3dT PtT>
PtT & castor::QuaternionT< T >::transform ( PtT const & vector,
PtT & result ) const

Transforme un vecteur et donne le résultat.

Paramètres
[in]vectorLe vecteur à transformer
[out]resultReçoit le résultat
Renvoie
Une référence sur result

La documentation de cette classe a été générée à partir des fichiers suivants :