top_face cube = Face.Face v0' v1' v2' v3'
where
delta = (1/2)*(h cube)
- v0' = (center cube) + (delta, -delta, delta)
- v1' = (center cube) + (delta, delta, delta)
- v2' = (center cube) + (-delta, delta, delta)
- v3' = (center cube) + (-delta, -delta, delta)
+ cc = center cube
+ v0' = cc + (delta, -delta, delta)
+ v1' = cc + (delta, delta, delta)
+ v2' = cc + (-delta, delta, delta)
+ v3' = cc + (-delta, -delta, delta)
back_face cube = Face.Face v0' v1' v2' v3'
where
delta = (1/2)*(h cube)
- v0' = (center cube) + (delta, -delta, -delta)
- v1' = (center cube) + (delta, delta, -delta)
- v2' = (center cube) + (delta, delta, delta)
- v3' = (center cube) + (delta, -delta, delta)
+ cc = center cube
+ v0' = cc + (delta, -delta, -delta)
+ v1' = cc + (delta, delta, -delta)
+ v2' = cc + (delta, delta, delta)
+ v3' = cc + (delta, -delta, delta)
-- The bottom face (in the direction of -z) of the cube.
down_face cube = Face.Face v0' v1' v2' v3'
where
delta = (1/2)*(h cube)
- v0' = (center cube) + (-delta, -delta, -delta)
- v1' = (center cube) + (-delta, delta, -delta)
- v2' = (center cube) + (delta, delta, -delta)
- v3' = (center cube) + (delta, -delta, -delta)
+ cc = center cube
+ v0' = cc + (-delta, -delta, -delta)
+ v1' = cc + (-delta, delta, -delta)
+ v2' = cc + (delta, delta, -delta)
+ v3' = cc + (delta, -delta, -delta)
front_face cube = Face.Face v0' v1' v2' v3'
where
delta = (1/2)*(h cube)
- v0' = (center cube) + (-delta, -delta, delta)
- v1' = (center cube) + (-delta, delta, delta)
- v2' = (center cube) + (-delta, delta, -delta)
- v3' = (center cube) + (-delta, -delta, -delta)
+ cc = center cube
+ v0' = cc + (-delta, -delta, delta)
+ v1' = cc + (-delta, delta, delta)
+ v2' = cc + (-delta, delta, -delta)
+ v3' = cc + (-delta, -delta, -delta)
-- | The left (in the direction of -y) face of the cube.
left_face :: Cube -> Face.Face
left_face cube = Face.Face v0' v1' v2' v3'
where
delta = (1/2)*(h cube)
- v0' = (center cube) + (delta, -delta, delta)
- v1' = (center cube) + (-delta, -delta, delta)
- v2' = (center cube) + (-delta, -delta, -delta)
- v3' = (center cube) + (delta, -delta, -delta)
+ cc = center cube
+ v0' = cc + (delta, -delta, delta)
+ v1' = cc + (-delta, -delta, delta)
+ v2' = cc + (-delta, -delta, -delta)
+ v3' = cc + (delta, -delta, -delta)
-- | The right (in the direction of y) face of the cube.
right_face cube = Face.Face v0' v1' v2' v3'
where
delta = (1/2)*(h cube)
- v0' = (center cube) + (-delta, delta, delta)
- v1' = (center cube) + (delta, delta, delta)
- v2' = (center cube) + (delta, delta, -delta)
- v3' = (center cube) + (-delta, delta, -delta)
+ cc = center cube
+ v0' = cc + (-delta, delta, delta)
+ v1' = cc + (delta, delta, delta)
+ v2' = cc + (delta, delta, -delta)
+ v3' = cc + (-delta, delta, -delta)
tetrahedron :: Cube -> Int -> Tetrahedron
Tetrahedron (fv cube) v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (front_face cube)
- v2' = Face.v0 (front_face cube)
- v3' = Face.v1 (front_face cube)
+ ff = front_face cube
+ v1' = center ff
+ v2' = Face.v0 ff
+ v3' = Face.v1 ff
vol = tetrahedra_volume cube
tetrahedron cube 1 =
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (front_face cube)
- v2' = Face.v1 (front_face cube)
- v3' = Face.v2 (front_face cube)
+ ff = front_face cube
+ v1' = center ff
+ v2' = Face.v1 ff
+ v3' = Face.v2 ff
fv' = rotate ccwx (fv cube)
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (front_face cube)
- v2' = Face.v2 (front_face cube)
- v3' = Face.v3 (front_face cube)
+ ff = front_face cube
+ v1' = center ff
+ v2' = Face.v2 ff
+ v3' = Face.v3 ff
fv' = rotate ccwx $ rotate ccwx $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (front_face cube)
- v2' = Face.v3 (front_face cube)
- v3' = Face.v0 (front_face cube)
+ ff = front_face cube
+ v1' = center ff
+ v2' = Face.v3 ff
+ v3' = Face.v0 ff
fv' = rotate cwx (fv cube)
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (top_face cube)
- v2' = Face.v0 (top_face cube)
- v3' = Face.v1 (top_face cube)
+ tf = top_face cube
+ v1' = center tf
+ v2' = Face.v0 tf
+ v3' = Face.v1 tf
fv' = rotate cwy (fv cube)
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (top_face cube)
- v2' = Face.v1 (top_face cube)
- v3' = Face.v2 (top_face cube)
+ tf = top_face cube
+ v1' = center tf
+ v2' = Face.v1 tf
+ v3' = Face.v2 tf
fv' = rotate cwy $ rotate cwz $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (top_face cube)
- v2' = Face.v2 (top_face cube)
- v3' = Face.v3 (top_face cube)
+ tf = top_face cube
+ v1' = center tf
+ v2' = Face.v2 tf
+ v3' = Face.v3 tf
fv' = rotate cwy $ rotate cwz
$ rotate cwz
$ fv cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (top_face cube)
- v2' = Face.v3 (top_face cube)
- v3' = Face.v0 (top_face cube)
+ tf = top_face cube
+ v1' = center tf
+ v2' = Face.v3 tf
+ v3' = Face.v0 tf
fv' = rotate cwy $ rotate ccwz $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (back_face cube)
- v2' = Face.v0 (back_face cube)
- v3' = Face.v1 (back_face cube)
+ bf = back_face cube
+ v1' = center bf
+ v2' = Face.v0 bf
+ v3' = Face.v1 bf
fv' = rotate cwy $ rotate cwy $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (back_face cube)
- v2' = Face.v1 (back_face cube)
- v3' = Face.v2 (back_face cube)
+ bf = back_face cube
+ v1' = center bf
+ v2' = Face.v1 bf
+ v3' = Face.v2 bf
fv' = rotate cwy $ rotate cwy
$ rotate cwx
$ fv cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (back_face cube)
- v2' = Face.v2 (back_face cube)
- v3' = Face.v3 (back_face cube)
+ bf = back_face cube
+ v1' = center bf
+ v2' = Face.v2 bf
+ v3' = Face.v3 bf
fv' = rotate cwy $ rotate cwy
$ rotate cwx
$ rotate cwx
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (back_face cube)
- v2' = Face.v3 (back_face cube)
- v3' = Face.v0 (back_face cube)
+ bf = back_face cube
+ v1' = center bf
+ v2' = Face.v3 bf
+ v3' = Face.v0 bf
fv' = rotate cwy $ rotate cwy
$ rotate ccwx
$ fv cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (down_face cube)
- v2' = Face.v0 (down_face cube)
- v3' = Face.v1 (down_face cube)
+ df = down_face cube
+ v1' = center df
+ v2' = Face.v0 df
+ v3' = Face.v1 df
fv' = rotate ccwy $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (down_face cube)
- v2' = Face.v1 (down_face cube)
- v3' = Face.v2 (down_face cube)
+ df = down_face cube
+ v1' = center df
+ v2' = Face.v1 df
+ v3' = Face.v2 df
fv' = rotate ccwy $ rotate ccwz $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (down_face cube)
- v2' = Face.v2 (down_face cube)
- v3' = Face.v3 (down_face cube)
+ df = down_face cube
+ v1' = center df
+ v2' = Face.v2 df
+ v3' = Face.v3 df
fv' = rotate ccwy $ rotate ccwz
$ rotate ccwz
$ fv cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (down_face cube)
- v2' = Face.v3 (down_face cube)
- v3' = Face.v0 (down_face cube)
+ df = down_face cube
+ v1' = center df
+ v2' = Face.v3 df
+ v3' = Face.v0 df
fv' = rotate ccwy $ rotate cwz $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (right_face cube)
- v2' = Face.v0 (right_face cube)
- v3' = Face.v1 (right_face cube)
+ rf = right_face cube
+ v1' = center rf
+ v2' = Face.v0 rf
+ v3' = Face.v1 rf
fv' = rotate ccwz $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (right_face cube)
- v2' = Face.v1 (right_face cube)
- v3' = Face.v2 (right_face cube)
+ rf = right_face cube
+ v1' = center rf
+ v2' = Face.v1 rf
+ v3' = Face.v2 rf
fv' = rotate ccwz $ rotate cwy $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (right_face cube)
- v2' = Face.v2 (right_face cube)
- v3' = Face.v3 (right_face cube)
+ rf = right_face cube
+ v1' = center rf
+ v2' = Face.v2 rf
+ v3' = Face.v3 rf
fv' = rotate ccwz $ rotate cwy
$ rotate cwy
$ fv cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (right_face cube)
- v2' = Face.v3 (right_face cube)
- v3' = Face.v0 (right_face cube)
+ rf = right_face cube
+ v1' = center rf
+ v2' = Face.v3 rf
+ v3' = Face.v0 rf
fv' = rotate ccwz $ rotate ccwy
$ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (left_face cube)
- v2' = Face.v0 (left_face cube)
- v3' = Face.v1 (left_face cube)
+ lf = left_face cube
+ v1' = center lf
+ v2' = Face.v0 lf
+ v3' = Face.v1 lf
fv' = rotate cwz $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (left_face cube)
- v2' = Face.v1 (left_face cube)
- v3' = Face.v2 (left_face cube)
+ lf = left_face cube
+ v1' = center lf
+ v2' = Face.v1 lf
+ v3' = Face.v2 lf
fv' = rotate cwz $ rotate ccwy $ fv cube
vol = tetrahedra_volume cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (left_face cube)
- v2' = Face.v2 (left_face cube)
- v3' = Face.v3 (left_face cube)
+ lf = left_face cube
+ v1' = center lf
+ v2' = Face.v2 lf
+ v3' = Face.v3 lf
fv' = rotate cwz $ rotate ccwy
$ rotate ccwy
$ fv cube
Tetrahedron fv' v0' v1' v2' v3' vol
where
v0' = center cube
- v1' = center (left_face cube)
- v2' = Face.v3 (left_face cube)
- v3' = Face.v0 (left_face cube)
+ lf = left_face cube
+ v1' = center lf
+ v2' = Face.v3 lf
+ v3' = Face.v0 lf
fv' = rotate cwz $ rotate cwy
$ fv cube
vol = tetrahedra_volume cube