module Face where import Point import ThreeDimensional data Face = Face { v0 :: Point, v1 :: Point, v2 :: Point, v3 :: Point } deriving (Eq) instance Show Face where show f = "Face:\n" ++ " v0: " ++ (show (v0 f)) ++ "\n" ++ " v1: " ++ (show (v1 f)) ++ "\n" ++ " v2: " ++ (show (v2 f)) ++ "\n" ++ " v3: " ++ (show (v3 f)) ++ "\n" instance ThreeDimensional Face where center f = ((v0 f) + (v1 f) + (v2 f) + (v3 f)) `scale` (1/4) -- Too lazy to implement this right now. contains_point _ _ = False -- tetrahedron0 :: Face -> Tetrahedron -- tetrahedron0 f = -- Tetrahedron c v0' v1' v2' v3' -- where -- c = cube f -- v0' = v0 f -- v1' = v1 f -- v2' = center f -- v3' = center c -- tetrahedron1 :: Face -> Tetrahedron -- tetrahedron1 f = -- Tetrahedron c v0' v1' v2' v3' -- where -- c = cube f -- v0' = v1 f -- v1' = v2 f -- v2' = center f -- v3' = center c -- tetrahedron2 :: Face -> Tetrahedron -- tetrahedron2 f = -- Tetrahedron c v0' v1' v2' v3' -- where -- c = cube f -- v0' = v2 f -- v1' = v3 f -- v2' = center f -- v3' = center c -- tetrahedron3 :: Face -> Tetrahedron -- tetrahedron3 f = -- Tetrahedron c v0' v1' v2' v3' -- where -- c = cube f -- v0' = v3 f -- v1' = v0 f -- v2' = center f -- v3' = center c -- tetrahedrons :: Cube -> [Tetrahedron] -- tetrahedrons c = -- concat [ -- [tetrahedron0 f0, tetrahedron1 f0, tetrahedron2 f0, tetrahedron3 f0], -- [tetrahedron0 f1, tetrahedron1 f1, tetrahedron2 f1, tetrahedron3 f2], -- [tetrahedron0 f2, tetrahedron1 f2, tetrahedron2 f2, tetrahedron3 f2], -- [tetrahedron0 f3, tetrahedron1 f3, tetrahedron2 f3, tetrahedron3 f3], -- [tetrahedron0 f4, tetrahedron1 f4, tetrahedron2 f4, tetrahedron3 f4], -- [tetrahedron0 f5, tetrahedron1 f5, tetrahedron2 f5, tetrahedron3 f5] ] -- where -- f0 = face0 c -- f1 = face1 c -- f2 = face2 c -- f3 = face3 c -- f4 = face4 c -- f5 = face5 c