]> gitweb.michael.orlitzky.com - spline3.git/commitdiff
Fix the tetrahedron collision detection.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 28 Aug 2011 21:45:07 +0000 (17:45 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 28 Aug 2011 21:45:07 +0000 (17:45 -0400)
Update the test for the collision detection (it was wrong).

src/Tests/Grid.hs
src/Tetrahedron.hs

index 3cc316ae302771a7b80c12c8fdbca76fdcaba1a5..f94a519566c2efc6f37dcd9675b2a85ee7e32b3e 100644 (file)
@@ -360,19 +360,15 @@ test_trilinear9x9x9_reproduced =
 --
 --   Example from before the fix:
 --
---   > b0 (tetrahedron12 c) p
---   -2.168404344971019e-18
 --   > b0 (tetrahedron15 c) p
 --   -3.4694469519536365e-18
 --
 test_tetrahedra_collision_sensitivity :: Assertion
 test_tetrahedra_collision_sensitivity =
-  assertTrue "tetrahedron collision tests aren't too sensitive" $
-             contains_point t12 p &&
+  assertTrue "tetrahedron collision tests isn't too sensitive" $
              contains_point t15 p
   where
-    g = make_grid 1 trilinear
+    g = make_grid 1 naturals_1d
     c = cube_at g 0 17 1
     p = (0, 16.75, 0.5) :: Point
-    t12 = tetrahedron12 c
     t15 = tetrahedron15 c
index 73ed58863595cab2da3bd8a4a0e98cd2f5f69ad4..6c13f4bbb429f2a185cdd1eaae3a541f1b147cb8 100644 (file)
@@ -6,6 +6,7 @@ import Prelude hiding (LT)
 import Test.QuickCheck (Arbitrary(..), Gen)
 
 import Cardinal
+import Comparisons (nearly_ge)
 import FunctionValues
 import Misc (factorial)
 import Point
@@ -42,7 +43,10 @@ instance Show Tetrahedron where
 instance ThreeDimensional Tetrahedron where
     center t = ((v0 t) + (v1 t) + (v2 t) + (v3 t)) `scale` (1/4)
     contains_point t p =
-        (b0 t p) >= 0 && (b1 t p) >= 0 && (b2 t p) >= 0 && (b3 t p) >= 0
+      (b0 t p) `nearly_ge` 0 &&
+      (b1 t p) `nearly_ge` 0 &&
+      (b2 t p) `nearly_ge` 0 &&
+      (b3 t p) `nearly_ge` 0
 
 
 polynomial :: Tetrahedron -> (RealFunction Point)