module Algorithms.Geometry.LineSegmentIntersection where import qualified Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann as BO import Data.Geometry.LineSegment import Data.Geometry.Polygon -- Tests if there are any interior intersections. -- -- | \(O(n \log n)\) hasInteriorIntersections :: (Ord r, Fractional r) => [LineSegment 2 p r] -> Bool hasInteriorIntersections = not . null . BO.interiorIntersections -- | \(O(n \log n)\) hasSelfIntersections :: (Ord r, Fractional r) => Polygon t p r -> Bool hasSelfIntersections = hasInteriorIntersections . listEdges