Logo ROOT  
Reference Guide
TQuaternion Class Reference

Quaternion is a 4-component mathematic object quite convenient when dealing with space rotation (or reference frame transformation).

In short, think of quaternion Q as a 3-vector augmented by a real number. \( Q = Q|_r + Q|_V \)

Quaternion multiplication :

Quaternion multiplication is given by :

\[ Q.Q' = (Q|_r + Q|_V )*( Q'|_r + Q'|_V) = [ Q|_r*Q'|_r - Q|_V*Q'|_V ] + [ Q|_r*Q'|_V + Q'|_r*Q|_V + Q|_V X Q'|_V ] \]

where :

  • \( Q|_r*Q'|_r \) is a real number product of real numbers
  • \( Q|_V*Q'|_V \) is a real number, scalar product of two 3-vectors
  • \( Q|_r*Q'|_V \) is a 3-vector, scaling of a 3-vector by a real number
  • \( Q|_VXQ'|_V \) is a 3-vector, cross product of two 3-vectors

Thus, quaternion product is a generalization of real number product and product of a vector by a real number. Product of two pure vectors gives a quaternion whose real part is the opposite of scalar product and the vector part the cross product.

The conjugate of a quaternion \( Q = Q|r + Q|V \) is \( \bar{Q} = Q|r - Q|V \)

The magnitude of a quaternion \( Q \) is given by \( |Q|^2 = Q.\bar{Q} = \bar{Q}.Q = Q^2|r + |Q|V|^2 \)

Therefore, the inverse of a quaternion is \( Q-1 = \bar{Q} /|Q|^2 \)

"unit" quaternion is a quaternion of magnitude 1 : \( |Q|^2 = 1. \) Unit quaternions are a subset of the quaternions set.

Quaternion and rotations :

A rotation of angle \( f \) around a given axis, is represented by a unit quaternion Q :

  • The axis of the rotation is given by the vector part of Q.
  • The ratio between the magnitude of the vector part and the real part of Q equals tan(\frac{f}{2}).

In other words : \( Q = Q|_r + Q|_V = cos(\frac{f}{2}) + sin(\frac{f}{2}) \). (where u is a unit vector // to the rotation axis, \( cos(\frac{f}{2}) \) is the real part, \( sin(\frac{f}{2}) \) .u is the vector part) Note : The quaternion of identity is \( Q_I = cos(0) + sin(0)*(AnyVector) = 1\) .

The composition of two rotations is described by the product of the two corresponding quaternions. As for 3-space rotations, quaternion multiplication is not commutative !

\( Q = Q_1.Q_2 \) represents the composition of the successive rotation R1 and R2 expressed in the current frame (the axis of rotation hold by \( Q_2 \) is expressed in the frame as it is after R1 rotation). \( Q = Q_2.Q_1 \) represents the composition of the successive rotation R1 and R2 expressed in the initial reference frame.

The inverse of a rotation is a rotation about the same axis but of opposite angle, thus if Q is a unit quaternion, \( Q = cos(\frac{f}{2}) + sin(\frac{f}{2}).u = Q|_r + Q|_V\) , then : \( Q^{-1} =cos(-\frac{f}{2}) + sin(-\frac{f}{2}).u = cos(\frac{f}{2}) - sin(\frac{f}{2}).u = Q|_r -Q|_V \) is its inverse quaternion.

One verifies that : \( Q.Q^{-1} = Q^{-1}.Q = Q|_r*Q|_r + Q|_V*Q|_V + Q|_r*Q|_V -Q|_r*Q|_V + Q|_VXQ|_V = Q\leq|_r + Q\leq|_V = 1 \)

The rotation of a vector V by the rotation described by a unit quaternion Q is obtained by the following operation : \( V' = Q*V*Q^{-1} \), considering V as a quaternion whose real part is null.

Numeric computation considerations :

Numerically, the quaternion multiplication involves 12 additions and 16 multiplications. It is therefore faster than 3x3 matrixes multiplication involving 18 additions and 27 multiplications.

On the contrary, rotation of a vector by the above formula ( \( Q*V*Q^{-1} \) ) involves 18 additions and 24 multiplications, whereas multiplication of a 3-vector by a 3x3 matrix involves only 6 additions and 9 multiplications.

When dealing with numerous composition of space rotation, it is therefore faster to use quaternion product. On the other hand if a huge set of vectors must be rotated by a given quaternion, it is more optimized to convert the quaternion into a rotation matrix once, and then use that later to rotate the set of vectors.

More information :

http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation

http://en.wikipedia.org/wiki/Quaternion

This Class represents all quaternions (unit or non-unit) It possesses a Normalize() method to make a given quaternion unit The Rotate(TVector3&) and Rotation(TVector3&) methods can be used even for a non-unit quaternion, in that case, the proper normalization is applied to perform the rotation.

A TRotation constructor exists than takes a quaternion for parameter (even non-unit), in that cas the proper normalisation is applied.

Definition at line 11 of file TQuaternion.h.

Public Member Functions

 TQuaternion (const Double_t *)
 
 TQuaternion (const Float_t *)
 
 TQuaternion (const TQuaternion &)
 
 TQuaternion (const TVector3 &vector, Double_t real=0)
 
 TQuaternion (Double_t real=0, Double_t X=0, Double_t Y=0, Double_t Z=0)
 
virtual ~TQuaternion ()
 
TQuaternion Conjugate () const
 
TQuaternionDivideLeft (const TQuaternion &quaternion)
 left division More...
 
TQuaternionDivideLeft (const TVector3 &vector)
 left division More...
 
Double_t GetQAngle () const
 Get angle of quaternion (rad) N.B : this angle is half of the corresponding rotation angle. More...
 
void GetRXYZ (Double_t *carray) const
 
void GetRXYZ (Float_t *carray) const
 
TQuaternion Invert () const
 invert More...
 
TQuaternion LeftProduct (const TQuaternion &quaternion) const
 left product More...
 
TQuaternion LeftProduct (const TVector3 &vector) const
 left product More...
 
TQuaternion LeftQuotient (const TQuaternion &quaternion) const
 left quotient More...
 
TQuaternion LeftQuotient (const TVector3 &vector) const
 left quotient More...
 
TQuaternionMultiplyLeft (const TQuaternion &quaternion)
 left multiplication More...
 
TQuaternionMultiplyLeft (const TVector3 &vector)
 left multiplication More...
 
Double_t Norm () const
 
Double_t Norm2 () const
 
TQuaternionNormalize ()
 
Bool_t operator!= (const TQuaternion &) const
 
Bool_t operator!= (const TVector3 &) const
 
Bool_t operator!= (Double_t r) const
 
Double_toperator() (int)
 dereferencing operator More...
 
Double_t operator() (int) const
 dereferencing operator const More...
 
TQuaternion operator* (const TQuaternion &quaternion) const
 right product More...
 
TQuaternion operator* (const TVector3 &vector) const
 right product More...
 
TQuaternion operator* (Double_t real) const
 product of quaternion with a real More...
 
TQuaternionoperator*= (const TQuaternion &quaternion)
 right multiplication More...
 
TQuaternionoperator*= (const TVector3 &vector)
 right multiplication More...
 
TQuaternionoperator*= (Double_t real)
 
TQuaternion operator+ (const TQuaternion &quaternion) const
 
TQuaternion operator+ (const TVector3 &vector) const
 sum of quaternion with a real More...
 
TQuaternion operator+ (Double_t real) const
 sum of quaternion with a real More...
 
TQuaternionoperator+= (const TQuaternion &quaternion)
 
TQuaternionoperator+= (const TVector3 &vector)
 
TQuaternionoperator+= (Double_t real)
 
TQuaternion operator- () const
 
TQuaternion operator- (const TQuaternion &quaternion) const
 
TQuaternion operator- (const TVector3 &vector) const
 substraction of real to quaternion More...
 
TQuaternion operator- (Double_t real) const
 substraction of real to quaternion More...
 
TQuaternionoperator-= (const TQuaternion &quaternion)
 
TQuaternionoperator-= (const TVector3 &vector)
 
TQuaternionoperator-= (Double_t real)
 
TQuaternion operator/ (const TQuaternion &quaternion) const
 right quotient More...
 
TQuaternion operator/ (const TVector3 &vector) const
 right quotient More...
 
TQuaternion operator/ (Double_t real) const
 division by a real More...
 
TQuaternionoperator/= (const TQuaternion &quaternion)
 right division More...
 
TQuaternionoperator/= (const TVector3 &vector)
 right division More...
 
TQuaternionoperator/= (Double_t real)
 
TQuaternionoperator= (const TQuaternion &)
 
TQuaternionoperator= (const TVector3 &)
 
TQuaternionoperator= (Double_t r)
 
Bool_t operator== (const TQuaternion &) const
 
Bool_t operator== (const TVector3 &) const
 
Bool_t operator== (Double_t r) const
 
Double_toperator[] (int)
 
Double_t operator[] (int) const
 
void Print (Option_t *option="") const
 Print Quaternion parameters. More...
 
Double_t QMag () const
 
Double_t QMag2 () const
 
void Rotate (TVector3 &vect) const
 rotate vect by current quaternion More...
 
TVector3 Rotation (const TVector3 &vect) const
 rotation of vect by current quaternion More...
 
TQuaternionSetAxisQAngle (TVector3 &v, Double_t QAngle)
 set quaternion from vector and angle (rad) quaternion is set as unitary N.B : this angle is half of the corresponding rotation angle More...
 
TQuaternionSetQAngle (Double_t angle)
 Set angle of quaternion (rad) - keep quaternion norm N.B : this angle is half of the corresponding rotation angle. More...
 
TQuaternionSetRV (Double_t r, TVector3 &vect)
 
TQuaternionSetRXYZ (Double_t r, Double_t x, Double_t y, Double_t z)
 
- Public Member Functions inherited from TObject
 TObject ()
 TObject constructor. More...
 
 TObject (const TObject &object)
 TObject copy ctor. More...
 
virtual ~TObject ()
 TObject destructor. More...
 
void AbstractMethod (const char *method) const
 Use this method to implement an "abstract" method that you don't want to leave purely abstract. More...
 
virtual void AppendPad (Option_t *option="")
 Append graphics object to current pad. More...
 
virtual void Browse (TBrowser *b)
 Browse object. May be overridden for another default action. More...
 
ULong_t CheckedHash ()
 Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object. More...
 
virtual const char * ClassName () const
 Returns name of class to which the object belongs. More...
 
virtual void Clear (Option_t *="")
 
virtual TObjectClone (const char *newname="") const
 Make a clone of an object using the Streamer facility. More...
 
virtual Int_t Compare (const TObject *obj) const
 Compare abstract method. More...
 
virtual void Copy (TObject &object) const
 Copy this to obj. More...
 
virtual void Delete (Option_t *option="")
 Delete this object. More...
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object. More...
 
virtual void Draw (Option_t *option="")
 Default Draw method for all objects. More...
 
virtual void DrawClass () const
 Draw class inheritance tree of the class to which this object belongs. More...
 
virtual TObjectDrawClone (Option_t *option="") const
 Draw a clone of this object in the current selected pad for instance with: gROOT->SetSelectedPad(gPad). More...
 
virtual void Dump () const
 Dump contents of object on stdout. More...
 
virtual void Error (const char *method, const char *msgfmt,...) const
 Issue error message. More...
 
virtual void Execute (const char *method, const char *params, Int_t *error=0)
 Execute method on this object with the given parameter string, e.g. More...
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=0)
 Execute method on this object with parameters stored in the TObjArray. More...
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute action corresponding to an event at (px,py). More...
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 Issue fatal error message. More...
 
virtual TObjectFindObject (const char *name) const
 Must be redefined in derived classes. More...
 
virtual TObjectFindObject (const TObject *obj) const
 Must be redefined in derived classes. More...
 
virtual Option_tGetDrawOption () const
 Get option used by the graphics system to draw this object. More...
 
virtual const char * GetIconName () const
 Returns mime type name of object. More...
 
virtual const char * GetName () const
 Returns name of object. More...
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Returns string containing info about the object at position (px,py). More...
 
virtual Option_tGetOption () const
 
virtual const char * GetTitle () const
 Returns title of object. More...
 
virtual UInt_t GetUniqueID () const
 Return the unique object id. More...
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out. More...
 
virtual ULong_t Hash () const
 Return hash value for this object. More...
 
Bool_t HasInconsistentHash () const
 Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e. More...
 
virtual void Info (const char *method, const char *msgfmt,...) const
 Issue info message. More...
 
virtual Bool_t InheritsFrom (const char *classname) const
 Returns kTRUE if object inherits from class "classname". More...
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 Returns kTRUE if object inherits from TClass cl. More...
 
virtual void Inspect () const
 Dump contents of this object in a graphics canvas. More...
 
void InvertBit (UInt_t f)
 
virtual Bool_t IsEqual (const TObject *obj) const
 Default equal comparison (objects are equal if they have the same address in memory). More...
 
virtual Bool_t IsFolder () const
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects). More...
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
virtual Bool_t IsSortable () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
virtual void ls (Option_t *option="") const
 The ls function lists the contents of a class on stdout. More...
 
void MayNotUse (const char *method) const
 Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary). More...
 
virtual Bool_t Notify ()
 This method must be overridden to handle object notification. More...
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 Use this method to declare a method obsolete. More...
 
void operator delete (void *ptr)
 Operator delete. More...
 
void operator delete[] (void *ptr)
 Operator delete []. More...
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator. More...
 
virtual void Paint (Option_t *option="")
 This method must be overridden if a class wants to paint itself. More...
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list. More...
 
virtual void Print (Option_t *option="") const
 This method must be overridden when a class wants to print itself. More...
 
virtual Int_t Read (const char *name)
 Read contents of object with specified name from the current directory. More...
 
virtual void RecursiveRemove (TObject *obj)
 Recursively remove this object from a list. More...
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save this object in the file specified by filename. More...
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out". More...
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 Set or unset the user status bits as specified in f. More...
 
virtual void SetDrawOption (Option_t *option="")
 Set drawing option for object. More...
 
virtual void SetUniqueID (UInt_t uid)
 Set the unique object id. More...
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 Issue system error message. More...
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked. More...
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 Issue warning message. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory. More...
 

Public Attributes

Double_t fRealPart
 
TVector3 fVectorPart
 

Additional Inherited Members

- Public Types inherited from TObject
enum  {
  kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
  kBitMask = 0x00ffffff
}
 
enum  { kSingleKey = BIT(0) , kOverwrite = BIT(1) , kWriteDelete = BIT(2) }
 
enum  EDeprecatedStatusBits { kObjInCanvas = BIT(3) }
 
enum  EStatusBits {
  kCanDelete = BIT(0) , kMustCleanup = BIT(3) , kIsReferenced = BIT(4) , kHasUUID = BIT(5) ,
  kCannotPick = BIT(6) , kNoContextMenu = BIT(8) , kInvalidObject = BIT(13)
}
 
- Static Public Member Functions inherited from TObject
static Long_t GetDtorOnly ()
 Return destructor only flag. More...
 
static Bool_t GetObjectStat ()
 Get status of object stat flag. More...
 
static void SetDtorOnly (void *obj)
 Set destructor only flag. More...
 
static void SetObjectStat (Bool_t stat)
 Turn on/off tracking of objects in the TObjectTable. More...
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 Interface to ErrorHandler (protected). More...
 
void MakeZombie ()
 

#include <TQuaternion.h>

Inheritance diagram for TQuaternion:
[legend]

Constructor & Destructor Documentation

◆ TQuaternion() [1/5]

TQuaternion::TQuaternion ( Double_t  real = 0,
Double_t  X = 0,
Double_t  Y = 0,
Double_t  Z = 0 
)

Definition at line 113 of file TQuaternion.cxx.

◆ TQuaternion() [2/5]

TQuaternion::TQuaternion ( const TVector3 vector,
Double_t  real = 0 
)

Definition at line 104 of file TQuaternion.cxx.

◆ TQuaternion() [3/5]

TQuaternion::TQuaternion ( const Double_t x0)

Definition at line 107 of file TQuaternion.cxx.

◆ TQuaternion() [4/5]

TQuaternion::TQuaternion ( const Float_t x0)

Definition at line 110 of file TQuaternion.cxx.

◆ TQuaternion() [5/5]

TQuaternion::TQuaternion ( const TQuaternion q)

Definition at line 101 of file TQuaternion.cxx.

◆ ~TQuaternion()

TQuaternion::~TQuaternion ( )
virtual

Definition at line 116 of file TQuaternion.cxx.

Member Function Documentation

◆ Conjugate()

TQuaternion TQuaternion::Conjugate ( ) const
inline

Definition at line 283 of file TQuaternion.h.

◆ DivideLeft() [1/2]

TQuaternion & TQuaternion::DivideLeft ( const TQuaternion quaternion)

left division

Definition at line 412 of file TQuaternion.cxx.

◆ DivideLeft() [2/2]

TQuaternion & TQuaternion::DivideLeft ( const TVector3 vector)

left division

Definition at line 288 of file TQuaternion.cxx.

◆ GetQAngle()

Double_t TQuaternion::GetQAngle ( ) const

Get angle of quaternion (rad) N.B : this angle is half of the corresponding rotation angle.

Definition at line 155 of file TQuaternion.cxx.

◆ GetRXYZ() [1/2]

void TQuaternion::GetRXYZ ( Double_t carray) const
inline

Definition at line 131 of file TQuaternion.h.

◆ GetRXYZ() [2/2]

void TQuaternion::GetRXYZ ( Float_t carray) const
inline

Definition at line 136 of file TQuaternion.h.

◆ Invert()

TQuaternion TQuaternion::Invert ( ) const

invert

Definition at line 479 of file TQuaternion.cxx.

◆ LeftProduct() [1/2]

TQuaternion TQuaternion::LeftProduct ( const TQuaternion quaternion) const

left product

Definition at line 394 of file TQuaternion.cxx.

◆ LeftProduct() [2/2]

TQuaternion TQuaternion::LeftProduct ( const TVector3 vector) const

left product

Definition at line 274 of file TQuaternion.cxx.

◆ LeftQuotient() [1/2]

TQuaternion TQuaternion::LeftQuotient ( const TQuaternion quaternion) const

left quotient

Definition at line 443 of file TQuaternion.cxx.

◆ LeftQuotient() [2/2]

TQuaternion TQuaternion::LeftQuotient ( const TVector3 vector) const

left quotient

Definition at line 318 of file TQuaternion.cxx.

◆ MultiplyLeft() [1/2]

TQuaternion & TQuaternion::MultiplyLeft ( const TQuaternion quaternion)

left multiplication

Definition at line 378 of file TQuaternion.cxx.

◆ MultiplyLeft() [2/2]

TQuaternion & TQuaternion::MultiplyLeft ( const TVector3 vector)

left multiplication

Definition at line 250 of file TQuaternion.cxx.

◆ Norm()

Double_t TQuaternion::Norm ( ) const
inline

Definition at line 265 of file TQuaternion.h.

◆ Norm2()

Double_t TQuaternion::Norm2 ( ) const
inline

Definition at line 269 of file TQuaternion.h.

◆ Normalize()

TQuaternion & TQuaternion::Normalize ( )
inline

Definition at line 273 of file TQuaternion.h.

◆ operator!=() [1/3]

Bool_t TQuaternion::operator!= ( const TQuaternion Q) const
inline

Definition at line 230 of file TQuaternion.h.

◆ operator!=() [2/3]

Bool_t TQuaternion::operator!= ( const TVector3 V) const
inline

Definition at line 199 of file TQuaternion.h.

◆ operator!=() [3/3]

Bool_t TQuaternion::operator!= ( Double_t  r) const
inline

Definition at line 150 of file TQuaternion.h.

◆ operator()() [1/2]

Double_t & TQuaternion::operator() ( int  i)

dereferencing operator

Definition at line 138 of file TQuaternion.cxx.

◆ operator()() [2/2]

Double_t TQuaternion::operator() ( int  i) const

dereferencing operator const

Definition at line 121 of file TQuaternion.cxx.

◆ operator*() [1/3]

TQuaternion TQuaternion::operator* ( const TQuaternion quaternion) const

right product

Definition at line 403 of file TQuaternion.cxx.

◆ operator*() [2/3]

TQuaternion TQuaternion::operator* ( const TVector3 vector) const

right product

Definition at line 281 of file TQuaternion.cxx.

◆ operator*() [3/3]

TQuaternion TQuaternion::operator* ( Double_t  real) const

product of quaternion with a real

Definition at line 208 of file TQuaternion.cxx.

◆ operator*=() [1/3]

TQuaternion & TQuaternion::operator*= ( const TQuaternion quaternion)

right multiplication

Definition at line 363 of file TQuaternion.cxx.

◆ operator*=() [2/3]

TQuaternion & TQuaternion::operator*= ( const TVector3 vector)

right multiplication

Definition at line 262 of file TQuaternion.cxx.

◆ operator*=() [3/3]

TQuaternion & TQuaternion::operator*= ( Double_t  real)
inline

Definition at line 170 of file TQuaternion.h.

◆ operator+() [1/3]

TQuaternion TQuaternion::operator+ ( const TQuaternion quaternion) const
inline

Definition at line 254 of file TQuaternion.h.

◆ operator+() [2/3]

TQuaternion TQuaternion::operator+ ( const TVector3 vector) const

sum of quaternion with a real

Definition at line 236 of file TQuaternion.cxx.

◆ operator+() [3/3]

TQuaternion TQuaternion::operator+ ( Double_t  real) const

sum of quaternion with a real

Definition at line 194 of file TQuaternion.cxx.

◆ operator+=() [1/3]

TQuaternion & TQuaternion::operator+= ( const TQuaternion quaternion)
inline

Definition at line 242 of file TQuaternion.h.

◆ operator+=() [2/3]

TQuaternion & TQuaternion::operator+= ( const TVector3 vector)
inline

Definition at line 209 of file TQuaternion.h.

◆ operator+=() [3/3]

TQuaternion & TQuaternion::operator+= ( Double_t  real)
inline

Definition at line 160 of file TQuaternion.h.

◆ operator-() [1/4]

TQuaternion TQuaternion::operator- ( ) const
inline

Definition at line 279 of file TQuaternion.h.

◆ operator-() [2/4]

TQuaternion TQuaternion::operator- ( const TQuaternion quaternion) const
inline

Definition at line 259 of file TQuaternion.h.

◆ operator-() [3/4]

TQuaternion TQuaternion::operator- ( const TVector3 vector) const

substraction of real to quaternion

Definition at line 243 of file TQuaternion.cxx.

◆ operator-() [4/4]

TQuaternion TQuaternion::operator- ( Double_t  real) const

substraction of real to quaternion

Definition at line 201 of file TQuaternion.cxx.

◆ operator-=() [1/3]

TQuaternion & TQuaternion::operator-= ( const TQuaternion quaternion)
inline

Definition at line 248 of file TQuaternion.h.

◆ operator-=() [2/3]

TQuaternion & TQuaternion::operator-= ( const TVector3 vector)
inline

Definition at line 214 of file TQuaternion.h.

◆ operator-=() [3/3]

TQuaternion & TQuaternion::operator-= ( Double_t  real)
inline

Definition at line 165 of file TQuaternion.h.

◆ operator/() [1/3]

TQuaternion TQuaternion::operator/ ( const TQuaternion quaternion) const

right quotient

Definition at line 461 of file TQuaternion.cxx.

◆ operator/() [2/3]

TQuaternion TQuaternion::operator/ ( const TVector3 vector) const

right quotient

Definition at line 334 of file TQuaternion.cxx.

◆ operator/() [3/3]

TQuaternion TQuaternion::operator/ ( Double_t  real) const

division by a real

Definition at line 216 of file TQuaternion.cxx.

◆ operator/=() [1/3]

TQuaternion & TQuaternion::operator/= ( const TQuaternion quaternion)

right division

Definition at line 427 of file TQuaternion.cxx.

◆ operator/=() [2/3]

TQuaternion & TQuaternion::operator/= ( const TVector3 vector)

right division

Definition at line 303 of file TQuaternion.cxx.

◆ operator/=() [3/3]

TQuaternion & TQuaternion::operator/= ( Double_t  real)
inline

Definition at line 176 of file TQuaternion.h.

◆ operator=() [1/3]

TQuaternion & TQuaternion::operator= ( const TQuaternion quat)
inline

Definition at line 234 of file TQuaternion.h.

◆ operator=() [2/3]

TQuaternion & TQuaternion::operator= ( const TVector3 vect)
inline

Definition at line 203 of file TQuaternion.h.

◆ operator=() [3/3]

TQuaternion & TQuaternion::operator= ( Double_t  r)
inline

Definition at line 154 of file TQuaternion.h.

◆ operator==() [1/3]

Bool_t TQuaternion::operator== ( const TQuaternion Q) const
inline

Definition at line 226 of file TQuaternion.h.

◆ operator==() [2/3]

Bool_t TQuaternion::operator== ( const TVector3 V) const
inline

Definition at line 195 of file TQuaternion.h.

◆ operator==() [3/3]

Bool_t TQuaternion::operator== ( Double_t  r) const
inline

Definition at line 146 of file TQuaternion.h.

◆ operator[]() [1/2]

Double_t & TQuaternion::operator[] ( int  i)
inline

Definition at line 141 of file TQuaternion.h.

◆ operator[]() [2/2]

Double_t TQuaternion::operator[] ( int  i) const
inline

Definition at line 142 of file TQuaternion.h.

◆ Print()

void TQuaternion::Print ( Option_t option = "") const
virtual

Print Quaternion parameters.

Reimplemented from TObject.

Definition at line 527 of file TQuaternion.cxx.

◆ QMag()

Double_t TQuaternion::QMag ( ) const
inline

Definition at line 99 of file TQuaternion.h.

◆ QMag2()

Double_t TQuaternion::QMag2 ( ) const
inline

Definition at line 100 of file TQuaternion.h.

◆ Rotate()

void TQuaternion::Rotate ( TVector3 vect) const

rotate vect by current quaternion

Definition at line 493 of file TQuaternion.cxx.

◆ Rotation()

TVector3 TQuaternion::Rotation ( const TVector3 vect) const

rotation of vect by current quaternion

Definition at line 500 of file TQuaternion.cxx.

◆ SetAxisQAngle()

TQuaternion & TQuaternion::SetAxisQAngle ( TVector3 v,
Double_t  QAngle 
)

set quaternion from vector and angle (rad) quaternion is set as unitary N.B : this angle is half of the corresponding rotation angle

Definition at line 179 of file TQuaternion.cxx.

◆ SetQAngle()

TQuaternion & TQuaternion::SetQAngle ( Double_t  angle)

Set angle of quaternion (rad) - keep quaternion norm N.B : this angle is half of the corresponding rotation angle.

Definition at line 165 of file TQuaternion.cxx.

◆ SetRV()

TQuaternion & TQuaternion::SetRV ( Double_t  r,
TVector3 vect 
)
inline

Definition at line 125 of file TQuaternion.h.

◆ SetRXYZ()

TQuaternion & TQuaternion::SetRXYZ ( Double_t  r,
Double_t  x,
Double_t  y,
Double_t  z 
)
inline

Definition at line 119 of file TQuaternion.h.

Member Data Documentation

◆ fRealPart

Double_t TQuaternion::fRealPart

Definition at line 110 of file TQuaternion.h.

◆ fVectorPart

TVector3 TQuaternion::fVectorPart

Definition at line 111 of file TQuaternion.h.

Libraries for TQuaternion:
[legend]

The documentation for this class was generated from the following files: