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,
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)
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)
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
+ ]