]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - matrixlib.h
Add TEXF_PERSISTENT and R_PurgeTexture which only frees textures if that flag isn...
[xonotic/darkplaces.git] / matrixlib.h
index 90e816270a4b7cc5346058673f9feadba872c1a8..480dec150105651468aa32e27fb51ee11c35757a 100644 (file)
@@ -6,6 +6,8 @@
 #define M_PI           3.14159265358979323846  // matches value in gcc v2 math.h
 #endif
 
+//#define MATRIX4x4_OPENGLORIENTATION
+
 typedef struct matrix4x4_s
 {
        float m[4][4];
@@ -28,15 +30,21 @@ void Matrix4x4_Concat (matrix4x4_t *out, const matrix4x4_t *in1, const matrix4x4
 // swaps the rows and columns of the matrix
 // (is this useful for anything?)
 void Matrix4x4_Transpose (matrix4x4_t *out, const matrix4x4_t *in1);
-// swaps the rows and columns of the rotation matrix
-// (inverting the rotation, but leaving everything else the same)
-void Matrix4x4_Transpose3x3 (matrix4x4_t *out, const matrix4x4_t *in1);
+// creates a matrix that does the opposite of the matrix provided
+// this is a full matrix inverter, it should be able to invert any matrix that
+// is possible to invert
+// (non-uniform scaling, rotation, shearing, and translation, possibly others)
+// warning: this function is SLOW
+int Matrix4x4_Invert_Full (matrix4x4_t *out, const matrix4x4_t *in1);
 // creates a matrix that does the opposite of the matrix provided
 // only supports translate, rotate, scale (not scale3) matrices
 void Matrix4x4_Invert_Simple (matrix4x4_t *out, const matrix4x4_t *in1);
 // creates a matrix that does the same rotation and translation as the matrix
 // provided, but no uniform scaling, does not support scale3 matrices
 void Matrix4x4_Normalize (matrix4x4_t *out, matrix4x4_t *in1);
+// modifies a matrix to have all vectors and origin reflected across the plane
+// to the opposite side (at least if axisscale is -2)
+void Matrix4x4_Reflect (matrix4x4_t *out, double normalx, double normaly, double normalz, double dist, double axisscale);
 
 // creates an identity matrix
 // (a matrix which does nothing)