packages feed

qhull-0.1.0.1: src/ConvexHull/BiTruncatedTesseract.hs

module ConvexHull.BiTruncatedTesseract
  where
import Math.Combinat.Permutations as P
import Data.List

signsAll :: (Eq a, Num a) => [[a]] -> [[a]]
signsAll = concatMap signs
  where
  signs :: (Eq a, Num a) => [a] -> [[a]]
  signs = mapM (\x -> nub [x,-x])
  

vertices :: ([Double], Bool) -> [[Double]]
vertices (coords, allperms) =
  map (map (/ sqrt 18)) $ signsAll $
  nub $ zipWith permuteList perms (replicate 24 coords)
  where perms = filter (if allperms then const True else isEvenPermutation) (P.permutations 4)


biTruncatedTesseract :: [[Double]]
biTruncatedTesseract = concatMap vertices 
  [ ([0, sqrt 2, 2 * sqrt 2, 2 * sqrt 2], True) ]