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.

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...

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

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

Public Types inherited from TObject
enum  {
kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
}

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 Types inherited from TObject
enum  { kOnlyPrepStep = BIT(3) }

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]

## ◆ 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.

## ◆ 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.

## ◆ 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: