X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FFace.hs;h=bc1dfeee1b8067ccda3ccff433cb5107a862c9a1;hb=6fb9ab6b6068870323e996da931fc04c7710e3e4;hp=6f7e99b8e3ed929165f66772e419d2911e074a80;hpb=f97dbb52b73bd90a89940b9653ff274654aba9de;p=spline3.git diff --git a/src/Face.hs b/src/Face.hs index 6f7e99b..bc1dfee 100644 --- a/src/Face.hs +++ b/src/Face.hs @@ -1,160 +1,83 @@ module Face where -import Cube -import Grid import Point -import Tetrahedron hiding (c, cube, v0, v1, v2, v3) import ThreeDimensional -data Face = Face { cube :: Cube, - v0 :: Point, +data Face = Face { v0 :: Point, v1 :: Point, v2 :: Point, v3 :: Point } deriving (Eq) instance Show Face where - show f = "Face (Cube_" ++ (show i') ++ "," ++ (show j') ++ "," ++ - (show k') ++ ") " ++ "(v0: " ++ (show (v0 f)) ++ ") (v1: " ++ - (show (v1 f)) ++ ") (v2: " ++ (show (v2 f)) ++ ") (v3: " ++ - (show (v3 f)) ++ ")\n\n" - where - i' = i (cube f) - j' = j (cube f) - k' = k (cube f) + 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 --- | The top (in the direction of z) face of the cube. -face0 :: Cube -> Face -face0 c = Face c v0' v1' v2' v3' - where - g = grid c - delta = (1/2)*(h g) - v0' = (center c) + (-delta, delta, delta) - v1' = (center c) + (delta, delta, delta) - v2' = (center c) + (delta, -delta, delta) - v3' = (center c) + (-delta, -delta, delta) --- | The back (in the direction of x) face of the cube. -face1 :: Cube -> Face -face1 c = Face c v0' v1' v2' v3' - where - g = grid c - delta = (1/2)*(h g) - v0' = (center c) + (delta, delta, delta) - v1' = (center c) + (delta, delta, -delta) - v2' = (center c) + (delta, -delta, -delta) - v3' = (center c) + (delta, -delta, delta) - - --- The bottom face (in the direction of -z) of the cube. -face2 :: Cube -> Face -face2 c = Face c v0' v1' v2' v3' - where - g = grid c - delta = (1/2)*(h g) - v0' = (center c) + (delta, delta, -delta) - v1' = (center c) + (-delta, delta, -delta) - v2' = (center c) + (-delta, -delta, -delta) - v3' = (center c) + (delta, -delta, -delta) - - --- | The front (in the direction of -x) face of the cube. -face3 :: Cube -> Face -face3 c = Face c v0' v1' v2' v3' - where - g = grid c - delta = (1/2)*(h g) - v0' = (center c) + (-delta, delta, -delta) - v1' = (center c) + (-delta, delta, delta) - v2' = (center c) + (-delta, -delta, delta) - v3' = (center c) + (-delta, -delta, -delta) - - --- | The left (in the direction of -y) face of the cube. -face4 :: Cube -> Face -face4 c = Face c v0' v1' v2' v3' - where - g = grid c - delta = (1/2)*(h g) - v0' = (center c) + (-delta, -delta, delta) - v1' = (center c) + (delta, -delta, delta) - v2' = (center c) + (delta, -delta, -delta) - v3' = (center c) + (-delta, -delta, -delta) - - --- | The right (in the direction of y) face of the cube. -face5 :: Cube -> Face -face5 c = Face c v0' v1' v2' v3' - where - g = grid c - delta = (1/2)*(h g) - v0' = (center c) + (-delta, delta, -delta) - v1' = (center c) + (delta, delta, -delta) - v2' = (center c) + (delta, delta, delta) - v3' = (center c) + (-delta, delta, delta) - - -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 +-- 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