braid-0.1.0.0: app/KappaView.hs
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