// Util
// ==================================================================================================================
+#define CSR_PIf 3.14159265358979323846264338327950288f
+
float csr_minf( float a, float b )
{
if( a < b )
b[2] = a[2];
}
+float csr_rad( float deg )
+{
+ return deg * CSR_PIf / 180.0f;
+}
+
// Vector 2
// ==================================================================================================================
b10 = b[1][0], b11 = b[1][1], b12 = b[1][2],
b20 = b[2][0], b21 = b[2][1], b22 = b[2][2],
b30 = b[3][0], b31 = b[3][1], b32 = b[3][2];
-
- d[0][0] = a00*b00 + a10*b01 + a20*b02 + a30;
- d[0][1] = a01*b00 + a11*b01 + a21*b02 + a31;
- d[0][2] = a02*b00 + a12*b01 + a22*b02 + a32;
- d[1][0] = a00*b10 + a10*b11 + a20*b12 + a30;
- d[1][1] = a01*b10 + a11*b11 + a21*b12 + a31;
- d[1][2] = a02*b10 + a12*b11 + a22*b12 + a32;
- d[2][0] = a00*b20 + a10*b21 + a20*b22 + a30;
- d[2][1] = a01*b20 + a11*b21 + a21*b22 + a31;
- d[2][2] = a02*b20 + a12*b21 + a22*b22 + a32;
+
+ d[0][0] = a00*b00 + a10*b01 + a20*b02;
+ d[0][1] = a01*b00 + a11*b01 + a21*b02;
+ d[0][2] = a02*b00 + a12*b01 + a22*b02;
+ d[1][0] = a00*b10 + a10*b11 + a20*b12;
+ d[1][1] = a01*b10 + a11*b11 + a21*b12;
+ d[1][2] = a02*b10 + a12*b11 + a22*b12;
+ d[2][0] = a00*b20 + a10*b21 + a20*b22;
+ d[2][1] = a01*b20 + a11*b21 + a21*b22;
+ d[2][2] = a02*b20 + a12*b21 + a22*b22;
d[3][0] = a00*b30 + a10*b31 + a20*b32 + a30;
d[3][1] = a01*b30 + a11*b31 + a21*b32 + a31;
d[3][2] = a02*b30 + a12*b31 + a22*b32 + a32;
det = v3_dot( v0v1, p );
- if( det < k_cullEpsilon ) return INFINITY;
+ if( det < k_cullEpsilon ) return -INFINITY;
inv = 1.f / det;
v3_sub( o, v0, tv );
*u = v3_dot( tv, p ) * inv;
- if( *u < 0.f || *u > 1.f ) return INFINITY;
+ if( *u < 0.f || *u > 1.f ) return -INFINITY;
v3_cross( tv, v0v1, qv );
*v = v3_dot( d, qv ) * inv;
- if( *v < 0.f || *u + *v > 1.f ) return INFINITY;
+ if( *v < 0.f || *u + *v > 1.f ) return -INFINITY;
return v3_dot( v0v2, qv ) * inv;
}