X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FCube.hs;h=2878eb06b76ffb54c0685de2543457faf3d8db29;hb=f6d0c289ad3397cf392976c24f3afdb17da5d377;hp=2ec9e4848318fb12135309900e5505df20f3614e;hpb=574a15e7ccfa3109f06fa05ed09e2282a03a7dad;p=spline3.git diff --git a/src/Cube.hs b/src/Cube.hs index 2ec9e48..2878eb0 100644 --- a/src/Cube.hs +++ b/src/Cube.hs @@ -1,6 +1,8 @@ module Cube where +import Test.QuickCheck (Arbitrary(..), Gen, Positive(..), choose) + import Cardinal import qualified Face (Face(Face, v0, v1, v2, v3)) import FunctionValues @@ -16,6 +18,19 @@ data Cube = Cube { h :: Double, deriving (Eq) +instance Arbitrary Cube where + arbitrary = do + (Positive h') <- arbitrary :: Gen (Positive Double) + i' <- choose (coordmin, coordmax) + j' <- choose (coordmin, coordmax) + k' <- choose (coordmin, coordmax) + fv' <- arbitrary :: Gen FunctionValues + return (Cube h' i' j' k' fv') + where + coordmin = -268435456 -- -(2^29 / 2) + coordmax = 268435456 -- +(2^29 / 2) + + instance Show Cube where show c = "Cube_" ++ subscript ++ "\n" ++ @@ -447,8 +462,8 @@ tetrahedron23 c = $ Tetrahedron.fv (tetrahedron0 c) -tetrahedrons :: Cube -> [Tetrahedron] -tetrahedrons c = +tetrahedra :: Cube -> [Tetrahedron] +tetrahedra c = [tetrahedron0 c, tetrahedron1 c, tetrahedron2 c, @@ -482,4 +497,4 @@ find_containing_tetrahedra c p = filter contains_our_point all_tetrahedra where contains_our_point = flip contains_point p - all_tetrahedra = tetrahedrons c + all_tetrahedra = tetrahedra c