From 49982ac835400c4c8cd0343097c97588f1d7785a Mon Sep 17 00:00:00 2001 From: Don BURNS Date: Sat, 13 Oct 2001 06:23:55 +0000 Subject: [PATCH] Changed some routines to produce right-handed rotations. --- src/osg/Quat.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/osg/Quat.cpp b/src/osg/Quat.cpp index 88e455359..652e16cae 100644 --- a/src/osg/Quat.cpp +++ b/src/osg/Quat.cpp @@ -19,9 +19,10 @@ const float x, const float y, const float z ) { + float _angle = -angle; // Convert to right handed coordinate system float inversenorm = 1.0/sqrt( x*x + y*y + z*z ); - float coshalfangle = cos( 0.5*angle ); - float sinhalfangle = sin( 0.5*angle ); + float coshalfangle = cos( 0.5*_angle ); + float sinhalfangle = sin( 0.5*_angle ); _fv[0] = x * sinhalfangle * inversenorm; _fv[1] = y * sinhalfangle * inversenorm; @@ -51,6 +52,8 @@ void Quat::makeRot( const Vec3& vec1, const Vec3& vec2 ) // dot product vec1*vec2 float cosangle = vec1*vec2/(length1*length2); + cosangle = - cosangle; // Convert to right-handed coordinate system + if ( fabs(cosangle - 1) < epsilon ) { // cosangle is close to 1, so the vectors are close to being coincident