--- Imports --- import Goal.Core import Goal.Geometry --- Program --- -- Globals -- mxx = pi mnx = -pi mxy = pi mny = -pi nstps = 10 npnts = 50 axprms = LinearAxisParams (show . round) 5 5 hlns = [ [ [x,y] | x <- range mnx mxx npnts ] | y <- range mnx mxx nstps ] vlns = [ [ [x,y] | y <- range mny mxy npnts ] | x <- range mny mxy nstps ] lns0 = hlns ++ vlns eclds = map euclideanPoint <$> lns0 plrs = map (chart Cartesian . transition . chart Polar . fromList (Euclidean 2)) <$> lns0 layoutMaker lns = execEC $ do layout_x_axis . laxis_override .= axisGridHide layout_x_axis . laxis_generate .= scaledAxis axprms (-2,2) layout_x_axis . laxis_title .= "x" layout_y_axis . laxis_override .= axisGridHide layout_y_axis . laxis_generate .= scaledAxis axprms (-2,2) layout_y_axis . laxis_title .= "y" plot . liftEC $ do plot_lines_values .= (map toPair <$> lns) plot_lines_style .= solidLine 3 (opaque black) -- Main -- main = do let lyt1 = layoutMaker eclds lyt2 = layoutMaker plrs rnbl = toRenderable $ StackedLayouts [StackedLayout lyt1, StackedLayout lyt2] False --renderableToAspectWindow False 400 800 rnbl void $ renderableToFile (FileOptions (200,400) PDF) "coordinates.pdf" rnbl