hgeometry 0.12.0.3 → 0.12.0.4
raw patch · 4 files changed
+147/−7 lines, 4 filesdep +witherabledep ~hgeometry-combinatorialdep ~vector-builderPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: witherable
Dependency ranges changed: hgeometry-combinatorial, vector-builder
API changes (from Hackage documentation)
- Data.Geometry.LineSegment: isValid :: Ord a => Range a -> Bool
- Data.Geometry.LineSegment.Internal: isValid :: Ord a => Range a -> Bool
+ Algorithms.Geometry.PolyLineSimplification.ImaiIri: simplify :: (Ord r, Fractional r, Arity d) => r -> PolyLine d p r -> PolyLine d p r
+ Algorithms.Geometry.PolyLineSimplification.ImaiIri: simplifyWith :: (LineSegment d p r -> PolyLine d p r -> Bool) -> PolyLine d p r -> PolyLine d p r
+ Data.Geometry.LineSegment: isValidRange :: Ord a => Range a -> Bool
+ Data.Geometry.LineSegment.Internal: isValidRange :: Ord a => Range a -> Bool
- Algorithms.Geometry.LinearProgramming.Types: _NoSolution :: forall d_a2EsL r_a2EsM. Prism' (LPSolution d_a2EsL r_a2EsM) ()
+ Algorithms.Geometry.LinearProgramming.Types: _NoSolution :: forall d_a2EMQ r_a2EMR. Prism' (LPSolution d_a2EMQ r_a2EMR) ()
- Algorithms.Geometry.LinearProgramming.Types: _Single :: forall d_a2EsL r_a2EsM. Prism' (LPSolution d_a2EsL r_a2EsM) (Point d_a2EsL r_a2EsM)
+ Algorithms.Geometry.LinearProgramming.Types: _Single :: forall d_a2EMQ r_a2EMR. Prism' (LPSolution d_a2EMQ r_a2EMR) (Point d_a2EMQ r_a2EMR)
- Algorithms.Geometry.LinearProgramming.Types: _UnBounded :: forall d_a2EsL r_a2EsM. Prism' (LPSolution d_a2EsL r_a2EsM) (HalfLine d_a2EsL r_a2EsM)
+ Algorithms.Geometry.LinearProgramming.Types: _UnBounded :: forall d_a2EMQ r_a2EMR. Prism' (LPSolution d_a2EMQ r_a2EMR) (HalfLine d_a2EMQ r_a2EMR)
- Algorithms.Geometry.LinearProgramming.Types: constraints :: forall d_a2EtX r_a2EtY. Lens' (LinearProgram d_a2EtX r_a2EtY) [HalfSpace d_a2EtX r_a2EtY]
+ Algorithms.Geometry.LinearProgramming.Types: constraints :: forall d_a2EO2 r_a2EO3. Lens' (LinearProgram d_a2EO2 r_a2EO3) [HalfSpace d_a2EO2 r_a2EO3]
- Algorithms.Geometry.LinearProgramming.Types: objective :: forall d_a2EtX r_a2EtY. Lens' (LinearProgram d_a2EtX r_a2EtY) (Vector d_a2EtX r_a2EtY)
+ Algorithms.Geometry.LinearProgramming.Types: objective :: forall d_a2EO2 r_a2EO3. Lens' (LinearProgram d_a2EO2 r_a2EO3) (Vector d_a2EO2 r_a2EO3)
- Algorithms.Geometry.SmallestEnclosingBall: definingPoints :: forall p_a2J1x r_a2J1y p_a2Jkd. Lens (DiskResult p_a2J1x r_a2J1y) (DiskResult p_a2Jkd r_a2J1y) (TwoOrThree ((:+) (Point 2 r_a2J1y) p_a2J1x)) (TwoOrThree ((:+) (Point 2 r_a2J1y) p_a2Jkd))
+ Algorithms.Geometry.SmallestEnclosingBall: definingPoints :: forall p_a2JlL r_a2JlM p_a2JEs. Lens (DiskResult p_a2JlL r_a2JlM) (DiskResult p_a2JEs r_a2JlM) (TwoOrThree ((:+) (Point 2 r_a2JlM) p_a2JlL)) (TwoOrThree ((:+) (Point 2 r_a2JlM) p_a2JEs))
- Algorithms.Geometry.SmallestEnclosingBall: enclosingDisk :: forall p_a2J1x r_a2J1y. Lens' (DiskResult p_a2J1x r_a2J1y) (Disk () r_a2J1y)
+ Algorithms.Geometry.SmallestEnclosingBall: enclosingDisk :: forall p_a2JlL r_a2JlM. Lens' (DiskResult p_a2JlL r_a2JlM) (Disk () r_a2JlM)
- Algorithms.Geometry.WSPD: nodeData :: forall d_a2A1u r_a2A1v a_a2A1w a_a2A6d. Lens (NodeData d_a2A1u r_a2A1v a_a2A1w) (NodeData d_a2A1u r_a2A1v a_a2A6d) a_a2A1w a_a2A6d
+ Algorithms.Geometry.WSPD: nodeData :: forall d_a2A3P r_a2A3Q a_a2A3R a_a2A8y. Lens (NodeData d_a2A3P r_a2A3Q a_a2A3R) (NodeData d_a2A3P r_a2A3Q a_a2A8y) a_a2A3R a_a2A8y
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: bBox :: forall d_a2A1u r_a2A1v a_a2A1w d_a2A6b r_a2A6c. Lens (NodeData d_a2A1u r_a2A1v a_a2A1w) (NodeData d_a2A6b r_a2A6c a_a2A1w) (Box d_a2A1u () r_a2A1v) (Box d_a2A6b () r_a2A6c)
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: bBox :: forall d_a2A3P r_a2A3Q a_a2A3R d_a2A8w r_a2A8x. Lens (NodeData d_a2A3P r_a2A3Q a_a2A3R) (NodeData d_a2A8w r_a2A8x a_a2A3R) (Box d_a2A3P () r_a2A3Q) (Box d_a2A8w () r_a2A8x)
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: leftPart :: forall d_a2Aio r_a2Aip p_a2Aiq. Lens' (FindAndCompact d_a2Aio r_a2Aip p_a2Aiq) (Seq ((:+) (Point d_a2Aio r_a2Aip) p_a2Aiq))
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: leftPart :: forall d_a2AkJ r_a2AkK p_a2AkL. Lens' (FindAndCompact d_a2AkJ r_a2AkK p_a2AkL) (Seq ((:+) (Point d_a2AkJ r_a2AkK) p_a2AkL))
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: nodeData :: forall d_a2A1u r_a2A1v a_a2A1w a_a2A6d. Lens (NodeData d_a2A1u r_a2A1v a_a2A1w) (NodeData d_a2A1u r_a2A1v a_a2A6d) a_a2A1w a_a2A6d
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: nodeData :: forall d_a2A3P r_a2A3Q a_a2A3R a_a2A8y. Lens (NodeData d_a2A3P r_a2A3Q a_a2A3R) (NodeData d_a2A3P r_a2A3Q a_a2A8y) a_a2A3R a_a2A8y
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: rightPart :: forall d_a2Aio r_a2Aip p_a2Aiq. Lens' (FindAndCompact d_a2Aio r_a2Aip p_a2Aiq) (Seq ((:+) (Point d_a2Aio r_a2Aip) p_a2Aiq))
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: rightPart :: forall d_a2AkJ r_a2AkK p_a2AkL. Lens' (FindAndCompact d_a2AkJ r_a2AkK p_a2AkL) (Seq ((:+) (Point d_a2AkJ r_a2AkK) p_a2AkL))
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: shortSide :: forall d_a2Aio r_a2Aip p_a2Aiq. Lens' (FindAndCompact d_a2Aio r_a2Aip p_a2Aiq) ShortSide
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: shortSide :: forall d_a2AkJ r_a2AkK p_a2AkL. Lens' (FindAndCompact d_a2AkJ r_a2AkK p_a2AkL) ShortSide
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: splitDim :: forall d_a2A1u r_a2A1v a_a2A1w. Lens' (NodeData d_a2A1u r_a2A1v a_a2A1w) Int
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: splitDim :: forall d_a2A3P r_a2A3Q a_a2A3R. Lens' (NodeData d_a2A3P r_a2A3Q a_a2A3R) Int
- Data.Geometry.Arrangement: boundedArea :: forall k_a3nt6 (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH. Lens' (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (Rectangle () r_a3nsH)
+ Data.Geometry.Arrangement: boundedArea :: forall k_a3nMQ (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr. Lens' (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (Rectangle () r_a3nMr)
- Data.Geometry.Arrangement: inputLines :: forall k_a3nt6 (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH. Lens' (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (Vector ((:+) (Line 2 r_a3nsH) l_a3nsD))
+ Data.Geometry.Arrangement: inputLines :: forall k_a3nMQ (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr. Lens' (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (Vector ((:+) (Line 2 r_a3nMr) l_a3nMn))
- Data.Geometry.Arrangement: subdivision :: forall k_a3nt6 (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH v_a3nAj e_a3nAk f_a3nAl. Lens (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nAj e_a3nAk f_a3nAl r_a3nsH) (PlanarSubdivision s_a3nsC v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (PlanarSubdivision s_a3nsC v_a3nAj e_a3nAk f_a3nAl r_a3nsH)
+ Data.Geometry.Arrangement: subdivision :: forall k_a3nMQ (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr v_a3nU3 e_a3nU4 f_a3nU5. Lens (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nU3 e_a3nU4 f_a3nU5 r_a3nMr) (PlanarSubdivision s_a3nMm v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (PlanarSubdivision s_a3nMm v_a3nU3 e_a3nU4 f_a3nU5 r_a3nMr)
- Data.Geometry.Arrangement: unboundedIntersections :: forall k_a3nt6 (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH. Lens' (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (ArrangementBoundary s_a3nsC l_a3nsD r_a3nsH)
+ Data.Geometry.Arrangement: unboundedIntersections :: forall k_a3nMQ (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr. Lens' (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (ArrangementBoundary s_a3nMm l_a3nMn r_a3nMr)
- Data.Geometry.Arrangement.Internal: boundedArea :: forall k_a3nt6 (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH. Lens' (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (Rectangle () r_a3nsH)
+ Data.Geometry.Arrangement.Internal: boundedArea :: forall k_a3nMQ (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr. Lens' (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (Rectangle () r_a3nMr)
- Data.Geometry.Arrangement.Internal: inputLines :: forall k_a3nt6 (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH. Lens' (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (Vector ((:+) (Line 2 r_a3nsH) l_a3nsD))
+ Data.Geometry.Arrangement.Internal: inputLines :: forall k_a3nMQ (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr. Lens' (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (Vector ((:+) (Line 2 r_a3nMr) l_a3nMn))
- Data.Geometry.Arrangement.Internal: subdivision :: forall k_a3nt6 (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH v_a3nAj e_a3nAk f_a3nAl. Lens (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nAj e_a3nAk f_a3nAl r_a3nsH) (PlanarSubdivision s_a3nsC v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (PlanarSubdivision s_a3nsC v_a3nAj e_a3nAk f_a3nAl r_a3nsH)
+ Data.Geometry.Arrangement.Internal: subdivision :: forall k_a3nMQ (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr v_a3nU3 e_a3nU4 f_a3nU5. Lens (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nU3 e_a3nU4 f_a3nU5 r_a3nMr) (PlanarSubdivision s_a3nMm v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (PlanarSubdivision s_a3nMm v_a3nU3 e_a3nU4 f_a3nU5 r_a3nMr)
- Data.Geometry.Arrangement.Internal: unboundedIntersections :: forall k_a3nt6 (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH. Lens' (Arrangement (s_a3nsC :: k_a3nt6) l_a3nsD v_a3nsE e_a3nsF f_a3nsG r_a3nsH) (ArrangementBoundary s_a3nsC l_a3nsD r_a3nsH)
+ Data.Geometry.Arrangement.Internal: unboundedIntersections :: forall k_a3nMQ (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr. Lens' (Arrangement (s_a3nMm :: k_a3nMQ) l_a3nMn v_a3nMo e_a3nMp f_a3nMq r_a3nMr) (ArrangementBoundary s_a3nMm l_a3nMn r_a3nMr)
- Data.Geometry.Ball: center :: forall d_a2aHb p_a2aHc r_a2aHd d_a2aJP p_a2aJQ. Lens (Ball d_a2aHb p_a2aHc r_a2aHd) (Ball d_a2aJP p_a2aJQ r_a2aHd) ((:+) (Point d_a2aHb r_a2aHd) p_a2aHc) ((:+) (Point d_a2aJP r_a2aHd) p_a2aJQ)
+ Data.Geometry.Ball: center :: forall d_a2aJw p_a2aJx r_a2aJy d_a2aMa p_a2aMb. Lens (Ball d_a2aJw p_a2aJx r_a2aJy) (Ball d_a2aMa p_a2aMb r_a2aJy) ((:+) (Point d_a2aJw r_a2aJy) p_a2aJx) ((:+) (Point d_a2aMa r_a2aJy) p_a2aMb)
- Data.Geometry.Ball: squaredRadius :: forall d_a2aHb p_a2aHc r_a2aHd. Lens' (Ball d_a2aHb p_a2aHc r_a2aHd) r_a2aHd
+ Data.Geometry.Ball: squaredRadius :: forall d_a2aJw p_a2aJx r_a2aJy. Lens' (Ball d_a2aJw p_a2aJx r_a2aJy) r_a2aJy
- Data.Geometry.Box.Corners: northEast :: forall a_a1CPo. Lens' (Corners a_a1CPo) a_a1CPo
+ Data.Geometry.Box.Corners: northEast :: forall a_a1CRN. Lens' (Corners a_a1CRN) a_a1CRN
- Data.Geometry.Box.Corners: northWest :: forall a_a1CPo. Lens' (Corners a_a1CPo) a_a1CPo
+ Data.Geometry.Box.Corners: northWest :: forall a_a1CRN. Lens' (Corners a_a1CRN) a_a1CRN
- Data.Geometry.Box.Corners: southEast :: forall a_a1CPo. Lens' (Corners a_a1CPo) a_a1CPo
+ Data.Geometry.Box.Corners: southEast :: forall a_a1CRN. Lens' (Corners a_a1CRN) a_a1CRN
- Data.Geometry.Box.Corners: southWest :: forall a_a1CPo. Lens' (Corners a_a1CPo) a_a1CPo
+ Data.Geometry.Box.Corners: southWest :: forall a_a1CRN. Lens' (Corners a_a1CRN) a_a1CRN
- Data.Geometry.Box.Internal: cwMax :: forall a_a1jWJ a_a1kdS. Iso (CWMax a_a1jWJ) (CWMax a_a1kdS) a_a1jWJ a_a1kdS
+ Data.Geometry.Box.Internal: cwMax :: forall a_a1jZ8 a_a1kgh. Iso (CWMax a_a1jZ8) (CWMax a_a1kgh) a_a1jZ8 a_a1kgh
- Data.Geometry.Box.Internal: cwMin :: forall a_a1jHI a_a1jWD. Iso (CWMin a_a1jHI) (CWMin a_a1jWD) a_a1jHI a_a1jWD
+ Data.Geometry.Box.Internal: cwMin :: forall a_a1jK7 a_a1jZ2. Iso (CWMin a_a1jK7) (CWMin a_a1jZ2) a_a1jK7 a_a1jZ2
- Data.Geometry.Box.Internal: maxP :: forall d_a1kdZ p_a1ke0 r_a1ke1. Lens' (Box d_a1kdZ p_a1ke0 r_a1ke1) ((:+) (CWMax (Point d_a1kdZ r_a1ke1)) p_a1ke0)
+ Data.Geometry.Box.Internal: maxP :: forall d_a1kgo p_a1kgp r_a1kgq. Lens' (Box d_a1kgo p_a1kgp r_a1kgq) ((:+) (CWMax (Point d_a1kgo r_a1kgq)) p_a1kgp)
- Data.Geometry.Box.Internal: minP :: forall d_a1kdZ p_a1ke0 r_a1ke1. Lens' (Box d_a1kdZ p_a1ke0 r_a1ke1) ((:+) (CWMin (Point d_a1kdZ r_a1ke1)) p_a1ke0)
+ Data.Geometry.Box.Internal: minP :: forall d_a1kgo p_a1kgp r_a1kgq. Lens' (Box d_a1kgo p_a1kgp r_a1kgq) ((:+) (CWMin (Point d_a1kgo r_a1kgq)) p_a1kgp)
- Data.Geometry.Box.Sides: east :: forall a_a1FfD. Lens' (Sides a_a1FfD) a_a1FfD
+ Data.Geometry.Box.Sides: east :: forall a_a1Fi2. Lens' (Sides a_a1Fi2) a_a1Fi2
- Data.Geometry.Box.Sides: north :: forall a_a1FfD. Lens' (Sides a_a1FfD) a_a1FfD
+ Data.Geometry.Box.Sides: north :: forall a_a1Fi2. Lens' (Sides a_a1Fi2) a_a1Fi2
- Data.Geometry.Box.Sides: south :: forall a_a1FfD. Lens' (Sides a_a1FfD) a_a1FfD
+ Data.Geometry.Box.Sides: south :: forall a_a1Fi2. Lens' (Sides a_a1Fi2) a_a1Fi2
- Data.Geometry.Box.Sides: west :: forall a_a1FfD. Lens' (Sides a_a1FfD) a_a1FfD
+ Data.Geometry.Box.Sides: west :: forall a_a1Fi2. Lens' (Sides a_a1Fi2) a_a1Fi2
- Data.Geometry.Ellipse: affineTransformation :: forall r_a2wzq r_a2x26. Iso (Ellipse r_a2wzq) (Ellipse r_a2x26) (Transformation 2 r_a2wzq) (Transformation 2 r_a2x26)
+ Data.Geometry.Ellipse: affineTransformation :: forall r_a2wBL r_a2x4r. Iso (Ellipse r_a2wBL) (Ellipse r_a2x4r) (Transformation 2 r_a2wBL) (Transformation 2 r_a2x4r)
- Data.Geometry.HalfLine: halfLineDirection :: forall d_a22oT r_a22oU. Lens' (HalfLine d_a22oT r_a22oU) (Vector d_a22oT r_a22oU)
+ Data.Geometry.HalfLine: halfLineDirection :: forall d_a22re r_a22rf. Lens' (HalfLine d_a22re r_a22rf) (Vector d_a22re r_a22rf)
- Data.Geometry.HalfLine: startPoint :: forall d_a22oT r_a22oU. Lens' (HalfLine d_a22oT r_a22oU) (Point d_a22oT r_a22oU)
+ Data.Geometry.HalfLine: startPoint :: forall d_a22re r_a22rf. Lens' (HalfLine d_a22re r_a22rf) (Point d_a22re r_a22rf)
- Data.Geometry.HalfSpace: boundingPlane :: forall d_a27ov r_a27ow d_a27qo r_a27qp. Iso (HalfSpace d_a27ov r_a27ow) (HalfSpace d_a27qo r_a27qp) (HyperPlane d_a27ov r_a27ow) (HyperPlane d_a27qo r_a27qp)
+ Data.Geometry.HalfSpace: boundingPlane :: forall d_a27qQ r_a27qR d_a27sJ r_a27sK. Iso (HalfSpace d_a27qQ r_a27qR) (HalfSpace d_a27sJ r_a27sK) (HyperPlane d_a27qQ r_a27qR) (HyperPlane d_a27sJ r_a27sK)
- Data.Geometry.HyperPlane: inPlane :: forall d_a1YtS r_a1YtT. Lens' (HyperPlane d_a1YtS r_a1YtT) (Point d_a1YtS r_a1YtT)
+ Data.Geometry.HyperPlane: inPlane :: forall d_a1Ywd r_a1Ywe. Lens' (HyperPlane d_a1Ywd r_a1Ywe) (Point d_a1Ywd r_a1Ywe)
- Data.Geometry.HyperPlane: normalVec :: forall d_a1YtS r_a1YtT. Lens' (HyperPlane d_a1YtS r_a1YtT) (Vector d_a1YtS r_a1YtT)
+ Data.Geometry.HyperPlane: normalVec :: forall d_a1Ywd r_a1Ywe. Lens' (HyperPlane d_a1Ywd r_a1Ywe) (Vector d_a1Ywd r_a1Ywe)
- Data.Geometry.Interval.Util: unL :: forall r_alm6 r_alPK. Iso (L r_alm6) (L r_alPK) (EndPoint r_alm6) (EndPoint r_alPK)
+ Data.Geometry.Interval.Util: unL :: forall r_alov r_alS9. Iso (L r_alov) (L r_alS9) (EndPoint r_alov) (EndPoint r_alS9)
- Data.Geometry.Interval.Util: unR :: forall r_alPQ r_am2J. Iso (R r_alPQ) (R r_am2J) (EndPoint r_alPQ) (EndPoint r_am2J)
+ Data.Geometry.Interval.Util: unR :: forall r_alSf r_am58. Iso (R r_alSf) (R r_am58) (EndPoint r_alSf) (EndPoint r_am58)
- Data.Geometry.IntervalTree: intervalsLeft :: forall i_ap41 r_ap42. Lens' (NodeData i_ap41 r_ap42) (Map (L r_ap42) [i_ap41])
+ Data.Geometry.IntervalTree: intervalsLeft :: forall i_ap6q r_ap6r. Lens' (NodeData i_ap6q r_ap6r) (Map (L r_ap6r) [i_ap6q])
- Data.Geometry.IntervalTree: intervalsRight :: forall i_ap41 r_ap42. Lens' (NodeData i_ap41 r_ap42) (Map (R r_ap42) [i_ap41])
+ Data.Geometry.IntervalTree: intervalsRight :: forall i_ap6q r_ap6r. Lens' (NodeData i_ap6q r_ap6r) (Map (R r_ap6r) [i_ap6q])
- Data.Geometry.IntervalTree: splitPoint :: forall i_ap41 r_ap42. Lens' (NodeData i_ap41 r_ap42) r_ap42
+ Data.Geometry.IntervalTree: splitPoint :: forall i_ap6q r_ap6r. Lens' (NodeData i_ap6q r_ap6r) r_ap6r
- Data.Geometry.IntervalTree: unIntervalTree :: forall i_apd3 r_apd4 i_apk1 r_apk2. Iso (IntervalTree i_apd3 r_apd4) (IntervalTree i_apk1 r_apk2) (BinaryTree (NodeData i_apd3 r_apd4)) (BinaryTree (NodeData i_apk1 r_apk2))
+ Data.Geometry.IntervalTree: unIntervalTree :: forall i_apfs r_apft i_apmq r_apmr. Iso (IntervalTree i_apfs r_apft) (IntervalTree i_apmq r_apmr) (BinaryTree (NodeData i_apfs r_apft)) (BinaryTree (NodeData i_apmq r_apmr))
- Data.Geometry.PlanarSubdivision.Basic: components :: forall k_a3btf (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bsE r_a3bsF r_a3bFK. Lens (PlanarSubdivision (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bsE r_a3bsF) (PlanarSubdivision (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bsE r_a3bFK) (Vector (Component s_a3bsB r_a3bsF)) (Vector (Component s_a3bsB r_a3bFK))
+ Data.Geometry.PlanarSubdivision.Basic: components :: forall k_a3bN3 (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bMs r_a3bMt r_a3bZy. Lens (PlanarSubdivision (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bMs r_a3bMt) (PlanarSubdivision (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bMs r_a3bZy) (Vector (Component s_a3bMp r_a3bMt)) (Vector (Component s_a3bMp r_a3bZy))
- Data.Geometry.PlanarSubdivision.Basic: fData :: forall h_a35k9 f_a35ka f_a3669. Lens (FaceData h_a35k9 f_a35ka) (FaceData h_a35k9 f_a3669) f_a35ka f_a3669
+ Data.Geometry.PlanarSubdivision.Basic: fData :: forall h_a35DX f_a35DY f_a36pX. Lens (FaceData h_a35DX f_a35DY) (FaceData h_a35DX f_a36pX) f_a35DY f_a36pX
- Data.Geometry.PlanarSubdivision.Basic: holes :: forall h_a35k9 f_a35ka h_a366a. Lens (FaceData h_a35k9 f_a35ka) (FaceData h_a366a f_a35ka) (Seq h_a35k9) (Seq h_a366a)
+ Data.Geometry.PlanarSubdivision.Basic: holes :: forall h_a35DX f_a35DY h_a36pY. Lens (FaceData h_a35DX f_a35DY) (FaceData h_a36pY f_a35DY) (Seq h_a35DX) (Seq h_a36pY)
- Data.Geometry.PlanarSubdivision.Basic: location :: forall r_a2XFX v_a2XFY r_a2XUB. Lens (VertexData r_a2XFX v_a2XFY) (VertexData r_a2XUB v_a2XFY) (Point 2 r_a2XFX) (Point 2 r_a2XUB)
+ Data.Geometry.PlanarSubdivision.Basic: location :: forall r_a2XZL v_a2XZM r_a2Yep. Lens (VertexData r_a2XZL v_a2XZM) (VertexData r_a2Yep v_a2XZM) (Point 2 r_a2XZL) (Point 2 r_a2Yep)
- Data.Geometry.PlanarSubdivision.Basic: rawDartData :: forall k_a3btf (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bsE r_a3bsF e_a3bFL. Lens (PlanarSubdivision (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bsE r_a3bsF) (PlanarSubdivision (s_a3bsB :: k_a3btf) v_a3bsC e_a3bFL f_a3bsE r_a3bsF) (Vector (Raw s_a3bsB (Dart (Wrap s_a3bsB)) e_a3bsD)) (Vector (Raw s_a3bsB (Dart (Wrap s_a3bsB)) e_a3bFL))
+ Data.Geometry.PlanarSubdivision.Basic: rawDartData :: forall k_a3bN3 (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bMs r_a3bMt e_a3bZz. Lens (PlanarSubdivision (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bMs r_a3bMt) (PlanarSubdivision (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bZz f_a3bMs r_a3bMt) (Vector (Raw s_a3bMp (Dart (Wrap s_a3bMp)) e_a3bMr)) (Vector (Raw s_a3bMp (Dart (Wrap s_a3bMp)) e_a3bZz))
- Data.Geometry.PlanarSubdivision.Basic: rawFaceData :: forall k_a3btf (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bsE r_a3bsF f_a3bFM. Lens (PlanarSubdivision (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bsE r_a3bsF) (PlanarSubdivision (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bFM r_a3bsF) (Vector (RawFace s_a3bsB f_a3bsE)) (Vector (RawFace s_a3bsB f_a3bFM))
+ Data.Geometry.PlanarSubdivision.Basic: rawFaceData :: forall k_a3bN3 (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bMs r_a3bMt f_a3bZA. Lens (PlanarSubdivision (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bMs r_a3bMt) (PlanarSubdivision (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bZA r_a3bMt) (Vector (RawFace s_a3bMp f_a3bMs)) (Vector (RawFace s_a3bMp f_a3bZA))
- Data.Geometry.PlanarSubdivision.Basic: rawVertexData :: forall k_a3btf (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bsE r_a3bsF v_a3bFN. Lens (PlanarSubdivision (s_a3bsB :: k_a3btf) v_a3bsC e_a3bsD f_a3bsE r_a3bsF) (PlanarSubdivision (s_a3bsB :: k_a3btf) v_a3bFN e_a3bsD f_a3bsE r_a3bsF) (Vector (Raw s_a3bsB (VertexId' (Wrap s_a3bsB)) v_a3bsC)) (Vector (Raw s_a3bsB (VertexId' (Wrap s_a3bsB)) v_a3bFN))
+ Data.Geometry.PlanarSubdivision.Basic: rawVertexData :: forall k_a3bN3 (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bMs r_a3bMt v_a3bZB. Lens (PlanarSubdivision (s_a3bMp :: k_a3bN3) v_a3bMq e_a3bMr f_a3bMs r_a3bMt) (PlanarSubdivision (s_a3bMp :: k_a3bN3) v_a3bZB e_a3bMr f_a3bMs r_a3bMt) (Vector (Raw s_a3bMp (VertexId' (Wrap s_a3bMp)) v_a3bMq)) (Vector (Raw s_a3bMp (VertexId' (Wrap s_a3bMp)) v_a3bZB))
- Data.Geometry.PlanarSubdivision.Basic: vData :: forall r_a2XFX v_a2XFY v_a2XUC. Lens (VertexData r_a2XFX v_a2XFY) (VertexData r_a2XFX v_a2XUC) v_a2XFY v_a2XUC
+ Data.Geometry.PlanarSubdivision.Basic: vData :: forall r_a2XZL v_a2XZM v_a2Yeq. Lens (VertexData r_a2XZL v_a2XZM) (VertexData r_a2XZL v_a2Yeq) v_a2XZM v_a2Yeq
- Data.Geometry.PlanarSubdivision.Raw: fData :: forall h_a35k9 f_a35ka f_a3669. Lens (FaceData h_a35k9 f_a35ka) (FaceData h_a35k9 f_a3669) f_a35ka f_a3669
+ Data.Geometry.PlanarSubdivision.Raw: fData :: forall h_a35DX f_a35DY f_a36pX. Lens (FaceData h_a35DX f_a35DY) (FaceData h_a35DX f_a36pX) f_a35DY f_a36pX
- Data.Geometry.PlanarSubdivision.Raw: faceDataVal :: forall k_a3673 (s_a366p :: k_a3673) f_a366q f_a36m7. Lens (RawFace (s_a366p :: k_a3673) f_a366q) (RawFace (s_a366p :: k_a3673) f_a36m7) (FaceData (Dart s_a366p) f_a366q) (FaceData (Dart s_a366p) f_a36m7)
+ Data.Geometry.PlanarSubdivision.Raw: faceDataVal :: forall k_a36qR (s_a36qd :: k_a36qR) f_a36qe f_a36FV. Lens (RawFace (s_a36qd :: k_a36qR) f_a36qe) (RawFace (s_a36qd :: k_a36qR) f_a36FV) (FaceData (Dart s_a36qd) f_a36qe) (FaceData (Dart s_a36qd) f_a36FV)
- Data.Geometry.PlanarSubdivision.Raw: faceIdx :: forall k_a3673 (s_a366p :: k_a3673) f_a366q. Lens' (RawFace (s_a366p :: k_a3673) f_a366q) (Maybe (ComponentId s_a366p, FaceId' (Wrap s_a366p)))
+ Data.Geometry.PlanarSubdivision.Raw: faceIdx :: forall k_a36qR (s_a36qd :: k_a36qR) f_a36qe. Lens' (RawFace (s_a36qd :: k_a36qR) f_a36qe) (Maybe (ComponentId s_a36qd, FaceId' (Wrap s_a36qd)))
- Data.Geometry.PlanarSubdivision.Raw: holes :: forall h_a35k9 f_a35ka h_a366a. Lens (FaceData h_a35k9 f_a35ka) (FaceData h_a366a f_a35ka) (Seq h_a35k9) (Seq h_a366a)
+ Data.Geometry.PlanarSubdivision.Raw: holes :: forall h_a35DX f_a35DY h_a36pY. Lens (FaceData h_a35DX f_a35DY) (FaceData h_a36pY f_a35DY) (Seq h_a35DX) (Seq h_a36pY)
- Data.Geometry.PointLocation.PersistentSweep: outerFace :: forall k_a3kcz (s_a3kck :: k_a3kcz) v_a3kcl e_a3kcm f_a3kcn r_a3kco. Getter (PointLocationDS (s_a3kck :: k_a3kcz) v_a3kcl e_a3kcm f_a3kcn r_a3kco) (FaceId' s_a3kck)
+ Data.Geometry.PointLocation.PersistentSweep: outerFace :: forall k_a3kwk (s_a3kw5 :: k_a3kwk) v_a3kw6 e_a3kw7 f_a3kw8 r_a3kw9. Getter (PointLocationDS (s_a3kw5 :: k_a3kwk) v_a3kw6 e_a3kw7 f_a3kw8 r_a3kw9) (FaceId' s_a3kw5)
- Data.Geometry.PointLocation.PersistentSweep: subdivision :: forall k_a3kcz (s_a3kck :: k_a3kcz) v_a3kcl e_a3kcm f_a3kcn r_a3kco. Getter (PointLocationDS (s_a3kck :: k_a3kcz) v_a3kcl e_a3kcm f_a3kcn r_a3kco) (PlanarSubdivision s_a3kck v_a3kcl e_a3kcm f_a3kcn r_a3kco)
+ Data.Geometry.PointLocation.PersistentSweep: subdivision :: forall k_a3kwk (s_a3kw5 :: k_a3kwk) v_a3kw6 e_a3kw7 f_a3kw8 r_a3kw9. Getter (PointLocationDS (s_a3kw5 :: k_a3kwk) v_a3kw6 e_a3kw7 f_a3kw8 r_a3kw9) (PlanarSubdivision s_a3kw5 v_a3kw6 e_a3kw7 f_a3kw8 r_a3kw9)
- Data.Geometry.PointLocation.PersistentSweep: verticalRayShootingStructure :: forall k_a3kcz (s_a3kck :: k_a3kcz) v_a3kcl e_a3kcm f_a3kcn r_a3kco. Getter (PointLocationDS (s_a3kck :: k_a3kcz) v_a3kcl e_a3kcm f_a3kcn r_a3kco) (VerticalRayShootingStructure v_a3kcl (Dart s_a3kck) r_a3kco)
+ Data.Geometry.PointLocation.PersistentSweep: verticalRayShootingStructure :: forall k_a3kwk (s_a3kw5 :: k_a3kwk) v_a3kw6 e_a3kw7 f_a3kw8 r_a3kw9. Getter (PointLocationDS (s_a3kw5 :: k_a3kwk) v_a3kw6 e_a3kw7 f_a3kw8 r_a3kw9) (VerticalRayShootingStructure v_a3kw6 (Dart s_a3kw5) r_a3kw9)
- Data.Geometry.QuadTree: startingCell :: forall v_a1NNh p_a1NNi r_a1NNj r_a1NZo. Lens (QuadTree v_a1NNh p_a1NNi r_a1NNj) (QuadTree v_a1NNh p_a1NNi r_a1NZo) (Cell r_a1NNj) (Cell r_a1NZo)
+ Data.Geometry.QuadTree: startingCell :: forall v_a1NPG p_a1NPH r_a1NPI r_a1O1N. Lens (QuadTree v_a1NPG p_a1NPH r_a1NPI) (QuadTree v_a1NPG p_a1NPH r_a1O1N) (Cell r_a1NPI) (Cell r_a1O1N)
- Data.Geometry.QuadTree: tree :: forall v_a1NNh p_a1NNi r_a1NNj v_a1NZp p_a1NZq. Lens (QuadTree v_a1NNh p_a1NNi r_a1NNj) (QuadTree v_a1NZp p_a1NZq r_a1NNj) (Tree v_a1NNh p_a1NNi) (Tree v_a1NZp p_a1NZq)
+ Data.Geometry.QuadTree: tree :: forall v_a1NPG p_a1NPH r_a1NPI v_a1O1O p_a1O1P. Lens (QuadTree v_a1NPG p_a1NPH r_a1NPI) (QuadTree v_a1O1O p_a1O1P r_a1NPI) (Tree v_a1NPG p_a1NPH) (Tree v_a1O1O p_a1O1P)
- Data.Geometry.QuadTree.Cell: cellWidthIndex :: forall r_a1I8L. Lens' (Cell r_a1I8L) WidthIndex
+ Data.Geometry.QuadTree.Cell: cellWidthIndex :: forall r_a1Iba. Lens' (Cell r_a1Iba) WidthIndex
- Data.Geometry.QuadTree.Cell: lowerLeft :: forall r_a1I8L r_a1IjK. Lens (Cell r_a1I8L) (Cell r_a1IjK) (Point 2 r_a1I8L) (Point 2 r_a1IjK)
+ Data.Geometry.QuadTree.Cell: lowerLeft :: forall r_a1Iba r_a1Im9. Lens (Cell r_a1Iba) (Cell r_a1Im9) (Point 2 r_a1Iba) (Point 2 r_a1Im9)
- Data.Geometry.QuadTree.Split: _No :: forall i_a1LvZ v_a1Lw0 p_a1LCg p_a1Lw1. Prism (Split i_a1LvZ v_a1Lw0 p_a1LCg) (Split i_a1LvZ v_a1Lw0 p_a1Lw1) p_a1LCg p_a1Lw1
+ Data.Geometry.QuadTree.Split: _No :: forall i_a1Lyo v_a1Lyp p_a1LEF p_a1Lyq. Prism (Split i_a1Lyo v_a1Lyp p_a1LEF) (Split i_a1Lyo v_a1Lyp p_a1Lyq) p_a1LEF p_a1Lyq
- Data.Geometry.QuadTree.Split: _Yes :: forall i_a1LCm v_a1LCn p_a1Lw1 i_a1LvZ v_a1Lw0. Prism (Split i_a1LCm v_a1LCn p_a1Lw1) (Split i_a1LvZ v_a1Lw0 p_a1Lw1) (v_a1LCn, Quadrants i_a1LCm) (v_a1Lw0, Quadrants i_a1LvZ)
+ Data.Geometry.QuadTree.Split: _Yes :: forall i_a1LEL v_a1LEM p_a1Lyq i_a1Lyo v_a1Lyp. Prism (Split i_a1LEL v_a1LEM p_a1Lyq) (Split i_a1Lyo v_a1Lyp p_a1Lyq) (v_a1LEM, Quadrants i_a1LEL) (v_a1Lyp, Quadrants i_a1Lyo)
- Data.Geometry.QuadTree.Tree: _Leaf :: forall v_a1MvP p_a1MvQ. Prism' (Tree v_a1MvP p_a1MvQ) p_a1MvQ
+ Data.Geometry.QuadTree.Tree: _Leaf :: forall v_a1Mye p_a1Myf. Prism' (Tree v_a1Mye p_a1Myf) p_a1Myf
- Data.Geometry.QuadTree.Tree: _Node :: forall v_a1Mze p_a1MvQ v_a1MvP. Prism (Tree v_a1Mze p_a1MvQ) (Tree v_a1MvP p_a1MvQ) (v_a1Mze, Quadrants (Tree v_a1Mze p_a1MvQ)) (v_a1MvP, Quadrants (Tree v_a1MvP p_a1MvQ))
+ Data.Geometry.QuadTree.Tree: _Node :: forall v_a1MBD p_a1Myf v_a1Mye. Prism (Tree v_a1MBD p_a1Myf) (Tree v_a1Mye p_a1Myf) (v_a1MBD, Quadrants (Tree v_a1MBD p_a1Myf)) (v_a1Mye, Quadrants (Tree v_a1Mye p_a1Myf))
- Data.Geometry.SegmentTree.Generic: assoc :: forall v_au1A r_au1B v_au8z. Lens (NodeData v_au1A r_au1B) (NodeData v_au8z r_au1B) v_au1A v_au8z
+ Data.Geometry.SegmentTree.Generic: assoc :: forall v_au3Z r_au40 v_auaY. Lens (NodeData v_au3Z r_au40) (NodeData v_auaY r_au40) v_au3Z v_auaY
- Data.Geometry.SegmentTree.Generic: atomicRange :: forall v_au8Z r_au90 r_aumw. Lens (LeafData v_au8Z r_au90) (LeafData v_au8Z r_aumw) (AtomicRange r_au90) (AtomicRange r_aumw)
+ Data.Geometry.SegmentTree.Generic: atomicRange :: forall v_aubo r_aubp r_auoV. Lens (LeafData v_aubo r_aubp) (LeafData v_aubo r_auoV) (AtomicRange r_aubp) (AtomicRange r_auoV)
- Data.Geometry.SegmentTree.Generic: leafAssoc :: forall v_au8Z r_au90 v_aumx. Lens (LeafData v_au8Z r_au90) (LeafData v_aumx r_au90) v_au8Z v_aumx
+ Data.Geometry.SegmentTree.Generic: leafAssoc :: forall v_aubo r_aubp v_auoW. Lens (LeafData v_aubo r_aubp) (LeafData v_auoW r_aubp) v_aubo v_auoW
- Data.Geometry.SegmentTree.Generic: range :: forall v_au1A r_au1B. Lens' (NodeData v_au1A r_au1B) (Range r_au1B)
+ Data.Geometry.SegmentTree.Generic: range :: forall v_au3Z r_au40. Lens' (NodeData v_au3Z r_au40) (Range r_au40)
- Data.Geometry.SegmentTree.Generic: splitPoint :: forall v_au1A r_au1B. Lens' (NodeData v_au1A r_au1B) (EndPoint r_au1B)
+ Data.Geometry.SegmentTree.Generic: splitPoint :: forall v_au3Z r_au40. Lens' (NodeData v_au3Z r_au40) (EndPoint r_au40)
- Data.Geometry.SegmentTree.Generic: unSegmentTree :: forall v_aumL r_aumM v_auuA r_auuB. Iso (SegmentTree v_aumL r_aumM) (SegmentTree v_auuA r_auuB) (BinLeafTree (NodeData v_aumL r_aumM) (LeafData v_aumL r_aumM)) (BinLeafTree (NodeData v_auuA r_auuB) (LeafData v_auuA r_auuB))
+ Data.Geometry.SegmentTree.Generic: unSegmentTree :: forall v_aupa r_aupb v_auwZ r_aux0. Iso (SegmentTree v_aupa r_aupb) (SegmentTree v_auwZ r_aux0) (BinLeafTree (NodeData v_aupa r_aupb) (LeafData v_aupa r_aupb)) (BinLeafTree (NodeData v_auwZ r_aux0) (LeafData v_auwZ r_aux0))
- Data.Geometry.Slab: unSlab :: forall o_a1Voj a_a1Vok r_a1Vol o_a1VtV a_a1VtW r_a1VtX. Iso (Slab o_a1Voj a_a1Vok r_a1Vol) (Slab o_a1VtV a_a1VtW r_a1VtX) (Interval a_a1Vok r_a1Vol) (Interval a_a1VtW r_a1VtX)
+ Data.Geometry.Slab: unSlab :: forall o_a1VqE a_a1VqF r_a1VqG o_a1Vwg a_a1Vwh r_a1Vwi. Iso (Slab o_a1VqE a_a1VqF r_a1VqG) (Slab o_a1Vwg a_a1Vwh r_a1Vwi) (Interval a_a1VqF r_a1VqG) (Interval a_a1Vwh r_a1Vwi)
- Data.Geometry.VerticalRayShooting.PersistentSweep: leftMost :: forall p_a2SCU e_a2SCV r_a2SCW. Getter (VerticalRayShootingStructure p_a2SCU e_a2SCV r_a2SCW) r_a2SCW
+ Data.Geometry.VerticalRayShooting.PersistentSweep: leftMost :: forall p_a2SWI e_a2SWJ r_a2SWK. Getter (VerticalRayShootingStructure p_a2SWI e_a2SWJ r_a2SWK) r_a2SWK
- Data.Geometry.VerticalRayShooting.PersistentSweep: sweepStruct :: forall p_a2SCU e_a2SCV r_a2SCW. Getter (VerticalRayShootingStructure p_a2SCU e_a2SCV r_a2SCW) (Vector ((:+) r_a2SCW (StatusStructure p_a2SCU e_a2SCV r_a2SCW)))
+ Data.Geometry.VerticalRayShooting.PersistentSweep: sweepStruct :: forall p_a2SWI e_a2SWJ r_a2SWK. Getter (VerticalRayShootingStructure p_a2SWI e_a2SWJ r_a2SWK) (Vector ((:+) r_a2SWK (StatusStructure p_a2SWI e_a2SWJ r_a2SWK)))
- Data.PlaneGraph: graph :: forall k_a2XVD (s_a2XUR :: k_a2XVD) v_a2XUS e_a2XUT f_a2XUU r_a2XUV k_a2Y5V (s_a2Y5Q :: k_a2Y5V) v_a2Y5R e_a2Y5S f_a2Y5T r_a2Y5U. Iso (PlaneGraph (s_a2XUR :: k_a2XVD) v_a2XUS e_a2XUT f_a2XUU r_a2XUV) (PlaneGraph (s_a2Y5Q :: k_a2Y5V) v_a2Y5R e_a2Y5S f_a2Y5T r_a2Y5U) (PlanarGraph s_a2XUR 'Primal (VertexData r_a2XUV v_a2XUS) e_a2XUT f_a2XUU) (PlanarGraph s_a2Y5Q 'Primal (VertexData r_a2Y5U v_a2Y5R) e_a2Y5S f_a2Y5T)
+ Data.PlaneGraph: graph :: forall k_a2Yfr (s_a2YeF :: k_a2Yfr) v_a2YeG e_a2YeH f_a2YeI r_a2YeJ k_a2YpJ (s_a2YpE :: k_a2YpJ) v_a2YpF e_a2YpG f_a2YpH r_a2YpI. Iso (PlaneGraph (s_a2YeF :: k_a2Yfr) v_a2YeG e_a2YeH f_a2YeI r_a2YeJ) (PlaneGraph (s_a2YpE :: k_a2YpJ) v_a2YpF e_a2YpG f_a2YpH r_a2YpI) (PlanarGraph s_a2YeF 'Primal (VertexData r_a2YeJ v_a2YeG) e_a2YeH f_a2YeI) (PlanarGraph s_a2YpE 'Primal (VertexData r_a2YpI v_a2YpF) e_a2YpG f_a2YpH)
- Data.PlaneGraph: location :: forall r_a2XFX v_a2XFY r_a2XUB. Lens (VertexData r_a2XFX v_a2XFY) (VertexData r_a2XUB v_a2XFY) (Point 2 r_a2XFX) (Point 2 r_a2XUB)
+ Data.PlaneGraph: location :: forall r_a2XZL v_a2XZM r_a2Yep. Lens (VertexData r_a2XZL v_a2XZM) (VertexData r_a2Yep v_a2XZM) (Point 2 r_a2XZL) (Point 2 r_a2Yep)
- Data.PlaneGraph: vData :: forall r_a2XFX v_a2XFY v_a2XUC. Lens (VertexData r_a2XFX v_a2XFY) (VertexData r_a2XFX v_a2XUC) v_a2XFY v_a2XUC
+ Data.PlaneGraph: vData :: forall r_a2XZL v_a2XZM v_a2Yeq. Lens (VertexData r_a2XZL v_a2XZM) (VertexData r_a2XZL v_a2Yeq) v_a2XZM v_a2Yeq
- Data.PlaneGraph.Core: graph :: forall k_a2XVD (s_a2XUR :: k_a2XVD) v_a2XUS e_a2XUT f_a2XUU r_a2XUV k_a2Y5V (s_a2Y5Q :: k_a2Y5V) v_a2Y5R e_a2Y5S f_a2Y5T r_a2Y5U. Iso (PlaneGraph (s_a2XUR :: k_a2XVD) v_a2XUS e_a2XUT f_a2XUU r_a2XUV) (PlaneGraph (s_a2Y5Q :: k_a2Y5V) v_a2Y5R e_a2Y5S f_a2Y5T r_a2Y5U) (PlanarGraph s_a2XUR 'Primal (VertexData r_a2XUV v_a2XUS) e_a2XUT f_a2XUU) (PlanarGraph s_a2Y5Q 'Primal (VertexData r_a2Y5U v_a2Y5R) e_a2Y5S f_a2Y5T)
+ Data.PlaneGraph.Core: graph :: forall k_a2Yfr (s_a2YeF :: k_a2Yfr) v_a2YeG e_a2YeH f_a2YeI r_a2YeJ k_a2YpJ (s_a2YpE :: k_a2YpJ) v_a2YpF e_a2YpG f_a2YpH r_a2YpI. Iso (PlaneGraph (s_a2YeF :: k_a2Yfr) v_a2YeG e_a2YeH f_a2YeI r_a2YeJ) (PlaneGraph (s_a2YpE :: k_a2YpJ) v_a2YpF e_a2YpG f_a2YpH r_a2YpI) (PlanarGraph s_a2YeF 'Primal (VertexData r_a2YeJ v_a2YeG) e_a2YeH f_a2YeI) (PlanarGraph s_a2YpE 'Primal (VertexData r_a2YpI v_a2YpF) e_a2YpG f_a2YpH)
- Data.PlaneGraph.Core: location :: forall r_a2XFX v_a2XFY r_a2XUB. Lens (VertexData r_a2XFX v_a2XFY) (VertexData r_a2XUB v_a2XFY) (Point 2 r_a2XFX) (Point 2 r_a2XUB)
+ Data.PlaneGraph.Core: location :: forall r_a2XZL v_a2XZM r_a2Yep. Lens (VertexData r_a2XZL v_a2XZM) (VertexData r_a2Yep v_a2XZM) (Point 2 r_a2XZL) (Point 2 r_a2Yep)
- Data.PlaneGraph.Core: vData :: forall r_a2XFX v_a2XFY v_a2XUC. Lens (VertexData r_a2XFX v_a2XFY) (VertexData r_a2XFX v_a2XUC) v_a2XFY v_a2XUC
+ Data.PlaneGraph.Core: vData :: forall r_a2XZL v_a2XZM v_a2Yeq. Lens (VertexData r_a2XZL v_a2XZM) (VertexData r_a2XZL v_a2Yeq) v_a2XZM v_a2Yeq
Files
- hgeometry.cabal +6/−4
- src/Algorithms/Geometry/PolyLineSimplification/DouglasPeucker.hs +2/−2
- src/Algorithms/Geometry/PolyLineSimplification/ImaiIri.hs +138/−0
- src/Data/Geometry/PolyLine.hs +1/−1
hgeometry.cabal view
@@ -1,5 +1,5 @@ name: hgeometry-version: 0.12.0.3+version: 0.12.0.4 synopsis: Geometric Algorithms, Data structures, and Data types. description: HGeometry provides some basic geometry types, and geometric algorithms and@@ -14,7 +14,7 @@ maintainer: frank@fstaals.net -- copyright: -tested-with: GHC >= 8.2+tested-with: GHC >= 8.8 category: Geometry build-type: Simple@@ -141,6 +141,7 @@ Algorithms.Geometry.DelaunayTriangulation.DivideAndConquer Algorithms.Geometry.DelaunayTriangulation.Naive + Algorithms.Geometry.PolyLineSimplification.ImaiIri Algorithms.Geometry.PolyLineSimplification.DouglasPeucker Algorithms.Geometry.EuclideanMST@@ -225,7 +226,7 @@ -- other-extensions: build-depends: base >= 4.11 && < 5- , hgeometry-combinatorial >= 0.12.0.0+ , hgeometry-combinatorial >= 0.12.0.3 , bifunctors >= 4.1 , bytestring >= 0.10@@ -237,7 +238,7 @@ -- , singletons >= 2.0 , linear >= 1.10 , fixed-vector >= 1.0- , vector-builder >= 0.3.7 && <= 0.3.8+ , vector-builder >= 0.3.7 , vinyl >= 0.10 , deepseq >= 1.1 , fingertree >= 0.1@@ -260,6 +261,7 @@ , nonempty-vector >= 0.2.0.0 , text >= 1.1.1.0 , vector-algorithms+ , witherable >= 0.4 , aeson >= 1.0 , yaml >= 0.8
src/Algorithms/Geometry/PolyLineSimplification/DouglasPeucker.hs view
@@ -21,11 +21,11 @@ -------------------------------------------------------------------------------- -- | Line simplification with the well-known Douglas Peucker alogrithm. Given a distance--- value eps adn a polyline pl, constructs a simplification of pl (i.e. with+-- value eps and a polyline pl, constructs a simplification of pl (i.e. with -- vertices from pl) s.t. all other vertices are within dist eps to the -- original polyline. ----- Running time: \( O(n^2) \) worst case, \( O(n log n) \) expected.+-- Running time: \( O(n^2) \) worst case, \( O(n log n) \) on average. douglasPeucker :: (Ord r, Fractional r, Arity d) => r -> PolyLine d p r -> PolyLine d p r douglasPeucker eps pl
+ src/Algorithms/Geometry/PolyLineSimplification/ImaiIri.hs view
@@ -0,0 +1,138 @@+-- |+-- Module : Algorithms.Geometry.PolyLineSimplification.ImaiIri+-- Copyright : (C) Frank Staals+-- License : see the LICENSE file+-- Maintainer : Frank Staals+--------------------------------------------------------------------------------+module Algorithms.Geometry.PolyLineSimplification.ImaiIri+ ( simplify+ , simplifyWith+ ) where++import Algorithms.Graph.BFS (bfs')+import Control.Lens+import Data.Ext+import qualified Data.Foldable as F+import Data.Geometry.LineSegment+import Data.Geometry.Point+import Data.Geometry.PolyLine+import Data.Geometry.Vector+import qualified Data.LSeq as LSeq+import Data.List.NonEmpty (NonEmpty(..))+import qualified Data.List.NonEmpty as NonEmpty+import qualified Data.Sequence as Seq+import Data.Tree+import qualified Data.Vector as V+import Witherable++import Data.RealNumber.Rational+type R = RealNumber 5++--------------------------------------------------------------------------------++-- | Line simplification with the Imai-Iri alogrithm. Given a distance+-- value eps and a polyline pl, constructs a simplification of pl+-- (i.e. with vertices from pl) s.t. all other vertices are within+-- dist eps to the original polyline.+--+-- Running time: \( O(n^2) \) time.+simplify :: (Ord r, Fractional r, Arity d)+ => r -> PolyLine d p r -> PolyLine d p r+simplify eps = simplifyWith $ \shortcut subPoly -> all (closeTo shortcut) (subPoly^.points)+ where+ closeTo seg (p :+ _) = sqDistanceToSeg p seg <= epsSq+ epsSq = eps*eps++-- | Given a function that tests if the shortcut is valid, compute a+-- simplification using the Imai-Iri algorithm.+--+-- Running time: \( O(Tn^2 \) time, where \(T\) is the time to+-- evaluate the predicate.+simplifyWith :: (LineSegment d p r -> PolyLine d p r -> Bool)+ -> PolyLine d p r -> PolyLine d p r+simplifyWith isValid pl = pl&points %~ (LSeq.promise @2 . extract path)+ where+ g = mkGraph isValid pl+ spt = bfs' 0 g+ path = case pathsTo (pl^.points.to F.length - 1) spt of+ [] -> error "no path found?"+ (pth:_) -> pth++----------------------------------------++type Graph = V.Vector [Int]++-- | Constructs the shortcut graph+mkGraph :: (LineSegment d p r -> PolyLine d p r -> Bool) -> PolyLine d p r -> Graph+mkGraph isValid = flip V.snoc [] . V.imap f . V.fromList . F.toList . allPrefixes+ where+ f i subPl = catMaybes+ $ zipWith isValid' [i+1..] . F.toList . allSuffixes $ subPl++ isValid' j subPoly = let shortcut = ClosedLineSegment (subPoly^.start) (subPoly^.end)+ in if isValid shortcut subPoly then Just j else Nothing++-- | Generates all prefixes of the polyline; i.e. all contiguous+-- polylines all starting at the original starting point.+allPrefixes :: PolyLine d p r -> Seq.Seq (PolyLine d p r)+allPrefixes pl = mapMaybe mkPolyLine . Seq.tails . LSeq.toSeq $ pl^.points++mkPolyLine :: Seq.Seq (Point d r :+ p) -> Maybe (PolyLine d p r)+mkPolyLine = fmap PolyLine . LSeq.eval @2 . LSeq.fromSeq++-- | Generates all suffixes of the polyline.+allSuffixes :: PolyLine d p r -> Seq.Seq (PolyLine d p r)+allSuffixes pl = mapMaybe mkPolyLine . Seq.drop 2 . Seq.inits . LSeq.toSeq $ pl^.points+++++++-- | Get all paths to the particular element in the tree.+pathsTo :: Eq a => a -> Tree a -> [NonEmpty a]+pathsTo x = findPaths (== x)++-- | All paths to the nodes satisfying the predicate.+findPaths :: (a -> Bool) -> Tree a -> [NonEmpty a]+findPaths p = go+ where+ go (Node x chs) = case foldMap go chs of+ [] | p x -> [x:|[]]+ | otherwise -> []+ paths | p x -> (x:|[]) : map (x NonEmpty.<|) paths+ | otherwise -> map (x NonEmpty.<|) paths+++++-- | Given a non-empty list of indices, and some LSeq, extract the elemnets+-- on those indices.+--+-- running time: \(O(n)\)+extract :: NonEmpty Int -> LSeq.LSeq n a -> LSeq.LSeq 0 a+extract is = LSeq.fromList . extract' (F.toList is) 0 . F.toList++extract' :: [Int] -> Int -> [a] -> [a]+extract' [] _ _ = []+extract' (_:_) _ [] = []+extract' is'@(i:is) j (x:xs) | i == j = x : extract' is (j+1) xs+ | otherwise = extract' is' (j+1) xs++--------------------------------------------------------------------------------+++tr :: Tree Int+tr = Node 0 [Node 1 [], Node 2 [Node 3 [], Node 2 [], Node 4 [Node 5 []]]]++poly :: PolyLine 2 Int R+poly = case fromPoints [origin :+ 0, Point2 1 1 :+ 1, Point2 2 2 :+ 2, Point2 3 3 :+ 3] of+ Just p -> p++test = Seq.fromList [0..5]++myTree :: Tree Int+myTree = Node {rootLabel = 0, subForest = [Node {rootLabel = 1, subForest = []}+ ,Node {rootLabel = 2, subForest = []}+ ,Node {rootLabel = 3, subForest = []}]+ }
src/Data/Geometry/PolyLine.hs view
@@ -90,7 +90,7 @@ -- | Builds a Polyline from a list of points, if there are sufficiently many points fromPoints :: [Point d r :+ p] -> Maybe (PolyLine d p r)-fromPoints = fmap PolyLine . LSeq.eval (C @ 2) . LSeq.fromList+fromPoints = fmap PolyLine . LSeq.eval @2 . LSeq.fromList -- | pre: The input list contains at least two points fromPointsUnsafe :: [Point d r :+ p] -> PolyLine d p r