aboutsummaryrefslogtreecommitdiff
path: root/tools/planetest/linmath.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/planetest/linmath.c')
-rw-r--r--tools/planetest/linmath.c130
1 files changed, 65 insertions, 65 deletions
diff --git a/tools/planetest/linmath.c b/tools/planetest/linmath.c
index dec8c70..88643b4 100644
--- a/tools/planetest/linmath.c
+++ b/tools/planetest/linmath.c
@@ -3,48 +3,48 @@
#include "linmath.h"
#include <math.h>
-void cross3d( float * out, const float * a, const float * b )
+void cross3d( FLT * out, const FLT * a, const FLT * b )
{
out[0] = a[1]*b[2] - a[2]*b[1];
out[1] = a[2]*b[0] - a[0]*b[2];
out[2] = a[0]*b[1] - a[1]*b[0];
}
-void sub3d( float * out, const float * a, const float * b )
+void sub3d( FLT * out, const FLT * a, const FLT * b )
{
out[0] = a[0] - b[0];
out[1] = a[1] - b[1];
out[2] = a[2] - b[2];
}
-void add3d( float * out, const float * a, const float * b )
+void add3d( FLT * out, const FLT * a, const FLT * b )
{
out[0] = a[0] + b[0];
out[1] = a[1] + b[1];
out[2] = a[2] + b[2];
}
-void scale3d( float * out, const float * a, float scalar )
+void scale3d( FLT * out, const FLT * a, FLT scalar )
{
out[0] = a[0] * scalar;
out[1] = a[1] * scalar;
out[2] = a[2] * scalar;
}
-void normalize3d( float * out, const float * in )
+void normalize3d( FLT * out, const FLT * in )
{
- float r = 1./sqrtf( in[0] * in[0] + in[1] * in[1] + in[2] * in[2] );
+ FLT r = 1./sqrtf( in[0] * in[0] + in[1] * in[1] + in[2] * in[2] );
out[0] = in[0] * r;
out[1] = in[1] * r;
out[2] = in[2] * r;
}
-float dot3d( const float * a, const float * b )
+FLT dot3d( const FLT * a, const FLT * b )
{
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}
-int compare3d( const float * a, const float * b, float epsilon )
+int compare3d( const FLT * a, const FLT * b, FLT epsilon )
{
if( !a || !b ) return 0;
if( a[2] - b[2] > epsilon ) return 1;
@@ -56,7 +56,7 @@ int compare3d( const float * a, const float * b, float epsilon )
return 0;
}
-void copy3d( float * out, const float * in )
+void copy3d( FLT * out, const FLT * in )
{
out[0] = in[0];
out[1] = in[1];
@@ -72,12 +72,12 @@ void copy3d( float * out, const float * in )
-void quatsetnone( float * q )
+void quatsetnone( FLT * q )
{
q[0] = 0; q[1] = 0; q[2] = 0; q[3] = 1;
}
-void quatcopy( float * qout, const float * qin )
+void quatcopy( FLT * qout, const FLT * qin )
{
qout[0] = qin[0];
qout[1] = qin[1];
@@ -85,18 +85,18 @@ void quatcopy( float * qout, const float * qin )
qout[3] = qin[3];
}
-void quatfromeuler( float * q, const float * euler )
+void quatfromeuler( FLT * q, const FLT * euler )
{
- float X = euler[0]/2.0f; //roll
- float Y = euler[1]/2.0f; //pitch
- float Z = euler[2]/2.0f; //yaw
+ FLT X = euler[0]/2.0f; //roll
+ FLT Y = euler[1]/2.0f; //pitch
+ FLT Z = euler[2]/2.0f; //yaw
- float cx = cosf(X);
- float sx = sinf(X);
- float cy = cosf(Y);
- float sy = sinf(Y);
- float cz = cosf(Z);
- float sz = sinf(Z);
+ FLT cx = cosf(X);
+ FLT sx = sinf(X);
+ FLT cy = cosf(Y);
+ FLT sy = sinf(Y);
+ FLT cz = cosf(Z);
+ FLT sz = sinf(Z);
//Correct according to
//http://en.wikipedia.org/wiki/Conversion_between_MQuaternions_and_Euler_angles
@@ -107,7 +107,7 @@ void quatfromeuler( float * q, const float * euler )
quatnormalize( q, q );
}
-void quattoeuler( float * euler, const float * q )
+void quattoeuler( FLT * euler, const FLT * q )
{
//According to http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles (Oct 26, 2009)
euler[0] = atan2( 2 * (q[0]*q[1] + q[2]*q[3]), 1 - 2 * (q[1]*q[1] + q[2]*q[2] ) );
@@ -115,12 +115,12 @@ void quattoeuler( float * euler, const float * q )
euler[2] = atan2( 2 * (q[0]*q[3] + q[1]*q[2]), 1 - 2 * (q[2]*q[2] + q[3]*q[3] ) );
}
-void quatfromaxisangle( float * q, const float * axis, float radians )
+void quatfromaxisangle( FLT * q, const FLT * axis, FLT radians )
{
- float v[3];
+ FLT v[3];
normalize3d( v, axis );
- float sn = sin(radians/2.0f);
+ FLT sn = sin(radians/2.0f);
q[0] = cos(radians/2.0f);
q[1] = sn * v[0];
q[2] = sn * v[1];
@@ -129,40 +129,40 @@ void quatfromaxisangle( float * q, const float * axis, float radians )
quatnormalize( q, q );
}
-float quatmagnitude( const float * q )
+FLT quatmagnitude( const FLT * q )
{
return sqrt((q[0]*q[0])+(q[1]*q[1])+(q[2]*q[2])+(q[3]*q[3]));
}
-float quatinvsqmagnitude( const float * q )
+FLT quatinvsqmagnitude( const FLT * q )
{
return 1./((q[0]*q[0])+(q[1]*q[1])+(q[2]*q[2])+(q[3]*q[3]));
}
-void quatnormalize( float * qout, const float * qin )
+void quatnormalize( FLT * qout, const FLT * qin )
{
- float imag = quatinvsqmagnitude( qin );
+ FLT imag = quatinvsqmagnitude( qin );
quatscale( qout, qin, imag );
}
-void quattomatrix( float * matrix44, const float * qin )
+void quattomatrix( FLT * matrix44, const FLT * qin )
{
- float q[4];
+ FLT q[4];
quatnormalize( q, qin );
//Reduced calulation for speed
- float xx = 2*q[0]*q[0];
- float xy = 2*q[0]*q[1];
- float xz = 2*q[0]*q[2];
- float xw = 2*q[0]*q[3];
+ FLT xx = 2*q[0]*q[0];
+ FLT xy = 2*q[0]*q[1];
+ FLT xz = 2*q[0]*q[2];
+ FLT xw = 2*q[0]*q[3];
- float yy = 2*q[1]*q[1];
- float yz = 2*q[1]*q[2];
- float yw = 2*q[1]*q[3];
+ FLT yy = 2*q[1]*q[1];
+ FLT yz = 2*q[1]*q[2];
+ FLT yw = 2*q[1]*q[3];
- float zz = 2*q[2]*q[2];
- float zw = 2*q[2]*q[3];
+ FLT zz = 2*q[2]*q[2];
+ FLT zw = 2*q[2]*q[3];
//opengl major
matrix44[0] = 1-yy-zz;
@@ -186,7 +186,7 @@ void quattomatrix( float * matrix44, const float * qin )
matrix44[15] = 1;
}
-void quatgetconjugate( float * qout, const float * qin )
+void quatgetconjugate( FLT * qout, const FLT * qin )
{
qout[0] = qin[0];
qout[1] = -qin[1];
@@ -194,14 +194,14 @@ void quatgetconjugate( float * qout, const float * qin )
qout[3] = -qin[3];
}
-void quatgetreciprocal( float * qout, const float * qin )
+void quatgetreciprocal( FLT * qout, const FLT * qin )
{
- float m = quatinvsqmagnitude(qin);
+ FLT m = quatinvsqmagnitude(qin);
quatgetconjugate( qout, qin );
quatscale( qout, qout, m );
}
-void quatsub( float * qout, const float * a, const float * b )
+void quatsub( FLT * qout, const FLT * a, const FLT * b )
{
qout[0] = a[0] - b[0];
qout[1] = a[1] - b[1];
@@ -209,7 +209,7 @@ void quatsub( float * qout, const float * a, const float * b )
qout[3] = a[3] - b[3];
}
-void quatadd( float * qout, const float * a, const float * b )
+void quatadd( FLT * qout, const FLT * a, const FLT * b )
{
qout[0] = a[0] + b[0];
qout[1] = a[1] + b[1];
@@ -217,10 +217,10 @@ void quatadd( float * qout, const float * a, const float * b )
qout[3] = a[3] + b[3];
}
-void quatrotateabout( float * qout, const float * a, const float * b )
+void quatrotateabout( FLT * qout, const FLT * a, const FLT * b )
{
- float q1[4];
- float q2[4];
+ FLT q1[4];
+ FLT q2[4];
quatnormalize( q1, a );
quatnormalize( q2, b );
@@ -231,7 +231,7 @@ void quatrotateabout( float * qout, const float * a, const float * b )
qout[3] = (q1[0]*q2[3])+(q1[1]*q2[2])-(q1[2]*q2[1])+(q1[3]*q2[0]);
}
-void quatscale( float * qout, const float * qin, float s )
+void quatscale( FLT * qout, const FLT * qin, FLT s )
{
qout[0] = qin[0] * s;
qout[1] = qin[1] * s;
@@ -240,19 +240,19 @@ void quatscale( float * qout, const float * qin, float s )
}
-float quatinnerproduct( const float * qa, const float * qb )
+FLT quatinnerproduct( const FLT * qa, const FLT * qb )
{
return (qa[0]*qb[0])+(qa[1]*qb[1])+(qa[2]*qb[2])+(qa[3]*qb[3]);
}
-void quatouterproduct( float * outvec3, float * qa, float * qb )
+void quatouterproduct( FLT * outvec3, FLT * qa, FLT * qb )
{
outvec3[0] = (qa[0]*qb[1])-(qa[1]*qb[0])-(qa[2]*qb[3])+(qa[3]*qb[2]);
outvec3[1] = (qa[0]*qb[2])+(qa[1]*qb[3])-(qa[2]*qb[0])-(qa[3]*qb[1]);
outvec3[2] = (qa[0]*qb[3])-(qa[1]*qb[2])+(qa[2]*qb[1])-(qa[3]*qb[0]);
}
-void quatevenproduct( float * q, float * qa, float * qb )
+void quatevenproduct( FLT * q, FLT * qa, FLT * qb )
{
q[0] = (qa[0]*qb[0])-(qa[1]*qb[1])-(qa[2]*qb[2])-(qa[3]*qb[3]);
q[1] = (qa[0]*qb[1])+(qa[1]*qb[0]);
@@ -260,21 +260,21 @@ void quatevenproduct( float * q, float * qa, float * qb )
q[3] = (qa[0]*qb[3])+(qa[3]*qb[0]);
}
-void quatoddproduct( float * outvec3, float * qa, float * qb )
+void quatoddproduct( FLT * outvec3, FLT * qa, FLT * qb )
{
outvec3[0] = (qa[2]*qb[3])-(qa[3]*qb[2]);
outvec3[1] = (qa[3]*qb[1])-(qa[1]*qb[3]);
outvec3[2] = (qa[1]*qb[2])-(qa[2]*qb[1]);
}
-void quatslerp( float * q, const float * qa, const float * qb, float t )
+void quatslerp( FLT * q, const FLT * qa, const FLT * qb, FLT t )
{
- float an[4];
- float bn[4];
+ FLT an[4];
+ FLT bn[4];
quatnormalize( an, qa );
quatnormalize( bn, qb );
- float cosTheta = quatinnerproduct(an,bn);
- float sinTheta;
+ FLT cosTheta = quatinnerproduct(an,bn);
+ FLT sinTheta;
//Careful: If cosTheta is exactly one, or even if it's infinitesimally over, it'll
// cause SQRT to produce not a number, and screw everything up.
@@ -283,7 +283,7 @@ void quatslerp( float * q, const float * qa, const float * qb, float t )
else
sinTheta = sqrt(1 - (cosTheta*cosTheta));
- float Theta = acos(cosTheta); //Theta is half the angle between the 2 MQuaternions
+ FLT Theta = acos(cosTheta); //Theta is half the angle between the 2 MQuaternions
if(fabs(Theta) < DEFAULT_EPSILON )
quatcopy( q, qa );
@@ -294,8 +294,8 @@ void quatslerp( float * q, const float * qa, const float * qb, float t )
}
else
{
- float aside[4];
- float bside[4];
+ FLT aside[4];
+ FLT bside[4];
quatscale( bside, qb, sin( t * Theta ) );
quatscale( aside, qa, sin((1-t)*Theta) );
quatadd( q, aside, bside );
@@ -303,11 +303,11 @@ void quatslerp( float * q, const float * qa, const float * qb, float t )
}
}
-void quatrotatevector( float * vec3out, const float * quat, const float * vec3in )
+void quatrotatevector( FLT * vec3out, const FLT * quat, const FLT * vec3in )
{
- float tquat[4];
- float vquat[4];
- float qrecp[4];
+ FLT tquat[4];
+ FLT vquat[4];
+ FLT qrecp[4];
vquat[0] = 0;
vquat[1] = vec3in[0];
vquat[2] = vec3in[1];