]> gitweb.michael.orlitzky.com - spline3.git/commitdiff
Use the cleaner formula for 'det'.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 2 Oct 2011 21:54:30 +0000 (17:54 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 2 Oct 2011 21:54:30 +0000 (17:54 -0400)
src/Tetrahedron.hs

index e84b09103d7ad1bb850bed4b9380aeb47d6bb3b3..2342ba139d2b79cf64c2b5dbac60c3fa0de55b3a 100644 (file)
@@ -281,16 +281,24 @@ c _ _ _ _ _ = error "coefficient index out of bounds"
 
 
 
+-- | Compute the determinant of the 4x4 matrix,
+--
+--   [1]
+--   [x]
+--   [y]
+--   [z]
+--
+--   where [1] = [1, 1, 1, 1],
+--         [x] = [x1,x2,x3,x4],
+--
+--   et cetera.
+--
 det :: Point -> Point -> Point -> Point -> Double
 det p0 p1 p2 p3 =
---  Both of these results are just copy/pasted from Sage. One of them
---  might be more numerically stable, faster, or both.
---
---  x1*y2*z4 - x1*y2*z3 + x1*y3*z2 - x1*y3*z4 - x1*y4*z2 + x1*y4*z3 +
---  x2*y1*z3 - x2*y1*z4 - x2*y3*z1 + x2*y3*z4 +
---  x2*y4*z1 - x2*y4*z3 - x3*y1*z2 + x3*y1*z4 + x3*y2*z1 - x3*y2*z4 - x3*y4*z1 +
---  x3*y4*z2 + x4*y1*z2 - x4*y1*z3 - x4*y2*z1 + x4*y2*z3 + x4*y3*z1 - x4*y3*z2
-  -((x2 - x3)*y1 - (x1 - x3)*y2 + (x1 - x2)*y3)*z4 + ((x2 - x4)*y1 - (x1 - x4)*y2 + (x1 - x2)*y4)*z3 + ((x3 - x4)*y2 - (x2 - x4)*y3 + (x2 - x3)*y4)*z1 - ((x3 - x4)*y1 - (x1 - x4)*y3 + (x1 - x3)*y4)*z2
+  x1*y2*z4 - x1*y2*z3 + x1*y3*z2 - x1*y3*z4 - x1*y4*z2 + x1*y4*z3 +
+  x2*y1*z3 - x2*y1*z4 - x2*y3*z1 + x2*y3*z4 + x2*y4*z1 + x3*y1*z4 +
+  x3*y2*z1 - x3*y2*z4 - x3*y4*z1 - x2*y4*z3 - x3*y1*z2 + x3*y4*z2 +
+  x4*y1*z2 - x4*y1*z3 - x4*y2*z1 + x4*y2*z3 + x4*y3*z1 - x4*y3*z2
   where
     (x1, y1, z1) = p0
     (x2, y2, z2) = p1