]> gitweb.michael.orlitzky.com - spline3.git/blobdiff - src/Tetrahedron.hs
Finish the precomputed_volume optimization.
[spline3.git] / src / Tetrahedron.hs
index 4606761b94b3df7986fd07ce18b9d32277677d8b..1f7c22b355c0392f26988a1d9c315e63fee2d68e 100644 (file)
@@ -3,7 +3,7 @@ where
 
 import Numeric.LinearAlgebra hiding (i, scale)
 import Prelude hiding (LT)
-import Test.QuickCheck (Arbitrary(..), Gen, Positive(..))
+import Test.QuickCheck (Arbitrary(..), Gen)
 
 import Cardinal
 import Comparisons (nearly_ge)
@@ -29,8 +29,11 @@ instance Arbitrary Tetrahedron where
       rnd_v2 <- arbitrary :: Gen Point
       rnd_v3 <- arbitrary :: Gen Point
       rnd_fv <- arbitrary :: Gen FunctionValues
-      (Positive rnd_vol) <- arbitrary :: Gen (Positive Double)
-      return (Tetrahedron rnd_fv rnd_v0 rnd_v1 rnd_v2 rnd_v3 rnd_vol)
+      -- We can't assign an incorrect precomputed volume,
+      -- so we have to calculate the correct one here.
+      let t' = Tetrahedron rnd_fv rnd_v0 rnd_v1 rnd_v2 rnd_v3 0
+      let vol = volume t'
+      return (Tetrahedron rnd_fv rnd_v0 rnd_v1 rnd_v2 rnd_v3 vol)
 
 
 instance Show Tetrahedron where