summaryrefslogtreecommitdiff
path: root/src/refresh/sw/alias.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2013-03-18 16:55:22 +0400
committerAndrey Nazarov <skuller@skuller.net>2013-03-20 22:04:53 +0400
commita8dccaf4c1e274012aca6212dd6efea5522d2dab (patch)
tree419a08b6cf1a45105f1ab607a1bb034bd4ca2afd /src/refresh/sw/alias.c
parent14780fed28b9af75f7a2263b04eb5411d5250e98 (diff)
Simplify, move math functions.
Diffstat (limited to 'src/refresh/sw/alias.c')
-rw-r--r--src/refresh/sw/alias.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/refresh/sw/alias.c b/src/refresh/sw/alias.c
index dad1748..1a0a544 100644
--- a/src/refresh/sw/alias.c
+++ b/src/refresh/sw/alias.c
@@ -364,6 +364,27 @@ static void R_AliasPreparePoints(void)
}
}
+/*
+================
+R_ConcatTransforms
+================
+*/
+static void R_ConcatTransforms(float in1[3][4], float in2[3][4], float out[3][4])
+{
+ out[0][0] = in1[0][0] * in2[0][0] + in1[0][1] * in2[1][0] + in1[0][2] * in2[2][0];
+ out[0][1] = in1[0][0] * in2[0][1] + in1[0][1] * in2[1][1] + in1[0][2] * in2[2][1];
+ out[0][2] = in1[0][0] * in2[0][2] + in1[0][1] * in2[1][2] + in1[0][2] * in2[2][2];
+ out[0][3] = in1[0][0] * in2[0][3] + in1[0][1] * in2[1][3] + in1[0][2] * in2[2][3] + in1[0][3];
+ out[1][0] = in1[1][0] * in2[0][0] + in1[1][1] * in2[1][0] + in1[1][2] * in2[2][0];
+ out[1][1] = in1[1][0] * in2[0][1] + in1[1][1] * in2[1][1] + in1[1][2] * in2[2][1];
+ out[1][2] = in1[1][0] * in2[0][2] + in1[1][1] * in2[1][2] + in1[1][2] * in2[2][2];
+ out[1][3] = in1[1][0] * in2[0][3] + in1[1][1] * in2[1][3] + in1[1][2] * in2[2][3] + in1[1][3];
+ out[2][0] = in1[2][0] * in2[0][0] + in1[2][1] * in2[1][0] + in1[2][2] * in2[2][0];
+ out[2][1] = in1[2][0] * in2[0][1] + in1[2][1] * in2[1][1] + in1[2][2] * in2[2][1];
+ out[2][2] = in1[2][0] * in2[0][2] + in1[2][1] * in2[1][2] + in1[2][2] * in2[2][2];
+ out[2][3] = in1[2][0] * in2[0][3] + in1[2][1] * in2[1][3] + in1[2][2] * in2[2][3] + in1[2][3];
+}
+
/*
================