ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/math/Quaternion.hpp
(Generate patch)

Comparing branches/development/src/math/Quaternion.hpp (file contents):
Revision 1665 by gezelter, Tue Nov 22 20:38:56 2011 UTC vs.
Revision 1686 by gezelter, Sat Mar 10 04:21:44 2012 UTC

# Line 255 | Line 255 | namespace OpenMD{
255         return rotation angle from -PI to PI
256      */
257      inline Real get_rotation_angle() const{
258 <      if( w < (Real)0.0 )
258 >      if( w() < (Real)0.0 )
259          return 2.0*atan2(-sqrt( x()*x() + y()*y() + z()*z() ), -w() );
260        else
261          return 2.0*atan2( sqrt( x()*x() + y()*y() + z()*z() ),  w() );
# Line 313 | Line 313 | namespace OpenMD{
313                                 c.z());
314  
315        this->normalize();    // if "from" or "to" not unit, normalize quat
316 <      w += 1.0f;            // reducing angle to halfangle
317 <      if( w <= 1e-6 ) {     // angle close to PI
316 >      w() += 1.0f;            // reducing angle to halfangle
317 >      if( w() <= 1e-6 ) {     // angle close to PI
318          if( ( from.z()*from.z() ) > ( from.x()*from.x() ) ) {
319 <          this->data_[0] =  w;    
319 >          this->data_[0] =  w();    
320            this->data_[1] =  0.0;       //cross(from , Vector3d(1,0,0))
321            this->data_[2] =  from.z();
322            this->data_[3] = -from.y();
323          } else {
324 <          this->data_[0] =  w;
324 >          this->data_[0] =  w();
325            this->data_[1] =  from.y();  //cross(from, Vector3d(0,0,1))
326            this->data_[2] = -from.x();
327            this->data_[3] =  0.0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines