]> gitweb.michael.orlitzky.com - spline3.git/blobdiff - src/Cube.hs
Add the rest of the tetrahedron and tests.
[spline3.git] / src / Cube.hs
index 4c70a4126c7778e711806d200f3811d64c84c261..b44f0070f5c8be1982584897efdf605884846788 100644 (file)
@@ -161,10 +161,10 @@ left_face :: Cube -> Face.Face
 left_face c = Face.Face v0' v1' v2' v3'
     where
       delta = (1/2)*(h c)
-      v0' = (center c) + (-delta, -delta, delta)
-      v1' = (center c) + (delta, -delta, delta)
-      v2' = (center c) + (delta, -delta, -delta)
-      v3' = (center c) + (-delta, -delta, -delta)
+      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.
@@ -172,10 +172,10 @@ right_face :: Cube -> Face.Face
 right_face c = Face.Face v0' v1' v2' v3'
     where
       delta = (1/2)*(h c)
-      v0' = (center c) + (-delta, delta, -delta)
-      v1' = (center c) + (delta, delta, -delta)
-      v2' = (center c) + (delta, delta, delta)
-      v3' = (center c) + (-delta, delta, delta)
+      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 :: Cube -> Tetrahedron
@@ -343,6 +343,94 @@ tetrahedron15 c =
       fv' = rotate (Tetrahedron.fv (tetrahedron12 c)) cwz
 
 
+tetrahedron16 :: Cube -> Tetrahedron
+tetrahedron16 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (right_face c)
+      v2' = Face.v0 (right_face c)
+      v3' = Face.v1 (right_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron0 c)) ccwz
+
+
+tetrahedron17 :: Cube -> Tetrahedron
+tetrahedron17 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (right_face c)
+      v2' = Face.v1 (right_face c)
+      v3' = Face.v2 (right_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron16 c)) cwy
+
+
+tetrahedron18 :: Cube -> Tetrahedron
+tetrahedron18 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (right_face c)
+      v2' = Face.v2 (right_face c)
+      v3' = Face.v3 (right_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron16 c)) (cwy . cwy)
+
+
+tetrahedron19 :: Cube -> Tetrahedron
+tetrahedron19 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (right_face c)
+      v2' = Face.v3 (right_face c)
+      v3' = Face.v0 (right_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron16 c)) ccwy
+
+
+tetrahedron20 :: Cube -> Tetrahedron
+tetrahedron20 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (left_face c)
+      v2' = Face.v0 (left_face c)
+      v3' = Face.v1 (left_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron0 c)) cwz
+
+
+tetrahedron21 :: Cube -> Tetrahedron
+tetrahedron21 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (left_face c)
+      v2' = Face.v1 (left_face c)
+      v3' = Face.v2 (left_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron20 c)) ccwy
+
+
+tetrahedron22 :: Cube -> Tetrahedron
+tetrahedron22 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (left_face c)
+      v2' = Face.v2 (left_face c)
+      v3' = Face.v3 (left_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron20 c)) ccwy
+
+
+tetrahedron23 :: Cube -> Tetrahedron
+tetrahedron23 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (left_face c)
+      v2' = Face.v3 (left_face c)
+      v3' = Face.v0 (left_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron20 c)) ccwy
+
+
 tetrahedrons :: Cube -> [Tetrahedron]
 tetrahedrons c =
     [tetrahedron0 c,
@@ -360,15 +448,12 @@ tetrahedrons c =
      tetrahedron12 c,
      tetrahedron13 c,
      tetrahedron14 c,
-     tetrahedron15 c
-                --  tetrahedron16 c,
-                --  tetrahedron17 c,
-                --  tetrahedron18 c,
-                --  tetrahedron19 c,
-                --  tetrahedron20 c,
-                --  tetrahedron21 c,
-                --  tetrahedron21 c,
-                --  tetrahedron22 c,
-                --  tetrahedron23 c,
-                --  tetrahedron24 c
-    ]
+     tetrahedron15 c,
+     tetrahedron16 c,
+     tetrahedron17 c,
+     tetrahedron18 c,
+     tetrahedron19 c,
+     tetrahedron20 c,
+     tetrahedron21 c,
+     tetrahedron22 c,
+     tetrahedron23 c]