-- | Visibility on the 2D plane.
-- Uses an instance of Warnocks algorithm.
-- TODO: animate the line segments, make them spin and move around so we can see
-- that it's a dynamic visiblity algorithm -- not pre-computed.
-- Draw lines in random shades of color depending on the index.
-- Make a key to swap between rectangular and polar projections.
-- Allow viewpoint to be set with the mouse.
--
-- TODO: To start with just do brute force visibility by dividing field into cells
-- and doing vis based on center point of cell.
--
import Interface
import Draw
import State
import World
import Graphics.Gloss.Interface.Pure.Game
main :: IO ()
main
= do world <- initialWorld
let state = initialState world
play (InWindow "Visibility" (800, 800) (10, 10))
black 100 state
drawState handleInput stepState