{-# LANGUAGE ScopedTypeVariables  #-}
{-# LANGUAGE UndecidableInstances #-}
module Data.Geometry.Point( Point(..)
                          , origin, vector
                          , pointFromList
                          , projectPoint
                          , pattern Point1
                          , pattern Point2
                          , pattern Point3
                          , xCoord, yCoord, zCoord
                          , PointFunctor(..)
                          , CCW, ccw, ccw'
                          , pattern CCW, pattern CW, pattern CoLinear
                          , ccwCmpAround, cwCmpAround, ccwCmpAroundWith, cwCmpAroundWith
                          , sortAround, insertIntoCyclicOrder
                          , Quadrant(..), quadrantWith, quadrant, partitionIntoQuadrants
                          , cmpByDistanceTo
                          , squaredEuclideanDist, euclideanDist
                          , AsAPoint(..), coord, unsafeCoord, vector'
                          ) where
import Data.Geometry.Point.Class
import Data.Geometry.Point.Internal hiding (coord, unsafeCoord)
import Data.Geometry.Point.Orientation.Degenerate
import Data.Geometry.Point.Quadrants