From: Michael Orlitzky Date: Sun, 28 Aug 2011 21:45:07 +0000 (-0400) Subject: Fix the tetrahedron collision detection. X-Git-Tag: 0.0.1~210 X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=b9c6d5f4f9cf3e0e8c32499959c879e6300717f6;p=spline3.git Fix the tetrahedron collision detection. Update the test for the collision detection (it was wrong). --- diff --git a/src/Tests/Grid.hs b/src/Tests/Grid.hs index 3cc316a..f94a519 100644 --- a/src/Tests/Grid.hs +++ b/src/Tests/Grid.hs @@ -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 diff --git a/src/Tetrahedron.hs b/src/Tetrahedron.hs index 73ed588..6c13f4b 100644 --- a/src/Tetrahedron.hs +++ b/src/Tetrahedron.hs @@ -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)