X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTetrahedron.hs;h=73ed58863595cab2da3bd8a4a0e98cd2f5f69ad4;hb=603d9155a29bfbc353b42a6c880edce224626a16;hp=bcf9a0b599b9fe36098663b71966445ac602bbb6;hpb=60ff027e52faf66c111b3dc2779c3bf5c7dfb6b9;p=spline3.git diff --git a/src/Tetrahedron.hs b/src/Tetrahedron.hs index bcf9a0b..73ed588 100644 --- a/src/Tetrahedron.hs +++ b/src/Tetrahedron.hs @@ -3,6 +3,7 @@ where import Numeric.LinearAlgebra hiding (i, scale) import Prelude hiding (LT) +import Test.QuickCheck (Arbitrary(..), Gen) import Cardinal import FunctionValues @@ -18,6 +19,17 @@ data Tetrahedron = Tetrahedron { fv :: FunctionValues, v3 :: Point } deriving (Eq) + +instance Arbitrary Tetrahedron where + arbitrary = do + rnd_v0 <- arbitrary :: Gen Point + rnd_v1 <- arbitrary :: Gen Point + rnd_v2 <- arbitrary :: Gen Point + rnd_v3 <- arbitrary :: Gen Point + rnd_fv <- arbitrary :: Gen FunctionValues + return (Tetrahedron rnd_fv rnd_v0 rnd_v1 rnd_v2 rnd_v3) + + instance Show Tetrahedron where show t = "Tetrahedron:\n" ++ " fv: " ++ (show (fv t)) ++ "\n" ++ @@ -211,18 +223,10 @@ vol_matrix t = (4><4) y1, y2, y3, y4, z1, z2, z3, z4 ] where - x1 = x_coord (v0 t) - x2 = x_coord (v1 t) - x3 = x_coord (v2 t) - x4 = x_coord (v3 t) - y1 = y_coord (v0 t) - y2 = y_coord (v1 t) - y3 = y_coord (v2 t) - y4 = y_coord (v3 t) - z1 = z_coord (v0 t) - z2 = z_coord (v1 t) - z3 = z_coord (v2 t) - z4 = z_coord (v3 t) + (x1, y1, z1) = v0 t + (x2, y2, z2) = v1 t + (x3, y3, z3) = v2 t + (x4, y4, z4) = v3 t -- | Computed using the formula from Lai & Schumaker, Definition 15.4, -- page 436.