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