From: <ole...@us...> - 2013-01-02 22:15:15
|
Revision: 1924 http://opende.svn.sourceforge.net/opende/?rev=1924&view=rev Author: oleh_derevenko Date: 2013-01-02 22:15:09 +0000 (Wed, 02 Jan 2013) Log Message: ----------- Applied patch #183 by Joseph Cooper (complementary matrix calculation fix) Modified Paths: -------------- trunk/CHANGELOG.txt trunk/ode/src/collision_util.h Modified: trunk/CHANGELOG.txt =================================================================== --- trunk/CHANGELOG.txt 2012-12-30 15:55:01 UTC (rev 1923) +++ trunk/CHANGELOG.txt 2013-01-02 22:15:09 UTC (rev 1924) @@ -8,6 +8,10 @@ * keep the format consistent (79 char width, M/D/Y date format). ------------------------------------------------------------------------------ +01/02/13 Oleh_derevenko + * Applied patch #183 by Joseph Cooper (complementary matrix + calculation fix). + 12/28/12 Oleh_Derevenko * A bug with heightfield data assigned to a wrong field in dGeomHeightfieldSetHeightfieldData fixed (bug report #88 by Luc). Modified: trunk/ode/src/collision_util.h =================================================================== --- trunk/ode/src/collision_util.h 2012-12-30 15:55:01 UTC (rev 1923) +++ trunk/ode/src/collision_util.h 2013-01-02 22:15:09 UTC (rev 1924) @@ -199,17 +199,19 @@ return; } - dst[0] = ma[5]*ma[10] - ma[6]*ma[9] / det; - dst[1] = -( ma[1]*ma[10] - ma[9]*ma[2] ) / det; - dst[2] = ma[1]*ma[6] - ma[5]*ma[2] / det; + double detRecip = REAL(1.0) / det; - dst[4] = -( ma[4]*ma[10] - ma[6]*ma[8] ) / det; - dst[5] = ma[0]*ma[10] - ma[8]*ma[2] / det; - dst[6] = -( ma[0]*ma[6] - ma[4]*ma[2] ) / det; + dst[0] = ( ma[5]*ma[10] - ma[6]*ma[9] ) * detRecip; + dst[1] = ( ma[9]*ma[2] - ma[1]*ma[10] ) * detRecip; + dst[2] = ( ma[1]*ma[6] - ma[5]*ma[2] ) * detRecip; - dst[8] = ma[4]*ma[9] - ma[8]*ma[5] / det; - dst[9] = -( ma[0]*ma[9] - ma[8]*ma[1] ) / det; - dst[10] = ma[0]*ma[5] - ma[1]*ma[4] / det; + dst[4] = ( ma[6]*ma[8] - ma[4]*ma[10] ) * detRecip; + dst[5] = ( ma[0]*ma[10] - ma[8]*ma[2] ) * detRecip; + dst[6] = ( ma[4]*ma[2] - ma[0]*ma[6] ) * detRecip; + + dst[8] = ( ma[4]*ma[9] - ma[8]*ma[5] ) * detRecip; + dst[9] = ( ma[8]*ma[1] - ma[0]*ma[9] ) * detRecip; + dst[10] = ( ma[0]*ma[5] - ma[1]*ma[4] ) * detRecip; } inline void dQuatTransform(const dQuaternion& quat,const dVector3& source,dVector3& dest) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |