packages feed

hgeometry-0.12.0.2: hgeometry.cabal

name:                hgeometry
version:             0.12.0.2
synopsis:            Geometric Algorithms, Data structures, and Data types.
description:
  HGeometry provides some basic geometry types, and geometric algorithms and
  data structures for them. The main two focusses are: (1) Strong type safety,
  and (2) implementations of geometric algorithms and data structures with good
  asymptotic running time guarantees. Note that HGeometry is still highly experimental, don't be surprised to find bugs.

homepage:            https://fstaals.net/software/hgeometry
license:             BSD3
license-file:        LICENSE
author:              Frank Staals
maintainer:          frank@fstaals.net
-- copyright:

tested-with:         GHC >= 8.2

category:            Geometry
build-type:          Simple

extra-source-files:  README.md
                     changelog
                     changelog.org

Extra-doc-files:     docs/Data/PlaneGraph/small.png
                     -- docs/**/*.png

cabal-version:       2.0
source-repository head
  type:     git
  location: https://github.com/noinia/hgeometry

library
  ghc-options: -O2 -Wall -fno-warn-unticked-promoted-constructors -fno-warn-type-defaults

  exposed-modules:
                    -- * Primitives; Simulating General Position
                    Algorithms.Geometry.SoS
                    Algorithms.Geometry.SoS.Symbolic

                    -- * Generic Geometry
                    Data.Geometry
                    Data.Geometry.Properties
                    Data.Geometry.Transformation
                    Data.Geometry.Boundary
                    Data.Geometry.Duality
                    Data.Geometry.Directions

                    -- * Basic Geometry Types
                    Data.Geometry.Vector
                    Data.Geometry.Vector.VectorFixed
                    Data.Geometry.Vector.VectorFamily
                    Data.Geometry.Vector.VectorFamilyPeano

                    Data.Geometry.Matrix

                    -- Data.Geometry.Vector.Vinyl
                    Data.Geometry.Interval
                    Data.Geometry.Interval.Util
                    Data.Geometry.Point

                    Data.Geometry.Line
                    Data.Geometry.Line.Internal
                    Data.Geometry.LineSegment
                    Data.Geometry.LineSegment.Internal
                    Data.Geometry.SubLine
                    Data.Geometry.HalfLine
                    Data.Geometry.PolyLine
                    Data.Geometry.HyperPlane
                    Data.Geometry.HalfSpace
                    Data.Geometry.Triangle
                    -- Data.Geometry.Plane
                    Data.Geometry.Slab
                    Data.Geometry.Box
                    Data.Geometry.Box.Internal
                    Data.Geometry.Box.Sides
                    Data.Geometry.Box.Corners

                    Data.Geometry.Ball
                    Data.Geometry.Ellipse

                    Data.Geometry.Polygon
                    Data.Geometry.Polygon.Bezier
                    Data.Geometry.Polygon.Inflate
                    Data.Geometry.Polygon.Convex
                    Data.Geometry.Polygon.Monotone

                    Data.Geometry.BezierSpline

                    -- * Geometric Data Structures
                    Data.Geometry.IntervalTree
                    Data.Geometry.SegmentTree
                    Data.Geometry.SegmentTree.Generic

                    Data.Geometry.KDTree

                    Data.Geometry.PlanarSubdivision
                    Data.Geometry.PlanarSubdivision.Raw
                    Data.Geometry.PlanarSubdivision.Basic
                    Data.Geometry.PlanarSubdivision.Merge

                    Data.Geometry.Arrangement
                    Data.Geometry.Arrangement.Internal

                    Data.Geometry.RangeTree
                    Data.Geometry.RangeTree.Measure
                    Data.Geometry.RangeTree.Generic

                    Data.Geometry.PrioritySearchTree

                    Data.Geometry.QuadTree
                    Data.Geometry.QuadTree.Cell
                    Data.Geometry.QuadTree.Quadrants
                    Data.Geometry.QuadTree.Split
                    Data.Geometry.QuadTree.Tree

                    Data.Geometry.PointLocation
                    Data.Geometry.PointLocation.PersistentSweep

                    Data.Geometry.VerticalRayShooting
                    Data.Geometry.VerticalRayShooting.PersistentSweep

                    -- * Algorithms

                    -- * Geometric Algorithms
                    Algorithms.Geometry.ConvexHull
                    Algorithms.Geometry.ConvexHull.GrahamScan
                    Algorithms.Geometry.ConvexHull.DivideAndConquer
                    Algorithms.Geometry.ConvexHull.QuickHull
                    Algorithms.Geometry.ConvexHull.JarvisMarch
                    Algorithms.Geometry.ConvexHull.Naive

                    Algorithms.Geometry.LowerEnvelope.DualCH

                    Algorithms.Geometry.SmallestEnclosingBall
                    Algorithms.Geometry.SmallestEnclosingBall.RIC
                    Algorithms.Geometry.SmallestEnclosingBall.Naive

                    Algorithms.Geometry.DelaunayTriangulation.Types
                    Algorithms.Geometry.DelaunayTriangulation.DivideAndConquer
                    Algorithms.Geometry.DelaunayTriangulation.Naive

                    Algorithms.Geometry.PolyLineSimplification.DouglasPeucker

                    Algorithms.Geometry.EuclideanMST
                    Algorithms.Geometry.EuclideanMST.EuclideanMST

                    Algorithms.Geometry.WSPD
                    Algorithms.Geometry.WellSeparatedPairDecomposition.WSPD
                    Algorithms.Geometry.WellSeparatedPairDecomposition.Types

                    Algorithms.Geometry.Diameter
                    Algorithms.Geometry.Diameter.Naive
                    Algorithms.Geometry.Diameter.ConvexHull

                    -- Algorithms.Geometry.Sweep

                    Algorithms.Geometry.PolygonTriangulation.Types
                    Algorithms.Geometry.PolygonTriangulation.Triangulate
                    Algorithms.Geometry.PolygonTriangulation.MakeMonotone
                    Algorithms.Geometry.PolygonTriangulation.TriangulateMonotone
                    Algorithms.Geometry.PolygonTriangulation.EarClip

                    Algorithms.Geometry.LineSegmentIntersection
                    Algorithms.Geometry.LineSegmentIntersection.Naive
                    Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann
                    Algorithms.Geometry.LineSegmentIntersection.BooleanSweep

                    -- Algorithms.Geometry.HiddenSurfaceRemoval.HiddenSurfaceRemoval

                    Algorithms.Geometry.ClosestPair
                    Algorithms.Geometry.ClosestPair.Naive
                    Algorithms.Geometry.ClosestPair.DivideAndConquer

                    Algorithms.Geometry.LinearProgramming.Types
                    Algorithms.Geometry.LinearProgramming.LP2DRIC

                    Algorithms.Geometry.RedBlueSeparator.RIC

                    Algorithms.Geometry.FrechetDistance.Discrete

                    Algorithms.Geometry.VisibilityPolygon.Lee
                    Algorithms.Geometry.SSSP
                    Algorithms.Geometry.SSSP.Naive

                    -- * Embedded Planar Graphs
                    Data.PlaneGraph
                    Data.PlaneGraph.Core
                    Data.PlaneGraph.AdjRep
                    Data.PlaneGraph.IO

                    -- * Graphics stuff
                    Graphics.Camera
                    Graphics.Render

  other-modules:
                    Data.Geometry.Matrix.Internal

                    -- * Implementation Internals of Polygons
                    Data.Geometry.Polygon.Core
                    Data.Geometry.Polygon.Extremes
                    Algorithms.Geometry.InPolygon

                    Algorithms.Geometry.LineSegmentIntersection.Types
                    Algorithms.Geometry.SmallestEnclosingBall.Types

                    Algorithms.Geometry.WSPD.Types

                    Data.Geometry.Point.Internal
                    Data.Geometry.Point.Orientation
                    Data.Geometry.Point.Quadrants
                    Data.Geometry.Point.Orientation.Degenerate
                    Data.Geometry.Point.Class

                    Algorithms.Geometry.SoS.Expr
                    Algorithms.Geometry.SoS.AsPoint
                    Algorithms.Geometry.SoS.Internal
                    Algorithms.Geometry.SoS.Orientation
                    Algorithms.Geometry.SoS.Determinant
                    Algorithms.Geometry.SoS.Sign



  -- other-extensions:
  build-depends:
                base                    >= 4.11      &&     < 5
              , hgeometry-combinatorial >= 0.12.0.0

              , bifunctors              >= 4.1
              , bytestring              >= 0.10
              , containers              >= 0.5.9
              , dlist                   >= 0.7
              , lens                    >= 4.2
              , semigroupoids           >= 5
              , semigroups              >= 0.18
              -- , singletons              >= 2.0
              , linear                  >= 1.10
              , fixed-vector            >= 1.0
              , vector-builder          >= 0.3.7
              , vinyl                   >= 0.10
              , deepseq                 >= 1.1
              , fingertree              >= 0.1
              , MonadRandom             >= 0.5
              , random                  >= 1.1
              , QuickCheck              >= 2.5
              , quickcheck-instances    >= 0.3
              , reflection              >= 2.1
              , primitive               >= 0.6.3.0
              , hashable                >= 1.2

              -- , singleton-typelits      >= 0.1.0.0

              -- , ghc-typelits-natnormalise >= 0.6
              -- , ghc-typelits-knownnat     >= 0.6

              , vector                  >= 0.11
              , data-clist              >= 0.1.2.3
              , vector-circular         >= 0.1.2
              , nonempty-vector         >= 0.2.0.0
              , text                    >= 1.1.1.0
              , vector-algorithms

              , aeson                   >= 1.0
              , yaml                    >= 0.8

              , mtl                     >= 2.2
              , template-haskell

              , hspec, QuickCheck, quickcheck-instances


  hs-source-dirs: src

  default-language:    Haskell2010

  default-extensions: TypeFamilies
                    , GADTs
                    , KindSignatures
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , RankNTypes
                    , TypeApplications
                    , ScopedTypeVariables

                    , PatternSynonyms
                    , TupleSections
                    , LambdaCase
                    , ViewPatterns

                    , StandaloneDeriving
                    , GeneralizedNewtypeDeriving
                    , DeriveFunctor
                    , DeriveFoldable
                    , DeriveTraversable
                    , DeriveGeneric


                    , FlexibleInstances
                    , FlexibleContexts
                    , MultiParamTypeClasses

test-suite doctests
  type:          exitcode-stdio-1.0
  ghc-options:   -threaded
  main-is:       doctests.hs
  build-depends: base
               , doctest             >= 0.8
               , doctest-discover
               , QuickCheck
               , quickcheck-instances

  default-language:    Haskell2010

benchmark benchmarks

  hs-source-dirs: benchmark

  main-is: Benchmarks.hs
  type: exitcode-stdio-1.0

  other-modules: Benchmark.Util
                 Algorithms.Geometry.ConvexHull.Bench
                 Algorithms.Geometry.ConvexHull.GrahamV2
                 Algorithms.Geometry.ConvexHull.GrahamFam
                 Algorithms.Geometry.ConvexHull.GrahamFamPeano
                 Algorithms.Geometry.ConvexHull.GrahamFixed
                 Data.Geometry.Vector.VectorFamily6
                 Algorithms.Geometry.ConvexHull.GrahamFam6
                 Data.Geometry.IntervalTreeBench
                 -- Demo.ExpectedPairwiseDistance
                 -- Demo.TriangulateWorld
                 -- WSPDBench
                 Algorithms.Geometry.ClosestPair.Bench

                 Algorithms.Geometry.LineSegmentIntersection.Bench
                 Algorithms.Geometry.LineSegmentIntersection.BentleyOttmannOld

                 Algorithms.Geometry.PolygonTriangulation.Bench
                 Algorithms.Geometry.PolygonTriangulation.MakeMonotoneOld


  build-depends:
                base
              , tasty-bench
              , fixed-vector
              , linear
              , semigroups
              , deepseq
              , deepseq-generics
              , hgeometry
              , hgeometry-combinatorial
              , lens
              , semigroupoids
              , QuickCheck
              , bytestring
              , containers
              , optparse-applicative
              , vinyl
              , vector
              , dlist
              , mtl
              , vector-circular
              , MonadRandom
              , hashable


  ghc-options: -Wall -O2 -rtsopts -fno-warn-unticked-promoted-constructors

  default-language:    Haskell2010

  default-extensions: TypeFamilies
                    , GADTs
                    , KindSignatures
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , RankNTypes
                    , TypeApplications
                    , ScopedTypeVariables

                    , PatternSynonyms
                    , ViewPatterns
                    , LambdaCase
                    , TupleSections


                    , StandaloneDeriving
                    , GeneralizedNewtypeDeriving
                    , DeriveFunctor
                    , DeriveFoldable
                    , DeriveTraversable

                    , FlexibleInstances
                    , FlexibleContexts
                    , MultiParamTypeClasses