packages feed

hcdt-0.1.0.0: src/Geometry/HCDT/Types.hs

module Geometry.HCDT.Types
  where
import           Data.IntMap.Strict (IntMap)
import           Data.List          (sort)

data Triangle = Triangle Int Int Int 
  deriving (Show, Read)
instance Eq Triangle where
    Triangle i j k == Triangle i' j' k' = sort [i, j, k] == sort [i', j', k']

data Edge = Edge Int Int
  deriving (Show, Read)
instance Eq Edge where
    Edge i j == Edge i' j' = (i == i' && j == j') || (i == j' && j == i')

data Vertex = Vertex Double Double
  deriving (Show, Eq)

data Triangulation = Triangulation {
    _vertices  :: IntMap Vertex
  , _triangles :: [Triangle]
  , _edges     :: [Edge]
} deriving Show

data ConstrainedTriangulation = ConstrainedTriangulation {
    _triangulation :: Triangulation
  , _fixedEdges    :: [Edge]
} deriving Show