]> gitweb.michael.orlitzky.com - spline3.git/commitdiff
Move a bunch of Face/Tetrahedron code into Cube.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 6 May 2011 22:13:21 +0000 (18:13 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 6 May 2011 22:13:21 +0000 (18:13 -0400)
src/Cube.hs

index 23cbe4da70383d80c8fbf1f43d1ccc16a0260620..d873a379ddfca39eba80bf7cb3022b258addfacc 100644 (file)
@@ -1,10 +1,11 @@
 module Cube
 where
 
-import Face
+import Cardinal
+import Face (Face(Face, v0, v1, v2, v3))
 import FunctionValues
---import Grid
 import Point
+import Tetrahedron (Tetrahedron(Tetrahedron), fv)
 import ThreeDimensional
 
 data Cube = Cube { h :: Double,
@@ -156,10 +157,10 @@ top_face :: Cube -> Face
 top_face c = 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)
 
 
 
@@ -191,9 +192,9 @@ front_face :: Cube -> Face
 front_face c = Face v0' v1' v2' v3'
     where
       delta = (1/2)*(h c)
-      v0' = (center c) + (-delta, delta, -delta)
+      v0' = (center c) + (-delta, -delta, delta)
       v1' = (center c) + (-delta, delta, delta)
-      v2' = (center c) + (-delta, -delta, delta)
+      v2' = (center c) + (-delta, delta, -delta)
       v3' = (center c) + (-delta, -delta, -delta)
 
 
@@ -218,3 +219,112 @@ right_face c = Face v0' v1' v2' v3'
       v2' = (center c) + (delta, delta, delta)
       v3' = (center c) + (-delta, delta, delta)
 
+
+
+tetrahedron0 :: Cube -> Tetrahedron
+tetrahedron0 c =
+    Tetrahedron (Cube.fv c) v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (front_face c)
+      v2' = v0 (front_face c)
+      v3' = v1 (front_face c)
+
+tetrahedron1 :: Cube -> Tetrahedron
+tetrahedron1 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (front_face c)
+      v2' = v1 (front_face c)
+      v3' = v2 (front_face c)
+      fv' = rotate (Cube.fv c) ccwx
+
+tetrahedron2 :: Cube -> Tetrahedron
+tetrahedron2 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (front_face c)
+      v2' = v2 (front_face c)
+      v3' = v3 (front_face c)
+      fv' = rotate (Cube.fv c) (ccwx . ccwx)
+
+tetrahedron3 :: Cube -> Tetrahedron
+tetrahedron3 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (front_face c)
+      v2' = v3 (front_face c)
+      v3' = v1 (front_face c)
+      fv' = rotate (Cube.fv c) cwx
+
+tetrahedron4 :: Cube -> Tetrahedron
+tetrahedron4 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (top_face c)
+      v2' = v0 (front_face c)
+      v3' = v1 (front_face c)
+      fv' = rotate (Cube.fv c) cwy
+
+tetrahedron5 :: Cube -> Tetrahedron
+tetrahedron5 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (top_face c)
+      v2' = v1 (top_face c)
+      v3' = v2 (top_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron0 c)) ccwx
+
+tetrahedron6 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (top_face c)
+      v2' = v2 (top_face c)
+      v3' = v3 (top_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron0 c)) (ccwx . ccwx)
+
+tetrahedron7 c =
+    Tetrahedron fv' v0' v1' v2' v3'
+    where
+      v0' = center c
+      v1' = center (top_face c)
+      v2' = v3 (top_face c)
+      v3' = v1 (top_face c)
+      fv' = rotate (Tetrahedron.fv (tetrahedron0 c)) cwx
+
+tetrahedrons :: Cube -> [Tetrahedron]
+tetrahedrons c =
+    [tetrahedron0 c,
+     tetrahedron1 c,
+     tetrahedron2 c,
+     tetrahedron3 c,
+     tetrahedron4 c,
+     tetrahedron5 c,
+     tetrahedron6 c,
+     tetrahedron7 c
+                -- ,
+                --  tetrahedron8 c,
+                --  tetrahedron9 c,
+                --  tetrahedron10 c,
+                --  tetrahedron11 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
+    ]