Update of /cvsroot/freesolid/freesolid/include/3D
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5632/include/3D
Modified Files:
Quaternion.h
Log Message:
Added depth penetration test app, more stuff on depth penetration computation
Index: Quaternion.h
===================================================================
RCS file: /cvsroot/freesolid/freesolid/include/3D/Quaternion.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** Quaternion.h 21 Apr 2005 23:20:54 -0000 1.3
--- Quaternion.h 8 Jul 2005 23:27:48 -0000 1.4
***************
*** 63,66 ****
--- 63,68 ----
}
+ inline void getMatrix(float *pMatrix) const;
+
Quaternion& operator+=(const Quaternion& q);
Quaternion& operator-=(const Quaternion& q);
***************
*** 210,213 ****
--- 212,242 ----
}
+ inline void Quaternion::getMatrix(float *pMatrix) const
+ {
+ if(!pMatrix) return;
+ pMatrix[ 0] = 1.0f - 2.0f * ( comp[Y] * comp[Y] + comp[Z] * comp[Z] );
+ pMatrix[ 1] = 2.0f * (comp[X] * comp[Y] + comp[Z] * comp[W]);
+ pMatrix[ 2] = 2.0f * (comp[X] * comp[Z] - comp[Y] * comp[W]);
+ pMatrix[ 3] = 0.0f;
+
+ // Second row
+ pMatrix[ 4] = 2.0f * ( comp[X] * comp[Y] - comp[Z] * comp[W] );
+ pMatrix[ 5] = 1.0f - 2.0f * ( comp[X] * comp[X] + comp[Z] * comp[Z] );
+ pMatrix[ 6] = 2.0f * (comp[Z] * comp[Y] + comp[X] * comp[W] );
+ pMatrix[ 7] = 0.0f;
+
+ // Third row
+ pMatrix[ 8] = 2.0f * ( comp[X] * comp[Z] + comp[Y] * comp[W] );
+ pMatrix[ 9] = 2.0f * ( comp[Y] * comp[Z] - comp[X] * comp[W] );
+ pMatrix[10] = 1.0f - 2.0f * ( comp[X] * comp[X] + comp[Y] * comp[Y] );
+ pMatrix[11] = 0.0f;
+
+ // Fourth row
+ pMatrix[12] = 0;
+ pMatrix[13] = 0;
+ pMatrix[14] = 0;
+ pMatrix[15] = 1.0f;
+ }
+
#endif
|