module KappaView where import System.Environment (getArgs) import Data.Maybe (isJust, fromJust ) import Diagrams (QDiagram) import Diagrams.TwoD.Types (V2) import Diagrams.TwoD.Size (mkHeight) import Diagrams.Backend.SVG (renderSVG, B) import Data.Monoid (Any) import Control.Monad (forM_) import Braids (Braid) import Kappa (computeKappa') import Parse import Braiddiagrams import qualified Data.Map as M (keys) main :: IO () main = do input <- getArgs let braid = parse input let imagesNumbered = zip (images braid) [1..] let maybeKappa = computeKappa' braid if isJust maybeKappa then do putStrLn ("Kappa is " ++ (show . fst . fromJust $ maybeKappa) ++ ".") forM_ imagesNumbered (\(image, number) -> renderSVG ("psiKiller" ++ (show number) ++ ".svg") (mkHeight 2000) image >> putStrLn ("Canceling element printed to psiKiller" ++ (show number) ++ ".svg.") ) else putStrLn "Psi does not vanish for this braid." images :: Braid -> [QDiagram B V2 Double Any] images b = fmap (printCube . bigGeneratorD b) gens where Just (_, mors) = computeKappa' b gens = M.keys $ mors