úÎ]tTÊ      "A triple-stack convenience monad. ch.howard@zoho.comNone{ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰ŠProduces random walk data. ch.howard@zoho.comNone‹6Produces an infinite lazy list of random walk points. Œ‹the jitter factor first (starting) point a random number generator ‹Œ‹Array utility functions ch.howard@zoho.comNone Ž‘’“”•– Ž‘’“”•– Ž‘’“”•– 1Creating and adding application-relevant arrays. ch.howard@zoho.comNone—˜™š›œ›œ—˜™š›œ1Converting an array of floats into a PLY surface ch.howard@zoho.comNoneEConverts a 2D array of floats into a sheet of polygons, which can be  processed by toPly. IConverts a Surface data structure, which is a sheet of polygons, into an  ascii-format PLY file. žŸ ¡¢£¤¥¦§ žŸ ¡¢£¤¥¦§ABrings together the random walk and graph stamping functionaliy. ch.howard@zoho.comNoneIBeginning in the center, follows a random walk path, and stamps a circle L shape onto the array at each step. Internally uses a mutable unboxed array < for efficiency, but returns the results in a frozen array. AAdjust each float value in a UArray by some random value between  negative delta and delta. LFrom each pair of corresponding points on the two input UArrays, select the M the higher point, to create a new UArray. The two arrays must have the same  bounds, or an error is thrown. height (array rows) width (array columns) stamped circle radius 9jitter factor of walk, usually nearly the same as radius -a seed value for the random number generator (numbers of steps to take in random walk magnification factor starting point delta 'seed value for random number generator  input UArray 'For converting array data into images. ch.howard@zoho.comNoneFA type of function converting a floating point data value into a color's  ByteString >Determines the minimum and maximum values in a data structure LColor interpretation of data as a variation of on the lightness of a single  hue IConverts an array of floating point values into a Gloss Picture, using a  color Interpretation ¨"Hue in degrees, between 0 and 360 $the lowest and highest data values, & needed for the lightness calculation   ¨ @Convience wrappers to display a 2D Gloss Picture on the screen. ch.howard@zoho.comNone  Displays a © in a window on the screen.  Display a ©$ on the screen, in full-screen mode  %width and height of the display area background color  window title Picture to be displayed %width and height of the display area background color Picture to be dislayed    9Provides code examples which can be studied or executed. ch.howard@zoho.comNone JGenerates an example random walk array and displays it as a 2-dimensional  intensity graph   example2D :: IO()  example2D = do putStrLn "4Generating the graph. This may take a minute or two."  a <'- graph height width radius walkfactor E seed iterations scalefactor startingpoint 4 displayWindow (width, height) black "Mars" D (toImage a (lightnessInt hue (minMax (elems a)))) & where (width, height) = (300, 300)  radius = 30  walkfactor = 30  seed = 54844  hue = 272  iterations = 300  scalefactor = 1 " startingpoint = (0, -80)  LGenerates a random walk array, converts it PLY ascii format, and output the  PLY to a file called "out.ply".   examplePly :: IO ()  examplePly = do putStrLn "4Generating the graph. This may take a minute or two."  a <'- graph height width radius walkfactor F seed iterations scalefactor startingpoint  writeFile "out.ply" $ (toPly . surface) a  putStrLn " The file 'out.ply'! has been created in the current \  \working directory." & where (width, height) = (300, 300)  radius = 30  walkfactor = 30  seed = 54844  iterations = 300  scalefactor = 1 " startingpoint = (0, -80) KSimilar to examplePly2, but generates two graphs and merges them together.   examplePly2 :: IO ()  examplePly2 = do putStrLn "1Generating two graphs and merging them. This may \  \take a few minutes."  a1 <'- graph height width radius walkfactor J seed1 iterations scalefactor startingpoint1  a2 <'- graph height width radius walkfactor J seed2 iterations scalefactor startingpoint2 , let a3 = meldGraphs a1 a2 3 let a4 = zRandomize 0.5 seed3 a3  writeFile "out2.ply" $ (toPly . surface) a4  putStrLn " The file 'out2.ply'! has been created in the current \  \working directory." & where (width, height) = (300, 300)  radius = 30  walkfactor = 30  iterations = 200  scalefactor = 1  seed1 = 3939423948 ! startingpoint1 = (0, 0)  seed2 = 34209809 % startingpoint2 = (100, 100)  seed3 = 87484853049     ª     !" !# !$ !% !& '( )* )+ !, !- '. )/ 01 )2 )3 )4 )5 )6 )7 )8 )9 ): ); )< )= )> )? )@ )A )B )C )D )E )F )G )H )I )J )K )L )M )N )O )PQRSQRTQRUQRVQRWQRXQRYQRZQR[QR\QR]QR^QR_QR`QRaQRbQRcdefdghdijklmklnkopdeqkordstdgudevwxywxzwx{wx|wx}wx~wxw€w€‚w€ƒw€„w€…w€†w€‡w€ˆw€‰w€Šw€‹deŒdevdediŽklklde‘de’de“de”de•de–de—kl˜kl™klšds›dstdsœkokoždsŸds ds¡ds¢ds£ko¤¥¦§¨©ª«¬­®¯° ± ² ³ ´ µ ¶ · ¸¸¹¹º»¼½¾¿ÀÁÂà mars-0.2.1.0Graphics.Mars.PlyGraphics.Mars.GraphGraphics.Mars.PaintGraphics.Mars.Display2DGraphics.Mars.ExampleGraphics.Mars.ReaderStateRandomGraphics.Mars.WalkGraphics.Mars.ArrayGraphics.Mars.StampSurfacesurfacetoPlygraph zRandomize meldGraphsInterpretationminMax lightnessInttoImage displayWindowdisplayFullscreen example2D examplePly examplePly2ReaderStateRandomRSRrSRrunRSRevalRSRexecRSR$fMonadRandomReaderStateRandombaseGHC.Basefail>>=>>fmapreturnControl.Monad.Fixmfix Control.MonadguardliftMMonadFunctorMonadFix MonadPlus Data.FunctionfixmfilterapliftM5liftM4liftM3liftM2unlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinvoidforever<=<>=>msumforM_forMfilterMmapM_mapM sequence_sequence=<<mplusmzerorandom-1.0.1.1 System.Random getStdRandom newStdGen getStdGen setStdGenmkStdGensplitgenRangenext RandomGenStdGenrandomIO randomRIOrandomsrandomRsrandomrandomRRandomtransformers-0.5.2.0Control.Monad.Trans.State.Lazy evalStateTControl.Monad.IO.ClassliftIOControl.Monad.Trans.Class MonadTrans mtl-2.2.1Control.Monad.State.Classput MonadStateControl.Monad.Reader.Classlocal mapStateT MonadReaderControl.Monad.Trans.ReaderReaderTMonadIOStateTMonadRandom-0.4.2.3Control.Monad.Random.ClassgetSplit MonadSplit getRandoms getRandomRs getRandomR getRandom MonadRandomControl.Monad.RandomRandTRanduniformrunRandTrunRand liftRandTliftRandfromList evalRandT evalRandIOevalRand runStateTStateliftstateget withStateT withStaterunStatemapState execStateT execState evalStatemodify'modifygets runReaderTReaderreaderask withReaderT withReader runReader mapReaderT mapReaderaskswalk RandomWalkstep safeReadArrayboundedWriteArrayboundedWriteArrayLboundedTransformboundedTransformL rightEdge bottomEdge linearIndexwidthMetricPoint euclidean semiCircle circleStampstampstampLFaceVertexverticesfacesheader asciiVertices asciiFaces ratioToByte gloss-1.7.8.3Graphics.Gloss.Data.PicturePicture