00001
00002
00003 inline quat& quat::operator=(const quat& q)
00004 {
00005 x =q.x;
00006 y =q.y;
00007 z =q.z;
00008 r =q.r;
00009 return *this;
00010 }
00011
00012
00013
00014
00015
00016
00017
00018 inline quat& quat::operator+=(const quat& q)
00019 {
00020 x +=q.x;
00021 y +=q.y;
00022 z +=q.z;
00023 r +=q.r;
00024 return *this;
00025 }
00026
00027
00028
00029 inline quat& quat::operator-=(const quat& q)
00030 {
00031 x -=q.x;
00032 y -=q.y;
00033 z -=q.z;
00034 r -=q.r;
00035 return *this;
00036 }
00037
00038
00039
00040 inline quat& quat::operator*=(const quat& q)
00041 {
00042 (*this) =(*this)*q;
00043 return *this;
00044 }
00045
00046
00047
00048 inline quat& quat::operator/=(const quat& q)
00049 {
00050 (*this) =(*this)/q;
00051 return *this;
00052 }
00053
00054
00055
00056
00057
00058
00059
00060
00061 inline quat operator+(const quat& q1, const quat& q2)
00062 {
00063 return quat(q1.x+q2.x, q1.y+q2.y, q1.z+q2.z, q1.r+q2.r);
00064 }
00065
00066
00067
00068 inline quat operator-(const quat& q1, const quat& q2)
00069 {
00070 return quat(q1.x-q2.x, q1.y-q2.y, q1.z-q2.z, q1.r-q2.r);
00071 }
00072
00073
00074
00075 inline quat operator*(const quat& q1, const quat& q2)
00076 {
00077 return quat(q1.r*q2.x +q1.x*q2.r +q1.y*q2.z -q1.z*q2.y,
00078 q1.r*q2.y -q1.x*q2.z +q1.y*q2.r +q1.z*q2.x,
00079 q1.r*q2.z +q1.x*q2.y -q2.x*q1.y +q1.z*q2.r,
00080 q1.r*q2.r -q1.x*q2.x -q1.y*q2.y -q1.z*q2.z );
00081 }
00082
00083
00084
00085 inline quat operator/(const quat& q1, const quat& q2)
00086 {
00087 return q1*inv(q2);
00088 }