r680 - trunk

lordhavoc at icculus.org lordhavoc at icculus.org
Mon Mar 27 04:07:36 EST 2006


Author: lordhavoc
Date: 2006-03-27 04:07:36 -0500 (Mon, 27 Mar 2006)
New Revision: 680

Modified:
   trunk/matrixlib.c
   trunk/matrixlib.h
Log:
changed parameters to Matrix4x4_CreateFromDoom3Joint


Modified: trunk/matrixlib.c
===================================================================
--- trunk/matrixlib.c	2006-03-27 09:07:18 UTC (rev 679)
+++ trunk/matrixlib.c	2006-03-27 09:07:36 UTC (rev 680)
@@ -469,12 +469,12 @@
 
 // LordHavoc: I got this code from:
 //http://www.doom3world.org/phpbb2/viewtopic.php?t=2884
-void Matrix4x4_CreateFromDoom3Joint(matrix4x4_t *m, const double *joint)
+void Matrix4x4_CreateFromDoom3Joint(matrix4x4_t *m, double ox, double oy, double oz, double x, double y, double z)
 {
-	double x = joint[3], y = joint[4], z = joint[5], w = 1.0 - VectorLength2(joint + 3);
+	double w = 1.0 - (x*x+y*y+z*z);
 	w = w > 0.0 ? -sqrt(w) : 0.0;
-	m->m[0][0]= 1-2*((y*y)+(z*z)) ;m->m[0][1]=   2*((x*y)-(z*w)) ;m->m[0][2]=   2*((x*z)+(y*w)) ;m->m[0][3]=joint[0];
-	m->m[1][0]=   2*((x*y)+(z*w)) ;m->m[1][1]= 1-2*((x*x)+(z*z)) ;m->m[1][2]=   2*((y*z)-(x*w)) ;m->m[1][3]=joint[1];
-	m->m[2][0]=   2*((x*z)-(y*w)) ;m->m[2][1]=   2*((y*z)+(x*w)) ;m->m[2][2]= 1-2*((x*x)+(y*y)) ;m->m[2][3]=joint[2];
-	m->m[3][0]=   0               ;m->m[3][1]=   0               ;m->m[3][2]=   0               ;m->m[3][3]=       1;
+	m->m[0][0]= 1-2*((y*y)+(z*z)) ;m->m[0][1]=   2*((x*y)-(z*w)) ;m->m[0][2]=   2*((x*z)+(y*w)) ;m->m[0][3]=ox;
+	m->m[1][0]=   2*((x*y)+(z*w)) ;m->m[1][1]= 1-2*((x*x)+(z*z)) ;m->m[1][2]=   2*((y*z)-(x*w)) ;m->m[1][3]=oy;
+	m->m[2][0]=   2*((x*z)-(y*w)) ;m->m[2][1]=   2*((y*z)+(x*w)) ;m->m[2][2]= 1-2*((x*x)+(y*y)) ;m->m[2][3]=oz;
+	m->m[3][0]=   0               ;m->m[3][1]=   0               ;m->m[3][2]=   0               ;m->m[3][3]= 1;
 }

Modified: trunk/matrixlib.h
===================================================================
--- trunk/matrixlib.h	2006-03-27 09:07:18 UTC (rev 679)
+++ trunk/matrixlib.h	2006-03-27 09:07:36 UTC (rev 680)
@@ -56,7 +56,7 @@
 // creates a matrix for a quake entity
 void Matrix4x4_CreateFromQuakeEntity(matrix4x4_t *out, double x, double y, double z, double pitch, double yaw, double roll, double scale);
 // creates a matrix from a doom3 joint
-void Matrix4x4_CreateFromDoom3Joint(matrix4x4_t *m, const double *joint);
+void Matrix4x4_CreateFromDoom3Joint(matrix4x4_t *m, double ox, double oy, double oz, double qx, double qy, double qz);
 
 // converts a matrix4x4 to a set of 3D vectors for the 3 axial directions, and the translate
 void Matrix4x4_ToVectors(const matrix4x4_t *in, double vx[3], double vy[3], double vz[3], double t[3]);




More information about the neither-commits mailing list