ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Mat3x3d.cpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/Mat3x3d.cpp (file contents):
Revision 1451 by tim, Tue Jun 29 22:52:24 2004 UTC vs.
Revision 1452 by tim, Mon Aug 23 15:11:36 2004 UTC

# Line 24 | Line 24 | Mat3x3d::Mat3x3d(const Quaternion& q){
24    double q2Sqr;
25    double q3Sqr;
26  
27 <  q0Sqr = q.quat[0] * q.quat[0];
28 <  q1Sqr = q.quat[1] * q.quat[1];
29 <  q2Sqr = q.quat[2] * q.quat[2];
30 <  q3Sqr = q.quat[3] * q.quat[3];
27 >  q0Sqr = q.x * q.x;
28 >  q1Sqr = q.y * q.y;
29 >  q2Sqr = q.z * q.z;
30 >  q3Sqr = q.w * q.w;
31    
32    
33    element[0][0]= q0Sqr + q1Sqr - q2Sqr - q3Sqr;
34 <  element[0][1] = 2.0 * ( q.quat[1] * q.quat[2] + q.quat[0] * q.quat[3] );
35 <  element[0][2] = 2.0 * ( q.quat[1] * q.quat[3] - q.quat[0] * q.quat[2] );
34 >  element[0][1] = 2.0 * ( q.y * q.z + q.x * q.w );
35 >  element[0][2] = 2.0 * ( q.y * q.w - q.x * q.z );
36    
37 <  element[1][0] = 2.0 * ( q.quat[1] * q.quat[2] - q.quat[0] * q.quat[3] );
37 >  element[1][0] = 2.0 * ( q.y * q.z - q.x * q.w );
38    element[1][1] = q0Sqr - q1Sqr + q2Sqr - q3Sqr;
39 <  element[1][2] = 2.0 * ( q.quat[2] * q.quat[3] + q.quat[0] * q.quat[1] );
39 >  element[1][2] = 2.0 * ( q.z * q.w + q.x * q.y );
40    
41 <  element[2][0] = 2.0 * ( q.quat[1] * q.quat[3] + q.quat[0] * q.quat[2] );
42 <  element[2][1] = 2.0 * ( q.quat[2] * q.quat[3] - q.quat[0] * q.quat[1] );
41 >  element[2][0] = 2.0 * ( q.y * q.w + q.x * q.z );
42 >  element[2][1] = 2.0 * ( q.z * q.w - q.x * q.y );
43    element[2][2] = q0Sqr - q1Sqr -q2Sqr +q3Sqr;
44    
45   }
# Line 142 | Line 142 | Quaternion Mat3x3d::toQuaternion(){
142    if( t > 0.0 ){
143      
144      s = 0.5 / sqrt( t );
145 <    q.quat[0] = 0.25 / s;
146 <    q.quat[1] = (element[1][2] - element[2][1]) * s;
147 <    q.quat[2] = (element[2][0] - element[0][2]) * s;
148 <    q.quat[3] = (element[0][1] - element[1][0]) * s;
145 >    q.x = 0.25 / s;
146 >    q.y = (element[1][2] - element[2][1]) * s;
147 >    q.z = (element[2][0] - element[0][2]) * s;
148 >    q.w = (element[0][1] - element[1][0]) * s;
149    }
150    else{
151      
# Line 155 | Line 155 | Quaternion Mat3x3d::toQuaternion(){
155      
156      if( ad1 >= ad2 && ad1 >= ad3 ){    
157          s = 2.0 * sqrt( 1.0 + element[0][0] - element[1][1] - element[2][2] );
158 <        q.quat[0] = (element[1][2] + element[2][1]) / s;
159 <        q.quat[1] = 0.5 / s;
160 <        q.quat[2] = (element[0][1] + element[1][0]) / s;
161 <        q.quat[3] = (element[0][2] + element[2][0]) / s;
158 >        q.x = (element[1][2] + element[2][1]) / s;
159 >        q.y = 0.5 / s;
160 >        q.z = (element[0][1] + element[1][0]) / s;
161 >        q.w = (element[0][2] + element[2][0]) / s;
162      }
163      else if( ad2 >= ad1 && ad2 >= ad3 ){                
164        s = sqrt( 1.0 + element[1][1] - element[0][0] - element[2][2] ) * 2.0;
165 <      q.quat[0] = (element[0][2] + element[2][0]) / s;
166 <      q.quat[1] = (element[0][1] + element[1][0]) / s;
167 <      q.quat[2] = 0.5 / s;
168 <      q.quat[3] = (element[1][2] + element[2][1]) / s;
165 >      q.x = (element[0][2] + element[2][0]) / s;
166 >      q.y = (element[0][1] + element[1][0]) / s;
167 >      q.z = 0.5 / s;
168 >      q.w = (element[1][2] + element[2][1]) / s;
169      }
170      else{
171        s = sqrt( 1.0 + element[2][2] - element[0][0] - element[1][1] ) * 2.0;
172 <      q.quat[0] = (element[0][1] + element[1][0]) / s;
173 <      q.quat[1] = (element[0][2] + element[2][0]) / s;
174 <      q.quat[2] = (element[1][2] + element[2][1]) / s;
175 <      q.quat[3] = 0.5 / s;
172 >      q.x = (element[0][1] + element[1][0]) / s;
173 >      q.y = (element[0][2] + element[2][0]) / s;
174 >      q.z = (element[1][2] + element[2][1]) / s;
175 >      q.w = 0.5 / s;
176      }
177    }  
178    return q;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines