00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "Math/GenVector/Quaternion.h"
00019
00020 namespace ROOT {
00021
00022 namespace Math {
00023
00024
00025
00026
00027
00028
00029 Quaternion Quaternion::operator * (const RotationX & rx) const {
00030
00031 Quaternion q(rx);
00032 return Quaternion (
00033 U()*q.U() - I()*q.I()
00034 , I()*q.U() + U()*q.I()
00035 , J()*q.U() + K()*q.I()
00036 , K()*q.U() - J()*q.I()
00037 );
00038 }
00039
00040 Quaternion Quaternion::operator * (const RotationY & ry) const {
00041
00042 Quaternion q(ry);
00043 return Quaternion (
00044 U()*q.U() - J()*q.J()
00045 , I()*q.U() - K()*q.J()
00046 , J()*q.U() + U()*q.J()
00047 , K()*q.U() + I()*q.J()
00048 );
00049 }
00050
00051 Quaternion Quaternion::operator * (const RotationZ & rz) const {
00052
00053 Quaternion q(rz);
00054 return Quaternion (
00055 U()*q.U() - K()*q.K()
00056 , I()*q.U() + J()*q.K()
00057 , J()*q.U() - I()*q.K()
00058 , K()*q.U() + U()*q.K()
00059 );
00060 }
00061
00062 Quaternion
00063 operator * ( RotationX const & r, Quaternion const & q ) {
00064 return Quaternion(r) * q;
00065 }
00066
00067 Quaternion
00068 operator * ( RotationY const & r, Quaternion const & q ) {
00069 return Quaternion(r) * q;
00070 }
00071
00072 Quaternion
00073 operator * ( RotationZ const & r, Quaternion const & q ) {
00074 return Quaternion(r) * q;
00075 }
00076
00077
00078 }
00079 }