module Geometry.HCDT.Types where import Data.IntMap.Strict (IntMap) import Data.List (sort) data Triangle = Triangle Int Int Int deriving (Int -> Triangle -> ShowS [Triangle] -> ShowS Triangle -> String (Int -> Triangle -> ShowS) -> (Triangle -> String) -> ([Triangle] -> ShowS) -> Show Triangle forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Triangle] -> ShowS $cshowList :: [Triangle] -> ShowS show :: Triangle -> String $cshow :: Triangle -> String showsPrec :: Int -> Triangle -> ShowS $cshowsPrec :: Int -> Triangle -> ShowS Show, ReadPrec [Triangle] ReadPrec Triangle Int -> ReadS Triangle ReadS [Triangle] (Int -> ReadS Triangle) -> ReadS [Triangle] -> ReadPrec Triangle -> ReadPrec [Triangle] -> Read Triangle forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [Triangle] $creadListPrec :: ReadPrec [Triangle] readPrec :: ReadPrec Triangle $creadPrec :: ReadPrec Triangle readList :: ReadS [Triangle] $creadList :: ReadS [Triangle] readsPrec :: Int -> ReadS Triangle $creadsPrec :: Int -> ReadS Triangle Read) instance Eq Triangle where Triangle Int i Int j Int k == :: Triangle -> Triangle -> Bool == Triangle Int i' Int j' Int k' = [Int] -> [Int] forall a. Ord a => [a] -> [a] sort [Int i, Int j, Int k] [Int] -> [Int] -> Bool forall a. Eq a => a -> a -> Bool == [Int] -> [Int] forall a. Ord a => [a] -> [a] sort [Int i', Int j', Int k'] data Edge = Edge Int Int deriving (Int -> Edge -> ShowS [Edge] -> ShowS Edge -> String (Int -> Edge -> ShowS) -> (Edge -> String) -> ([Edge] -> ShowS) -> Show Edge forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Edge] -> ShowS $cshowList :: [Edge] -> ShowS show :: Edge -> String $cshow :: Edge -> String showsPrec :: Int -> Edge -> ShowS $cshowsPrec :: Int -> Edge -> ShowS Show, ReadPrec [Edge] ReadPrec Edge Int -> ReadS Edge ReadS [Edge] (Int -> ReadS Edge) -> ReadS [Edge] -> ReadPrec Edge -> ReadPrec [Edge] -> Read Edge forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [Edge] $creadListPrec :: ReadPrec [Edge] readPrec :: ReadPrec Edge $creadPrec :: ReadPrec Edge readList :: ReadS [Edge] $creadList :: ReadS [Edge] readsPrec :: Int -> ReadS Edge $creadsPrec :: Int -> ReadS Edge Read) instance Eq Edge where Edge Int i Int j == :: Edge -> Edge -> Bool == Edge Int i' Int j' = (Int i Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int i' Bool -> Bool -> Bool && Int j Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int j') Bool -> Bool -> Bool || (Int i Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int j' Bool -> Bool -> Bool && Int j Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int i') data Vertex = Vertex Double Double deriving (Int -> Vertex -> ShowS [Vertex] -> ShowS Vertex -> String (Int -> Vertex -> ShowS) -> (Vertex -> String) -> ([Vertex] -> ShowS) -> Show Vertex forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Vertex] -> ShowS $cshowList :: [Vertex] -> ShowS show :: Vertex -> String $cshow :: Vertex -> String showsPrec :: Int -> Vertex -> ShowS $cshowsPrec :: Int -> Vertex -> ShowS Show, Vertex -> Vertex -> Bool (Vertex -> Vertex -> Bool) -> (Vertex -> Vertex -> Bool) -> Eq Vertex forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Vertex -> Vertex -> Bool $c/= :: Vertex -> Vertex -> Bool == :: Vertex -> Vertex -> Bool $c== :: Vertex -> Vertex -> Bool Eq) data Triangulation = Triangulation { Triangulation -> IntMap Vertex _vertices :: IntMap Vertex , Triangulation -> [Triangle] _triangles :: [Triangle] , Triangulation -> [Edge] _edges :: [Edge] } deriving Int -> Triangulation -> ShowS [Triangulation] -> ShowS Triangulation -> String (Int -> Triangulation -> ShowS) -> (Triangulation -> String) -> ([Triangulation] -> ShowS) -> Show Triangulation forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Triangulation] -> ShowS $cshowList :: [Triangulation] -> ShowS show :: Triangulation -> String $cshow :: Triangulation -> String showsPrec :: Int -> Triangulation -> ShowS $cshowsPrec :: Int -> Triangulation -> ShowS Show data ConstrainedTriangulation = ConstrainedTriangulation { ConstrainedTriangulation -> Triangulation _triangulation :: Triangulation , ConstrainedTriangulation -> [Edge] _fixedEdges :: [Edge] } deriving Int -> ConstrainedTriangulation -> ShowS [ConstrainedTriangulation] -> ShowS ConstrainedTriangulation -> String (Int -> ConstrainedTriangulation -> ShowS) -> (ConstrainedTriangulation -> String) -> ([ConstrainedTriangulation] -> ShowS) -> Show ConstrainedTriangulation forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ConstrainedTriangulation] -> ShowS $cshowList :: [ConstrainedTriangulation] -> ShowS show :: ConstrainedTriangulation -> String $cshow :: ConstrainedTriangulation -> String showsPrec :: Int -> ConstrainedTriangulation -> ShowS $cshowsPrec :: Int -> ConstrainedTriangulation -> ShowS Show