hgeometry 0.12.0.1 → 0.12.0.2
raw patch · 4 files changed
+108/−170 lines, 4 filesdep −directorydep −filepathdep −reanimatedep ~basedep ~hashabledep ~hgeometry-combinatorialPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: directory, filepath, reanimate, reanimate-svg
Dependency ranges changed: base, hashable, hgeometry-combinatorial, lens, linear, text, vector, vector-circular
API changes (from Hackage documentation)
+ Data.Geometry.BezierSpline: colinear :: (Ord r, Fractional r) => r -> BezierSpline 3 2 r -> Bool
+ Data.Geometry.BezierSpline: lineApproximate :: (Ord r, Fractional r) => r -> BezierSpline 3 2 r -> [Point 2 r]
+ Data.Geometry.BezierSpline: quadToCubic :: Fractional r => BezierSpline 2 2 r -> BezierSpline 3 2 r
+ Data.Geometry.Polygon.Bezier: JoinCurve :: Point 2 r -> Point 2 r -> PathJoin r
+ Data.Geometry.Polygon.Bezier: JoinLine :: PathJoin r
+ Data.Geometry.Polygon.Bezier: approximate :: forall t r. (Ord r, Fractional r) => r -> Polygon t (PathJoin r) r -> Polygon t () r
+ Data.Geometry.Polygon.Bezier: approximateSome :: (Ord r, Fractional r) => r -> SomePolygon (PathJoin r) r -> SomePolygon () r
+ Data.Geometry.Polygon.Bezier: data PathJoin r
+ Data.Geometry.Polygon.Bezier: fromBeziers :: (Eq r, Num r) => [BezierSpline 3 2 r] -> SimplePolygon (PathJoin r) r
+ Data.Geometry.Polygon.Bezier: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Polygon.Bezier.PathJoin r)
+ Data.Geometry.Polygon.Bezier: instance GHC.Classes.Ord r => GHC.Classes.Ord (Data.Geometry.Polygon.Bezier.PathJoin r)
+ Data.Geometry.Polygon.Bezier: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Polygon.Bezier.PathJoin r)
- Algorithms.Geometry.LinearProgramming.Types: _NoSolution :: forall d_a2EhK r_a2EhL. Prism' (LPSolution d_a2EhK r_a2EhL) ()
+ Algorithms.Geometry.LinearProgramming.Types: _NoSolution :: forall d_a2Erb r_a2Erc. Prism' (LPSolution d_a2Erb r_a2Erc) ()
- Algorithms.Geometry.LinearProgramming.Types: _Single :: forall d_a2EhK r_a2EhL. Prism' (LPSolution d_a2EhK r_a2EhL) (Point d_a2EhK r_a2EhL)
+ Algorithms.Geometry.LinearProgramming.Types: _Single :: forall d_a2Erb r_a2Erc. Prism' (LPSolution d_a2Erb r_a2Erc) (Point d_a2Erb r_a2Erc)
- Algorithms.Geometry.LinearProgramming.Types: _UnBounded :: forall d_a2EhK r_a2EhL. Prism' (LPSolution d_a2EhK r_a2EhL) (HalfLine d_a2EhK r_a2EhL)
+ Algorithms.Geometry.LinearProgramming.Types: _UnBounded :: forall d_a2Erb r_a2Erc. Prism' (LPSolution d_a2Erb r_a2Erc) (HalfLine d_a2Erb r_a2Erc)
- Algorithms.Geometry.LinearProgramming.Types: constraints :: forall d_a2EiW r_a2EiX. Lens' (LinearProgram d_a2EiW r_a2EiX) [HalfSpace d_a2EiW r_a2EiX]
+ Algorithms.Geometry.LinearProgramming.Types: constraints :: forall d_a2Esn r_a2Eso. Lens' (LinearProgram d_a2Esn r_a2Eso) [HalfSpace d_a2Esn r_a2Eso]
- Algorithms.Geometry.LinearProgramming.Types: objective :: forall d_a2EiW r_a2EiX. Lens' (LinearProgram d_a2EiW r_a2EiX) (Vector d_a2EiW r_a2EiX)
+ Algorithms.Geometry.LinearProgramming.Types: objective :: forall d_a2Esn r_a2Eso. Lens' (LinearProgram d_a2Esn r_a2Eso) (Vector d_a2Esn r_a2Eso)
- Algorithms.Geometry.SmallestEnclosingBall: definingPoints :: forall p_a2IDw r_a2IDx p_a2IWc. Lens (DiskResult p_a2IDw r_a2IDx) (DiskResult p_a2IWc r_a2IDx) (TwoOrThree ((:+) (Point 2 r_a2IDx) p_a2IDw)) (TwoOrThree ((:+) (Point 2 r_a2IDx) p_a2IWc))
+ Algorithms.Geometry.SmallestEnclosingBall: definingPoints :: forall p_a2IZX r_a2IZY p_a2JiD. Lens (DiskResult p_a2IZX r_a2IZY) (DiskResult p_a2JiD r_a2IZY) (TwoOrThree ((:+) (Point 2 r_a2IZY) p_a2IZX)) (TwoOrThree ((:+) (Point 2 r_a2IZY) p_a2JiD))
- Algorithms.Geometry.SmallestEnclosingBall: enclosingDisk :: forall p_a2IDw r_a2IDx. Lens' (DiskResult p_a2IDw r_a2IDx) (Disk () r_a2IDx)
+ Algorithms.Geometry.SmallestEnclosingBall: enclosingDisk :: forall p_a2IZX r_a2IZY. Lens' (DiskResult p_a2IZX r_a2IZY) (Disk () r_a2IZY)
- Algorithms.Geometry.WSPD: nodeData :: forall d_a2zQv r_a2zQw a_a2zQx a_a2zVe. Lens (NodeData d_a2zQv r_a2zQw a_a2zQx) (NodeData d_a2zQv r_a2zQw a_a2zVe) a_a2zQx a_a2zVe
+ Algorithms.Geometry.WSPD: nodeData :: forall d_a2zZW r_a2zZX a_a2zZY a_a2A4F. Lens (NodeData d_a2zZW r_a2zZX a_a2zZY) (NodeData d_a2zZW r_a2zZX a_a2A4F) a_a2zZY a_a2A4F
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: bBox :: forall d_a2zQv r_a2zQw a_a2zQx d_a2zVc r_a2zVd. Lens (NodeData d_a2zQv r_a2zQw a_a2zQx) (NodeData d_a2zVc r_a2zVd a_a2zQx) (Box d_a2zQv () r_a2zQw) (Box d_a2zVc () r_a2zVd)
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: bBox :: forall d_a2zZW r_a2zZX a_a2zZY d_a2A4D r_a2A4E. Lens (NodeData d_a2zZW r_a2zZX a_a2zZY) (NodeData d_a2A4D r_a2A4E a_a2zZY) (Box d_a2zZW () r_a2zZX) (Box d_a2A4D () r_a2A4E)
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: leftPart :: forall d_a2A7p r_a2A7q p_a2A7r. Lens' (FindAndCompact d_a2A7p r_a2A7q p_a2A7r) (Seq ((:+) (Point d_a2A7p r_a2A7q) p_a2A7r))
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: leftPart :: forall d_a2AgQ r_a2AgR p_a2AgS. Lens' (FindAndCompact d_a2AgQ r_a2AgR p_a2AgS) (Seq ((:+) (Point d_a2AgQ r_a2AgR) p_a2AgS))
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: nodeData :: forall d_a2zQv r_a2zQw a_a2zQx a_a2zVe. Lens (NodeData d_a2zQv r_a2zQw a_a2zQx) (NodeData d_a2zQv r_a2zQw a_a2zVe) a_a2zQx a_a2zVe
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: nodeData :: forall d_a2zZW r_a2zZX a_a2zZY a_a2A4F. Lens (NodeData d_a2zZW r_a2zZX a_a2zZY) (NodeData d_a2zZW r_a2zZX a_a2A4F) a_a2zZY a_a2A4F
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: rightPart :: forall d_a2A7p r_a2A7q p_a2A7r. Lens' (FindAndCompact d_a2A7p r_a2A7q p_a2A7r) (Seq ((:+) (Point d_a2A7p r_a2A7q) p_a2A7r))
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: rightPart :: forall d_a2AgQ r_a2AgR p_a2AgS. Lens' (FindAndCompact d_a2AgQ r_a2AgR p_a2AgS) (Seq ((:+) (Point d_a2AgQ r_a2AgR) p_a2AgS))
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: shortSide :: forall d_a2A7p r_a2A7q p_a2A7r. Lens' (FindAndCompact d_a2A7p r_a2A7q p_a2A7r) ShortSide
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: shortSide :: forall d_a2AgQ r_a2AgR p_a2AgS. Lens' (FindAndCompact d_a2AgQ r_a2AgR p_a2AgS) ShortSide
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: splitDim :: forall d_a2zQv r_a2zQw a_a2zQx. Lens' (NodeData d_a2zQv r_a2zQw a_a2zQx) Int
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: splitDim :: forall d_a2zZW r_a2zZX a_a2zZY. Lens' (NodeData d_a2zZW r_a2zZX a_a2zZY) Int
- Data.Geometry.Arrangement: boundedArea :: forall k_a3n55 (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G. Lens' (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (Rectangle () r_a3n4G)
+ Data.Geometry.Arrangement: boundedArea :: forall k_a3nrw (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7. Lens' (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (Rectangle () r_a3nr7)
- Data.Geometry.Arrangement: inputLines :: forall k_a3n55 (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G. Lens' (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (Vector ((:+) (Line 2 r_a3n4G) l_a3n4C))
+ Data.Geometry.Arrangement: inputLines :: forall k_a3nrw (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7. Lens' (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (Vector ((:+) (Line 2 r_a3nr7) l_a3nr3))
- Data.Geometry.Arrangement: subdivision :: forall k_a3n55 (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G v_a3nci e_a3ncj f_a3nck. Lens (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3nci e_a3ncj f_a3nck r_a3n4G) (PlanarSubdivision s_a3n4B v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (PlanarSubdivision s_a3n4B v_a3nci e_a3ncj f_a3nck r_a3n4G)
+ Data.Geometry.Arrangement: subdivision :: forall k_a3nrw (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7 v_a3nyJ e_a3nyK f_a3nyL. Lens (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nyJ e_a3nyK f_a3nyL r_a3nr7) (PlanarSubdivision s_a3nr2 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (PlanarSubdivision s_a3nr2 v_a3nyJ e_a3nyK f_a3nyL r_a3nr7)
- Data.Geometry.Arrangement: unboundedIntersections :: forall k_a3n55 (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G. Lens' (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (ArrangementBoundary s_a3n4B l_a3n4C r_a3n4G)
+ Data.Geometry.Arrangement: unboundedIntersections :: forall k_a3nrw (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7. Lens' (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (ArrangementBoundary s_a3nr2 l_a3nr3 r_a3nr7)
- Data.Geometry.Arrangement.Internal: boundedArea :: forall k_a3n55 (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G. Lens' (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (Rectangle () r_a3n4G)
+ Data.Geometry.Arrangement.Internal: boundedArea :: forall k_a3nrw (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7. Lens' (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (Rectangle () r_a3nr7)
- Data.Geometry.Arrangement.Internal: inputLines :: forall k_a3n55 (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G. Lens' (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (Vector ((:+) (Line 2 r_a3n4G) l_a3n4C))
+ Data.Geometry.Arrangement.Internal: inputLines :: forall k_a3nrw (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7. Lens' (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (Vector ((:+) (Line 2 r_a3nr7) l_a3nr3))
- Data.Geometry.Arrangement.Internal: subdivision :: forall k_a3n55 (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G v_a3nci e_a3ncj f_a3nck. Lens (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3nci e_a3ncj f_a3nck r_a3n4G) (PlanarSubdivision s_a3n4B v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (PlanarSubdivision s_a3n4B v_a3nci e_a3ncj f_a3nck r_a3n4G)
+ Data.Geometry.Arrangement.Internal: subdivision :: forall k_a3nrw (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7 v_a3nyJ e_a3nyK f_a3nyL. Lens (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nyJ e_a3nyK f_a3nyL r_a3nr7) (PlanarSubdivision s_a3nr2 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (PlanarSubdivision s_a3nr2 v_a3nyJ e_a3nyK f_a3nyL r_a3nr7)
- Data.Geometry.Arrangement.Internal: unboundedIntersections :: forall k_a3n55 (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G. Lens' (Arrangement (s_a3n4B :: k_a3n55) l_a3n4C v_a3n4D e_a3n4E f_a3n4F r_a3n4G) (ArrangementBoundary s_a3n4B l_a3n4C r_a3n4G)
+ Data.Geometry.Arrangement.Internal: unboundedIntersections :: forall k_a3nrw (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7. Lens' (Arrangement (s_a3nr2 :: k_a3nrw) l_a3nr3 v_a3nr4 e_a3nr5 f_a3nr6 r_a3nr7) (ArrangementBoundary s_a3nr2 l_a3nr3 r_a3nr7)
- Data.Geometry.Ball: center :: forall d_a2awh p_a2awi r_a2awj d_a2ayV p_a2ayW. Lens (Ball d_a2awh p_a2awi r_a2awj) (Ball d_a2ayV p_a2ayW r_a2awj) ((:+) (Point d_a2awh r_a2awj) p_a2awi) ((:+) (Point d_a2ayV r_a2awj) p_a2ayW)
+ Data.Geometry.Ball: center :: forall d_a2aFI p_a2aFJ r_a2aFK d_a2aIm p_a2aIn. Lens (Ball d_a2aFI p_a2aFJ r_a2aFK) (Ball d_a2aIm p_a2aIn r_a2aFK) ((:+) (Point d_a2aFI r_a2aFK) p_a2aFJ) ((:+) (Point d_a2aIm r_a2aFK) p_a2aIn)
- Data.Geometry.Ball: squaredRadius :: forall d_a2awh p_a2awi r_a2awj. Lens' (Ball d_a2awh p_a2awi r_a2awj) r_a2awj
+ Data.Geometry.Ball: squaredRadius :: forall d_a2aFI p_a2aFJ r_a2aFK. Lens' (Ball d_a2aFI p_a2aFJ r_a2aFK) r_a2aFK
- Data.Geometry.Box.Corners: northEast :: forall a_a1CLy. Lens' (Corners a_a1CLy) a_a1CLy
+ Data.Geometry.Box.Corners: northEast :: forall a_a1CNV. Lens' (Corners a_a1CNV) a_a1CNV
- Data.Geometry.Box.Corners: northWest :: forall a_a1CLy. Lens' (Corners a_a1CLy) a_a1CLy
+ Data.Geometry.Box.Corners: northWest :: forall a_a1CNV. Lens' (Corners a_a1CNV) a_a1CNV
- Data.Geometry.Box.Corners: southEast :: forall a_a1CLy. Lens' (Corners a_a1CLy) a_a1CLy
+ Data.Geometry.Box.Corners: southEast :: forall a_a1CNV. Lens' (Corners a_a1CNV) a_a1CNV
- Data.Geometry.Box.Corners: southWest :: forall a_a1CLy. Lens' (Corners a_a1CLy) a_a1CLy
+ Data.Geometry.Box.Corners: southWest :: forall a_a1CNV. Lens' (Corners a_a1CNV) a_a1CNV
- Data.Geometry.Box.Internal: cwMax :: forall a_a1jTe a_a1kan. Iso (CWMax a_a1jTe) (CWMax a_a1kan) a_a1jTe a_a1kan
+ Data.Geometry.Box.Internal: cwMax :: forall a_a1jVB a_a1kcK. Iso (CWMax a_a1jVB) (CWMax a_a1kcK) a_a1jVB a_a1kcK
- Data.Geometry.Box.Internal: cwMin :: forall a_a1jEd a_a1jT8. Iso (CWMin a_a1jEd) (CWMin a_a1jT8) a_a1jEd a_a1jT8
+ Data.Geometry.Box.Internal: cwMin :: forall a_a1jGA a_a1jVv. Iso (CWMin a_a1jGA) (CWMin a_a1jVv) a_a1jGA a_a1jVv
- Data.Geometry.Box.Internal: maxP :: forall d_a1kau p_a1kav r_a1kaw. Lens' (Box d_a1kau p_a1kav r_a1kaw) ((:+) (CWMax (Point d_a1kau r_a1kaw)) p_a1kav)
+ Data.Geometry.Box.Internal: maxP :: forall d_a1kcR p_a1kcS r_a1kcT. Lens' (Box d_a1kcR p_a1kcS r_a1kcT) ((:+) (CWMax (Point d_a1kcR r_a1kcT)) p_a1kcS)
- Data.Geometry.Box.Internal: minP :: forall d_a1kau p_a1kav r_a1kaw. Lens' (Box d_a1kau p_a1kav r_a1kaw) ((:+) (CWMin (Point d_a1kau r_a1kaw)) p_a1kav)
+ Data.Geometry.Box.Internal: minP :: forall d_a1kcR p_a1kcS r_a1kcT. Lens' (Box d_a1kcR p_a1kcS r_a1kcT) ((:+) (CWMin (Point d_a1kcR r_a1kcT)) p_a1kcS)
- Data.Geometry.Box.Sides: east :: forall a_a1FbN. Lens' (Sides a_a1FbN) a_a1FbN
+ Data.Geometry.Box.Sides: east :: forall a_a1Fea. Lens' (Sides a_a1Fea) a_a1Fea
- Data.Geometry.Box.Sides: north :: forall a_a1FbN. Lens' (Sides a_a1FbN) a_a1FbN
+ Data.Geometry.Box.Sides: north :: forall a_a1Fea. Lens' (Sides a_a1Fea) a_a1Fea
- Data.Geometry.Box.Sides: south :: forall a_a1FbN. Lens' (Sides a_a1FbN) a_a1FbN
+ Data.Geometry.Box.Sides: south :: forall a_a1Fea. Lens' (Sides a_a1Fea) a_a1Fea
- Data.Geometry.Box.Sides: west :: forall a_a1FbN. Lens' (Sides a_a1FbN) a_a1FbN
+ Data.Geometry.Box.Sides: west :: forall a_a1Fea. Lens' (Sides a_a1Fea) a_a1Fea
- Data.Geometry.Ellipse: affineTransformation :: forall r_a2wor r_a2wR7. Iso (Ellipse r_a2wor) (Ellipse r_a2wR7) (Transformation 2 r_a2wor) (Transformation 2 r_a2wR7)
+ Data.Geometry.Ellipse: affineTransformation :: forall r_a2wxS r_a2x0y. Iso (Ellipse r_a2wxS) (Ellipse r_a2x0y) (Transformation 2 r_a2wxS) (Transformation 2 r_a2x0y)
- Data.Geometry.HalfLine: halfLineDirection :: forall d_a22kT r_a22kU. Lens' (HalfLine d_a22kT r_a22kU) (Vector d_a22kT r_a22kU)
+ Data.Geometry.HalfLine: halfLineDirection :: forall d_a22nq r_a22nr. Lens' (HalfLine d_a22nq r_a22nr) (Vector d_a22nq r_a22nr)
- Data.Geometry.HalfLine: startPoint :: forall d_a22kT r_a22kU. Lens' (HalfLine d_a22kT r_a22kU) (Point d_a22kT r_a22kU)
+ Data.Geometry.HalfLine: startPoint :: forall d_a22nq r_a22nr. Lens' (HalfLine d_a22nq r_a22nr) (Point d_a22nq r_a22nr)
- Data.Geometry.HalfSpace: boundingPlane :: forall d_a27kv r_a27kw d_a27mo r_a27mp. Iso (HalfSpace d_a27kv r_a27kw) (HalfSpace d_a27mo r_a27mp) (HyperPlane d_a27kv r_a27kw) (HyperPlane d_a27mo r_a27mp)
+ Data.Geometry.HalfSpace: boundingPlane :: forall d_a27n2 r_a27n3 d_a27oV r_a27oW. Iso (HalfSpace d_a27n2 r_a27n3) (HalfSpace d_a27oV r_a27oW) (HyperPlane d_a27n2 r_a27n3) (HyperPlane d_a27oV r_a27oW)
- Data.Geometry.HyperPlane: inPlane :: forall d_a1YpS r_a1YpT. Lens' (HyperPlane d_a1YpS r_a1YpT) (Point d_a1YpS r_a1YpT)
+ Data.Geometry.HyperPlane: inPlane :: forall d_a1Ysp r_a1Ysq. Lens' (HyperPlane d_a1Ysp r_a1Ysq) (Point d_a1Ysp r_a1Ysq)
- Data.Geometry.HyperPlane: normalVec :: forall d_a1YpS r_a1YpT. Lens' (HyperPlane d_a1YpS r_a1YpT) (Vector d_a1YpS r_a1YpT)
+ Data.Geometry.HyperPlane: normalVec :: forall d_a1Ysp r_a1Ysq. Lens' (HyperPlane d_a1Ysp r_a1Ysq) (Vector d_a1Ysp r_a1Ysq)
- Data.Geometry.Interval.Util: unL :: forall r_aliD r_alMb. Iso (L r_aliD) (L r_alMb) (EndPoint r_aliD) (EndPoint r_alMb)
+ Data.Geometry.Interval.Util: unL :: forall r_alkY r_alOC. Iso (L r_alkY) (L r_alOC) (EndPoint r_alkY) (EndPoint r_alOC)
- Data.Geometry.Interval.Util: unR :: forall r_alMh r_alZa. Iso (R r_alMh) (R r_alZa) (EndPoint r_alMh) (EndPoint r_alZa)
+ Data.Geometry.Interval.Util: unR :: forall r_alOI r_am1B. Iso (R r_alOI) (R r_am1B) (EndPoint r_alOI) (EndPoint r_am1B)
- Data.Geometry.IntervalTree: intervalsLeft :: forall i_ap0w r_ap0x. Lens' (NodeData i_ap0w r_ap0x) (Map (L r_ap0x) [i_ap0w])
+ Data.Geometry.IntervalTree: intervalsLeft :: forall i_ap2T r_ap2U. Lens' (NodeData i_ap2T r_ap2U) (Map (L r_ap2U) [i_ap2T])
- Data.Geometry.IntervalTree: intervalsRight :: forall i_ap0w r_ap0x. Lens' (NodeData i_ap0w r_ap0x) (Map (R r_ap0x) [i_ap0w])
+ Data.Geometry.IntervalTree: intervalsRight :: forall i_ap2T r_ap2U. Lens' (NodeData i_ap2T r_ap2U) (Map (R r_ap2U) [i_ap2T])
- Data.Geometry.IntervalTree: splitPoint :: forall i_ap0w r_ap0x. Lens' (NodeData i_ap0w r_ap0x) r_ap0x
+ Data.Geometry.IntervalTree: splitPoint :: forall i_ap2T r_ap2U. Lens' (NodeData i_ap2T r_ap2U) r_ap2U
- Data.Geometry.IntervalTree: unIntervalTree :: forall i_ap9y r_ap9z i_apgw r_apgx. Iso (IntervalTree i_ap9y r_ap9z) (IntervalTree i_apgw r_apgx) (BinaryTree (NodeData i_ap9y r_ap9z)) (BinaryTree (NodeData i_apgw r_apgx))
+ Data.Geometry.IntervalTree: unIntervalTree :: forall i_apbV r_apbW i_apiT r_apiU. Iso (IntervalTree i_apbV r_apbW) (IntervalTree i_apiT r_apiU) (BinaryTree (NodeData i_apbV r_apbW)) (BinaryTree (NodeData i_apiT r_apiU))
- Data.Geometry.PlanarSubdivision.Basic: components :: forall k_a3b5e (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3b4D r_a3b4E r_a3bhJ. Lens (PlanarSubdivision (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3b4D r_a3b4E) (PlanarSubdivision (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3b4D r_a3bhJ) (Vector (Component s_a3b4A r_a3b4E)) (Vector (Component s_a3b4A r_a3bhJ))
+ Data.Geometry.PlanarSubdivision.Basic: components :: forall k_a3brF (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3br4 r_a3br5 r_a3bEa. Lens (PlanarSubdivision (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3br4 r_a3br5) (PlanarSubdivision (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3br4 r_a3bEa) (Vector (Component s_a3br1 r_a3br5)) (Vector (Component s_a3br1 r_a3bEa))
- Data.Geometry.PlanarSubdivision.Basic: fData :: forall h_a34W8 f_a34W9 f_a35I8. Lens (FaceData h_a34W8 f_a34W9) (FaceData h_a34W8 f_a35I8) f_a34W9 f_a35I8
+ Data.Geometry.PlanarSubdivision.Basic: fData :: forall h_a35iz f_a35iA f_a364z. Lens (FaceData h_a35iz f_a35iA) (FaceData h_a35iz f_a364z) f_a35iA f_a364z
- Data.Geometry.PlanarSubdivision.Basic: holes :: forall h_a34W8 f_a34W9 h_a35I9. Lens (FaceData h_a34W8 f_a34W9) (FaceData h_a35I9 f_a34W9) (Seq h_a34W8) (Seq h_a35I9)
+ Data.Geometry.PlanarSubdivision.Basic: holes :: forall h_a35iz f_a35iA h_a364A. Lens (FaceData h_a35iz f_a35iA) (FaceData h_a364A f_a35iA) (Seq h_a35iz) (Seq h_a364A)
- Data.Geometry.PlanarSubdivision.Basic: location :: forall r_a2XhW v_a2XhX r_a2XwA. Lens (VertexData r_a2XhW v_a2XhX) (VertexData r_a2XwA v_a2XhX) (Point 2 r_a2XhW) (Point 2 r_a2XwA)
+ Data.Geometry.PlanarSubdivision.Basic: location :: forall r_a2XEn v_a2XEo r_a2XT1. Lens (VertexData r_a2XEn v_a2XEo) (VertexData r_a2XT1 v_a2XEo) (Point 2 r_a2XEn) (Point 2 r_a2XT1)
- Data.Geometry.PlanarSubdivision.Basic: rawDartData :: forall k_a3b5e (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3b4D r_a3b4E e_a3bhK. Lens (PlanarSubdivision (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3b4D r_a3b4E) (PlanarSubdivision (s_a3b4A :: k_a3b5e) v_a3b4B e_a3bhK f_a3b4D r_a3b4E) (Vector (Raw s_a3b4A (Dart (Wrap s_a3b4A)) e_a3b4C)) (Vector (Raw s_a3b4A (Dart (Wrap s_a3b4A)) e_a3bhK))
+ Data.Geometry.PlanarSubdivision.Basic: rawDartData :: forall k_a3brF (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3br4 r_a3br5 e_a3bEb. Lens (PlanarSubdivision (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3br4 r_a3br5) (PlanarSubdivision (s_a3br1 :: k_a3brF) v_a3br2 e_a3bEb f_a3br4 r_a3br5) (Vector (Raw s_a3br1 (Dart (Wrap s_a3br1)) e_a3br3)) (Vector (Raw s_a3br1 (Dart (Wrap s_a3br1)) e_a3bEb))
- Data.Geometry.PlanarSubdivision.Basic: rawFaceData :: forall k_a3b5e (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3b4D r_a3b4E f_a3bhL. Lens (PlanarSubdivision (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3b4D r_a3b4E) (PlanarSubdivision (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3bhL r_a3b4E) (Vector (RawFace s_a3b4A f_a3b4D)) (Vector (RawFace s_a3b4A f_a3bhL))
+ Data.Geometry.PlanarSubdivision.Basic: rawFaceData :: forall k_a3brF (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3br4 r_a3br5 f_a3bEc. Lens (PlanarSubdivision (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3br4 r_a3br5) (PlanarSubdivision (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3bEc r_a3br5) (Vector (RawFace s_a3br1 f_a3br4)) (Vector (RawFace s_a3br1 f_a3bEc))
- Data.Geometry.PlanarSubdivision.Basic: rawVertexData :: forall k_a3b5e (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3b4D r_a3b4E v_a3bhM. Lens (PlanarSubdivision (s_a3b4A :: k_a3b5e) v_a3b4B e_a3b4C f_a3b4D r_a3b4E) (PlanarSubdivision (s_a3b4A :: k_a3b5e) v_a3bhM e_a3b4C f_a3b4D r_a3b4E) (Vector (Raw s_a3b4A (VertexId' (Wrap s_a3b4A)) v_a3b4B)) (Vector (Raw s_a3b4A (VertexId' (Wrap s_a3b4A)) v_a3bhM))
+ Data.Geometry.PlanarSubdivision.Basic: rawVertexData :: forall k_a3brF (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3br4 r_a3br5 v_a3bEd. Lens (PlanarSubdivision (s_a3br1 :: k_a3brF) v_a3br2 e_a3br3 f_a3br4 r_a3br5) (PlanarSubdivision (s_a3br1 :: k_a3brF) v_a3bEd e_a3br3 f_a3br4 r_a3br5) (Vector (Raw s_a3br1 (VertexId' (Wrap s_a3br1)) v_a3br2)) (Vector (Raw s_a3br1 (VertexId' (Wrap s_a3br1)) v_a3bEd))
- Data.Geometry.PlanarSubdivision.Basic: vData :: forall r_a2XhW v_a2XhX v_a2XwB. Lens (VertexData r_a2XhW v_a2XhX) (VertexData r_a2XhW v_a2XwB) v_a2XhX v_a2XwB
+ Data.Geometry.PlanarSubdivision.Basic: vData :: forall r_a2XEn v_a2XEo v_a2XT2. Lens (VertexData r_a2XEn v_a2XEo) (VertexData r_a2XEn v_a2XT2) v_a2XEo v_a2XT2
- Data.Geometry.PlanarSubdivision.Raw: fData :: forall h_a34W8 f_a34W9 f_a35I8. Lens (FaceData h_a34W8 f_a34W9) (FaceData h_a34W8 f_a35I8) f_a34W9 f_a35I8
+ Data.Geometry.PlanarSubdivision.Raw: fData :: forall h_a35iz f_a35iA f_a364z. Lens (FaceData h_a35iz f_a35iA) (FaceData h_a35iz f_a364z) f_a35iA f_a364z
- Data.Geometry.PlanarSubdivision.Raw: faceDataVal :: forall k_a35J2 (s_a35Io :: k_a35J2) f_a35Ip f_a35Y6. Lens (RawFace (s_a35Io :: k_a35J2) f_a35Ip) (RawFace (s_a35Io :: k_a35J2) f_a35Y6) (FaceData (Dart s_a35Io) f_a35Ip) (FaceData (Dart s_a35Io) f_a35Y6)
+ Data.Geometry.PlanarSubdivision.Raw: faceDataVal :: forall k_a365t (s_a364P :: k_a365t) f_a364Q f_a36kx. Lens (RawFace (s_a364P :: k_a365t) f_a364Q) (RawFace (s_a364P :: k_a365t) f_a36kx) (FaceData (Dart s_a364P) f_a364Q) (FaceData (Dart s_a364P) f_a36kx)
- Data.Geometry.PlanarSubdivision.Raw: faceIdx :: forall k_a35J2 (s_a35Io :: k_a35J2) f_a35Ip. Lens' (RawFace (s_a35Io :: k_a35J2) f_a35Ip) (Maybe (ComponentId s_a35Io, FaceId' (Wrap s_a35Io)))
+ Data.Geometry.PlanarSubdivision.Raw: faceIdx :: forall k_a365t (s_a364P :: k_a365t) f_a364Q. Lens' (RawFace (s_a364P :: k_a365t) f_a364Q) (Maybe (ComponentId s_a364P, FaceId' (Wrap s_a364P)))
- Data.Geometry.PlanarSubdivision.Raw: holes :: forall h_a34W8 f_a34W9 h_a35I9. Lens (FaceData h_a34W8 f_a34W9) (FaceData h_a35I9 f_a34W9) (Seq h_a34W8) (Seq h_a35I9)
+ Data.Geometry.PlanarSubdivision.Raw: holes :: forall h_a35iz f_a35iA h_a364A. Lens (FaceData h_a35iz f_a35iA) (FaceData h_a364A f_a35iA) (Seq h_a35iz) (Seq h_a364A)
- Data.Geometry.PointLocation.PersistentSweep: outerFace :: forall k_a3jOy (s_a3jOj :: k_a3jOy) v_a3jOk e_a3jOl f_a3jOm r_a3jOn. Getter (PointLocationDS (s_a3jOj :: k_a3jOy) v_a3jOk e_a3jOl f_a3jOm r_a3jOn) (FaceId' s_a3jOj)
+ Data.Geometry.PointLocation.PersistentSweep: outerFace :: forall k_a3kaZ (s_a3kaK :: k_a3kaZ) v_a3kaL e_a3kaM f_a3kaN r_a3kaO. Getter (PointLocationDS (s_a3kaK :: k_a3kaZ) v_a3kaL e_a3kaM f_a3kaN r_a3kaO) (FaceId' s_a3kaK)
- Data.Geometry.PointLocation.PersistentSweep: subdivision :: forall k_a3jOy (s_a3jOj :: k_a3jOy) v_a3jOk e_a3jOl f_a3jOm r_a3jOn. Getter (PointLocationDS (s_a3jOj :: k_a3jOy) v_a3jOk e_a3jOl f_a3jOm r_a3jOn) (PlanarSubdivision s_a3jOj v_a3jOk e_a3jOl f_a3jOm r_a3jOn)
+ Data.Geometry.PointLocation.PersistentSweep: subdivision :: forall k_a3kaZ (s_a3kaK :: k_a3kaZ) v_a3kaL e_a3kaM f_a3kaN r_a3kaO. Getter (PointLocationDS (s_a3kaK :: k_a3kaZ) v_a3kaL e_a3kaM f_a3kaN r_a3kaO) (PlanarSubdivision s_a3kaK v_a3kaL e_a3kaM f_a3kaN r_a3kaO)
- Data.Geometry.PointLocation.PersistentSweep: verticalRayShootingStructure :: forall k_a3jOy (s_a3jOj :: k_a3jOy) v_a3jOk e_a3jOl f_a3jOm r_a3jOn. Getter (PointLocationDS (s_a3jOj :: k_a3jOy) v_a3jOk e_a3jOl f_a3jOm r_a3jOn) (VerticalRayShootingStructure v_a3jOk (Dart s_a3jOj) r_a3jOn)
+ Data.Geometry.PointLocation.PersistentSweep: verticalRayShootingStructure :: forall k_a3kaZ (s_a3kaK :: k_a3kaZ) v_a3kaL e_a3kaM f_a3kaN r_a3kaO. Getter (PointLocationDS (s_a3kaK :: k_a3kaZ) v_a3kaL e_a3kaM f_a3kaN r_a3kaO) (VerticalRayShootingStructure v_a3kaL (Dart s_a3kaK) r_a3kaO)
- Data.Geometry.QuadTree: startingCell :: forall v_a1NJr p_a1NJs r_a1NJt r_a1NVy. Lens (QuadTree v_a1NJr p_a1NJs r_a1NJt) (QuadTree v_a1NJr p_a1NJs r_a1NVy) (Cell r_a1NJt) (Cell r_a1NVy)
+ Data.Geometry.QuadTree: startingCell :: forall v_a1NLO p_a1NLP r_a1NLQ r_a1NXV. Lens (QuadTree v_a1NLO p_a1NLP r_a1NLQ) (QuadTree v_a1NLO p_a1NLP r_a1NXV) (Cell r_a1NLQ) (Cell r_a1NXV)
- Data.Geometry.QuadTree: tree :: forall v_a1NJr p_a1NJs r_a1NJt v_a1NVz p_a1NVA. Lens (QuadTree v_a1NJr p_a1NJs r_a1NJt) (QuadTree v_a1NVz p_a1NVA r_a1NJt) (Tree v_a1NJr p_a1NJs) (Tree v_a1NVz p_a1NVA)
+ Data.Geometry.QuadTree: tree :: forall v_a1NLO p_a1NLP r_a1NLQ v_a1NXW p_a1NXX. Lens (QuadTree v_a1NLO p_a1NLP r_a1NLQ) (QuadTree v_a1NXW p_a1NXX r_a1NLQ) (Tree v_a1NLO p_a1NLP) (Tree v_a1NXW p_a1NXX)
- Data.Geometry.QuadTree.Cell: cellWidthIndex :: forall r_a1I4V. Lens' (Cell r_a1I4V) WidthIndex
+ Data.Geometry.QuadTree.Cell: cellWidthIndex :: forall r_a1I7i. Lens' (Cell r_a1I7i) WidthIndex
- Data.Geometry.QuadTree.Cell: lowerLeft :: forall r_a1I4V r_a1IfU. Lens (Cell r_a1I4V) (Cell r_a1IfU) (Point 2 r_a1I4V) (Point 2 r_a1IfU)
+ Data.Geometry.QuadTree.Cell: lowerLeft :: forall r_a1I7i r_a1Iih. Lens (Cell r_a1I7i) (Cell r_a1Iih) (Point 2 r_a1I7i) (Point 2 r_a1Iih)
- Data.Geometry.QuadTree.Split: _No :: forall i_a1Ls9 v_a1Lsa p_a1Lyq p_a1Lsb. Prism (Split i_a1Ls9 v_a1Lsa p_a1Lyq) (Split i_a1Ls9 v_a1Lsa p_a1Lsb) p_a1Lyq p_a1Lsb
+ Data.Geometry.QuadTree.Split: _No :: forall i_a1Luw v_a1Lux p_a1LAN p_a1Luy. Prism (Split i_a1Luw v_a1Lux p_a1LAN) (Split i_a1Luw v_a1Lux p_a1Luy) p_a1LAN p_a1Luy
- Data.Geometry.QuadTree.Split: _Yes :: forall i_a1Lyw v_a1Lyx p_a1Lsb i_a1Ls9 v_a1Lsa. Prism (Split i_a1Lyw v_a1Lyx p_a1Lsb) (Split i_a1Ls9 v_a1Lsa p_a1Lsb) (v_a1Lyx, Quadrants i_a1Lyw) (v_a1Lsa, Quadrants i_a1Ls9)
+ Data.Geometry.QuadTree.Split: _Yes :: forall i_a1LAT v_a1LAU p_a1Luy i_a1Luw v_a1Lux. Prism (Split i_a1LAT v_a1LAU p_a1Luy) (Split i_a1Luw v_a1Lux p_a1Luy) (v_a1LAU, Quadrants i_a1LAT) (v_a1Lux, Quadrants i_a1Luw)
- Data.Geometry.QuadTree.Tree: _Leaf :: forall v_a1MrZ p_a1Ms0. Prism' (Tree v_a1MrZ p_a1Ms0) p_a1Ms0
+ Data.Geometry.QuadTree.Tree: _Leaf :: forall v_a1Mum p_a1Mun. Prism' (Tree v_a1Mum p_a1Mun) p_a1Mun
- Data.Geometry.QuadTree.Tree: _Node :: forall v_a1Mvo p_a1Ms0 v_a1MrZ. Prism (Tree v_a1Mvo p_a1Ms0) (Tree v_a1MrZ p_a1Ms0) (v_a1Mvo, Quadrants (Tree v_a1Mvo p_a1Ms0)) (v_a1MrZ, Quadrants (Tree v_a1MrZ p_a1Ms0))
+ Data.Geometry.QuadTree.Tree: _Node :: forall v_a1MxL p_a1Mun v_a1Mum. Prism (Tree v_a1MxL p_a1Mun) (Tree v_a1Mum p_a1Mun) (v_a1MxL, Quadrants (Tree v_a1MxL p_a1Mun)) (v_a1Mum, Quadrants (Tree v_a1Mum p_a1Mun))
- Data.Geometry.SegmentTree.Generic: assoc :: forall v_atY5 r_atY6 v_au54. Lens (NodeData v_atY5 r_atY6) (NodeData v_au54 r_atY6) v_atY5 v_au54
+ Data.Geometry.SegmentTree.Generic: assoc :: forall v_au0s r_au0t v_au7r. Lens (NodeData v_au0s r_au0t) (NodeData v_au7r r_au0t) v_au0s v_au7r
- Data.Geometry.SegmentTree.Generic: atomicRange :: forall v_au5u r_au5v r_auj1. Lens (LeafData v_au5u r_au5v) (LeafData v_au5u r_auj1) (AtomicRange r_au5v) (AtomicRange r_auj1)
+ Data.Geometry.SegmentTree.Generic: atomicRange :: forall v_au7R r_au7S r_aulo. Lens (LeafData v_au7R r_au7S) (LeafData v_au7R r_aulo) (AtomicRange r_au7S) (AtomicRange r_aulo)
- Data.Geometry.SegmentTree.Generic: leafAssoc :: forall v_au5u r_au5v v_auj2. Lens (LeafData v_au5u r_au5v) (LeafData v_auj2 r_au5v) v_au5u v_auj2
+ Data.Geometry.SegmentTree.Generic: leafAssoc :: forall v_au7R r_au7S v_aulp. Lens (LeafData v_au7R r_au7S) (LeafData v_aulp r_au7S) v_au7R v_aulp
- Data.Geometry.SegmentTree.Generic: range :: forall v_atY5 r_atY6. Lens' (NodeData v_atY5 r_atY6) (Range r_atY6)
+ Data.Geometry.SegmentTree.Generic: range :: forall v_au0s r_au0t. Lens' (NodeData v_au0s r_au0t) (Range r_au0t)
- Data.Geometry.SegmentTree.Generic: splitPoint :: forall v_atY5 r_atY6. Lens' (NodeData v_atY5 r_atY6) (EndPoint r_atY6)
+ Data.Geometry.SegmentTree.Generic: splitPoint :: forall v_au0s r_au0t. Lens' (NodeData v_au0s r_au0t) (EndPoint r_au0t)
- Data.Geometry.SegmentTree.Generic: unSegmentTree :: forall v_aujg r_aujh v_aur5 r_aur6. Iso (SegmentTree v_aujg r_aujh) (SegmentTree v_aur5 r_aur6) (BinLeafTree (NodeData v_aujg r_aujh) (LeafData v_aujg r_aujh)) (BinLeafTree (NodeData v_aur5 r_aur6) (LeafData v_aur5 r_aur6))
+ Data.Geometry.SegmentTree.Generic: unSegmentTree :: forall v_aulD r_aulE v_auts r_autt. Iso (SegmentTree v_aulD r_aulE) (SegmentTree v_auts r_autt) (BinLeafTree (NodeData v_aulD r_aulE) (LeafData v_aulD r_aulE)) (BinLeafTree (NodeData v_auts r_autt) (LeafData v_auts r_autt))
- Data.Geometry.Slab: unSlab :: forall o_a1Vkj a_a1Vkk r_a1Vkl o_a1VpV a_a1VpW r_a1VpX. Iso (Slab o_a1Vkj a_a1Vkk r_a1Vkl) (Slab o_a1VpV a_a1VpW r_a1VpX) (Interval a_a1Vkk r_a1Vkl) (Interval a_a1VpW r_a1VpX)
+ Data.Geometry.Slab: unSlab :: forall o_a1VmQ a_a1VmR r_a1VmS o_a1Vss a_a1Vst r_a1Vsu. Iso (Slab o_a1VmQ a_a1VmR r_a1VmS) (Slab o_a1Vss a_a1Vst r_a1Vsu) (Interval a_a1VmR r_a1VmS) (Interval a_a1Vst r_a1Vsu)
- Data.Geometry.VerticalRayShooting.PersistentSweep: leftMost :: forall p_a2SeT e_a2SeU r_a2SeV. Getter (VerticalRayShootingStructure p_a2SeT e_a2SeU r_a2SeV) r_a2SeV
+ Data.Geometry.VerticalRayShooting.PersistentSweep: leftMost :: forall p_a2SBk e_a2SBl r_a2SBm. Getter (VerticalRayShootingStructure p_a2SBk e_a2SBl r_a2SBm) r_a2SBm
- Data.Geometry.VerticalRayShooting.PersistentSweep: sweepStruct :: forall p_a2SeT e_a2SeU r_a2SeV. Getter (VerticalRayShootingStructure p_a2SeT e_a2SeU r_a2SeV) (Vector ((:+) r_a2SeV (StatusStructure p_a2SeT e_a2SeU r_a2SeV)))
+ Data.Geometry.VerticalRayShooting.PersistentSweep: sweepStruct :: forall p_a2SBk e_a2SBl r_a2SBm. Getter (VerticalRayShootingStructure p_a2SBk e_a2SBl r_a2SBm) (Vector ((:+) r_a2SBm (StatusStructure p_a2SBk e_a2SBl r_a2SBm)))
- Data.PlaneGraph: graph :: forall k_a2XxC (s_a2XwQ :: k_a2XxC) v_a2XwR e_a2XwS f_a2XwT r_a2XwU k_a2XHU (s_a2XHP :: k_a2XHU) v_a2XHQ e_a2XHR f_a2XHS r_a2XHT. Iso (PlaneGraph (s_a2XwQ :: k_a2XxC) v_a2XwR e_a2XwS f_a2XwT r_a2XwU) (PlaneGraph (s_a2XHP :: k_a2XHU) v_a2XHQ e_a2XHR f_a2XHS r_a2XHT) (PlanarGraph s_a2XwQ 'Primal (VertexData r_a2XwU v_a2XwR) e_a2XwS f_a2XwT) (PlanarGraph s_a2XHP 'Primal (VertexData r_a2XHT v_a2XHQ) e_a2XHR f_a2XHS)
+ Data.PlaneGraph: graph :: forall k_a2XU3 (s_a2XTh :: k_a2XU3) v_a2XTi e_a2XTj f_a2XTk r_a2XTl k_a2Y4l (s_a2Y4g :: k_a2Y4l) v_a2Y4h e_a2Y4i f_a2Y4j r_a2Y4k. Iso (PlaneGraph (s_a2XTh :: k_a2XU3) v_a2XTi e_a2XTj f_a2XTk r_a2XTl) (PlaneGraph (s_a2Y4g :: k_a2Y4l) v_a2Y4h e_a2Y4i f_a2Y4j r_a2Y4k) (PlanarGraph s_a2XTh 'Primal (VertexData r_a2XTl v_a2XTi) e_a2XTj f_a2XTk) (PlanarGraph s_a2Y4g 'Primal (VertexData r_a2Y4k v_a2Y4h) e_a2Y4i f_a2Y4j)
- Data.PlaneGraph: location :: forall r_a2XhW v_a2XhX r_a2XwA. Lens (VertexData r_a2XhW v_a2XhX) (VertexData r_a2XwA v_a2XhX) (Point 2 r_a2XhW) (Point 2 r_a2XwA)
+ Data.PlaneGraph: location :: forall r_a2XEn v_a2XEo r_a2XT1. Lens (VertexData r_a2XEn v_a2XEo) (VertexData r_a2XT1 v_a2XEo) (Point 2 r_a2XEn) (Point 2 r_a2XT1)
- Data.PlaneGraph: vData :: forall r_a2XhW v_a2XhX v_a2XwB. Lens (VertexData r_a2XhW v_a2XhX) (VertexData r_a2XhW v_a2XwB) v_a2XhX v_a2XwB
+ Data.PlaneGraph: vData :: forall r_a2XEn v_a2XEo v_a2XT2. Lens (VertexData r_a2XEn v_a2XEo) (VertexData r_a2XEn v_a2XT2) v_a2XEo v_a2XT2
- Data.PlaneGraph.Core: graph :: forall k_a2XxC (s_a2XwQ :: k_a2XxC) v_a2XwR e_a2XwS f_a2XwT r_a2XwU k_a2XHU (s_a2XHP :: k_a2XHU) v_a2XHQ e_a2XHR f_a2XHS r_a2XHT. Iso (PlaneGraph (s_a2XwQ :: k_a2XxC) v_a2XwR e_a2XwS f_a2XwT r_a2XwU) (PlaneGraph (s_a2XHP :: k_a2XHU) v_a2XHQ e_a2XHR f_a2XHS r_a2XHT) (PlanarGraph s_a2XwQ 'Primal (VertexData r_a2XwU v_a2XwR) e_a2XwS f_a2XwT) (PlanarGraph s_a2XHP 'Primal (VertexData r_a2XHT v_a2XHQ) e_a2XHR f_a2XHS)
+ Data.PlaneGraph.Core: graph :: forall k_a2XU3 (s_a2XTh :: k_a2XU3) v_a2XTi e_a2XTj f_a2XTk r_a2XTl k_a2Y4l (s_a2Y4g :: k_a2Y4l) v_a2Y4h e_a2Y4i f_a2Y4j r_a2Y4k. Iso (PlaneGraph (s_a2XTh :: k_a2XU3) v_a2XTi e_a2XTj f_a2XTk r_a2XTl) (PlaneGraph (s_a2Y4g :: k_a2Y4l) v_a2Y4h e_a2Y4i f_a2Y4j r_a2Y4k) (PlanarGraph s_a2XTh 'Primal (VertexData r_a2XTl v_a2XTi) e_a2XTj f_a2XTk) (PlanarGraph s_a2Y4g 'Primal (VertexData r_a2Y4k v_a2Y4h) e_a2Y4i f_a2Y4j)
- Data.PlaneGraph.Core: location :: forall r_a2XhW v_a2XhX r_a2XwA. Lens (VertexData r_a2XhW v_a2XhX) (VertexData r_a2XwA v_a2XhX) (Point 2 r_a2XhW) (Point 2 r_a2XwA)
+ Data.PlaneGraph.Core: location :: forall r_a2XEn v_a2XEo r_a2XT1. Lens (VertexData r_a2XEn v_a2XEo) (VertexData r_a2XT1 v_a2XEo) (Point 2 r_a2XEn) (Point 2 r_a2XT1)
- Data.PlaneGraph.Core: vData :: forall r_a2XhW v_a2XhX v_a2XwB. Lens (VertexData r_a2XhW v_a2XhX) (VertexData r_a2XhW v_a2XwB) v_a2XhX v_a2XwB
+ Data.PlaneGraph.Core: vData :: forall r_a2XEn v_a2XEo v_a2XT2. Lens (VertexData r_a2XEn v_a2XEo) (VertexData r_a2XEn v_a2XT2) v_a2XEo v_a2XT2
Files
- hgeometry.cabal +2/−26
- planargraph.hs +0/−136
- src/Data/Geometry/BezierSpline.hs +52/−8
- src/Data/Geometry/Polygon/Bezier.hs +54/−0
hgeometry.cabal view
@@ -1,5 +1,5 @@ name: hgeometry-version: 0.12.0.1+version: 0.12.0.2 synopsis: Geometric Algorithms, Data structures, and Data types. description: HGeometry provides some basic geometry types, and geometric algorithms and@@ -31,10 +31,6 @@ type: git location: https://github.com/noinia/hgeometry -flag planargraph- default: False- manual: True- library ghc-options: -O2 -Wall -fno-warn-unticked-promoted-constructors -fno-warn-type-defaults @@ -85,6 +81,7 @@ Data.Geometry.Ellipse Data.Geometry.Polygon+ Data.Geometry.Polygon.Bezier Data.Geometry.Polygon.Inflate Data.Geometry.Polygon.Convex Data.Geometry.Polygon.Monotone@@ -400,24 +397,3 @@ , FlexibleInstances , FlexibleContexts , MultiParamTypeClasses--executable planargraph- main-is: planargraph.hs- if flag(planargraph)- buildable: True- else- buildable: False- default-language: Haskell2010- build-depends: base,- vector,- vector-circular,- linear,- text,- hashable,- lens,- directory,- filepath,- hgeometry,- hgeometry-combinatorial,- reanimate,- reanimate-svg
− planargraph.hs
@@ -1,136 +0,0 @@-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE RecordWildCards #-}-module Main where--import Data.PlanarGraph.Immutable-import qualified Data.PlanarGraph.Mutable as Mut--import Control.Lens ()-import Control.Monad.ST-import Data.Ext-import Data.Foldable as F-import Data.Geometry.Point-import Data.Geometry.Polygon-import Data.STRef-import Data.Hashable-import qualified Data.Text as T-import qualified Data.Vector as V-import qualified Data.Vector.Circular as CV-import Graphics.SvgTree (Number (..))-import Linear.Metric-import Linear.V2-import Linear.Vector-import Reanimate-import Reanimate.Animation-import System.Directory-import System.FilePath-import Debug.Trace--graphs :: [PlanarGraph]-graphs =- [ pgFromFaces [[0..2]]- , pgFromFaces [[1,2,3]]- , pgFromFaces [[0..3]]- , pgFromFaces [[0..3],[4,3,2,1]]- , let pg = pgFromFaces [[0..3]]- in pgMutate pg $ \pg' -> do- let he0 = Mut.halfEdgeFromId 0 pg'- he4 = Mut.halfEdgeFromId 4 pg'- _newEdge <- Mut.pgConnectVertices he0 he4- return ()- , pgFromFaces [[0,4,1],[0,1,2],[4,3,1],[4,5,3],[3,5,2],[2,5,0]]- ]--main :: IO ()--- main = reanimate $ staticFrame (1/60) (fst test2)-main = do- forM_ graphs savePlanarGraphSVG---- test1 = renderPlanarGraph (pgFromFaces [[0..2]])--- test2 = renderPlanarGraph (pgFromFaces [[0..3],[4,3,2,1]])--savePlanarGraphSVG :: PlanarGraph -> IO ()-savePlanarGraphSVG pg = do- writeFile fileName svgOutput- writeFile compactName compactOutput- where- svgOutput = renderSvg (Just $ Num 300) (Just $ Num 300) svg- compactOutput = renderSvg (Just $ Num 300) (Just $ Num 300) compactSvg- fileName = "planargraph-" ++ show (hash pg) <.> "svg"- compactName = "planargraph-" ++ show (hash pg) <.> "compact" <.> "svg"- defOpts = RenderOptions { disableHalfEdges = False }- compactOpts = RenderOptions { disableHalfEdges = True }- svg = renderPlanarGraph defOpts pg- compactSvg = renderPlanarGraph compactOpts pg--data RenderOptions = RenderOptions- { disableHalfEdges :: Bool }--renderPlanarGraph :: RenderOptions -> PlanarGraph -> SVG-renderPlanarGraph RenderOptions{..} pg = svg- where- vs = tutteEmbedding pg- faces = pgFaces pg- svg =- withViewBox (screenBottom, screenBottom, screenHeight, screenHeight) $- mkGroup- [ mkBackground bgColor- , mkGroup- [ translate (x*scaleFactor) (y*scaleFactor) $- mkGroup- [ label- , withFillOpacity 0 $ withStrokeColor "black" $ withStrokeWidth strokeWidth $- -- mkRect (strokeWidth+svgWidth label*1.5) (strokeWidth+svgHeight label*1.5)- translate 0 (-(svgHeight label+0.1)/2) $- center $ mkLine (0,0) (svgWidth label*1.2,0)- ]- | face <- faces- , let boundary = faceBoundary face pg- poly = simpleFromPoints $ map ext- [ Point2 x y- | vId <- boundary- , let V2 x y = vs V.! vertexId vId- ]- Point2 x y = centroid poly- label = scale 0.5 $ center $ latex (T.pack $ show $ faceId face)- ]- , mkGroup- [ mkGroup $- [ withStrokeColor "black" $- mkLine (tipX*scaleFactor, tipY*scaleFactor) (tailX*scaleFactor, tailY*scaleFactor)- ] ++ if disableHalfEdges- then []- else - [ translate (halfX*scaleFactor + angY) (halfY*scaleFactor - angX) $- labelTwin- , translate (halfX*scaleFactor - angY) (halfY*scaleFactor + angX) $- labelEdge- ]- | edge <- pgEdges pg- , let (tip, tail) = edgeHalfEdges edge- V2 tipX tipY = vs V.! vertexId (halfEdgeVertex tip pg)- V2 tailX tailY = vs V.! vertexId (halfEdgeVertex tail pg)- (halfX,halfY) = (tipX + (tailX-tipX)/2, tipY + (tailY-tipY)/2)- labelEdge = scale 0.4 $ center $ latex (T.pack $ show $ halfEdgeId tip)- labelTwin = scale 0.4 $ center $ latex (T.pack $ show $ halfEdgeId tail)- V2 angX angY = signorm (V2 tipX tipY - V2 tailX tailY) ^* 0.3- ]- , mkGroup- [ translate (x*scaleFactor) (y*scaleFactor) $- mkGroup- [ withFillOpacity 1 $ withFillColor "white" $ withStrokeColor "black" $- mkCircle 0.3- , label ]- | v <- map vertexId $ pgVertices pg- , let V2 x y = vs V.! v- label = scaleToWidth 0.2 $ center $ latex (T.pack $ show v)- ]- ]--strokeWidth = defaultStrokeWidth*0.5--bgColor :: String-bgColor = "white"--scaleFactor :: Double-scaleFactor = screenTop*0.8
src/Data/Geometry/BezierSpline.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE BangPatterns #-} {-# LANGUAGE UndecidableInstances #-} -------------------------------------------------------------------------------- -- |@@ -20,21 +21,26 @@ , snap , pattern Bezier2, pattern Bezier3++ , colinear+ , lineApproximate+ , quadToCubic ) where -import Control.Lens hiding (Empty)-import qualified Data.Foldable as F+import Control.Lens hiding (Empty)+import qualified Data.Foldable as F+import Data.Geometry.Line import Data.Geometry.Point import Data.Geometry.Properties import Data.Geometry.Transformation import Data.Geometry.Vector-import Data.LSeq (LSeq)-import qualified Data.LSeq as LSeq-import Data.Sequence (Seq(..))-import qualified Data.Sequence as Seq-import Data.Traversable (fmapDefault,foldMapDefault)+import Data.LSeq (LSeq)+import qualified Data.LSeq as LSeq+import Data.Sequence (Seq (..))+import qualified Data.Sequence as Seq+import Data.Traversable (fmapDefault, foldMapDefault) import GHC.TypeNats-import qualified Test.QuickCheck as QC+import qualified Test.QuickCheck as QC -------------------------------------------------------------------------------- @@ -177,3 +183,41 @@ -- | Snap a point close to a Bezier curve to the curve. snap :: (Arity d, Ord r, Fractional r) => BezierSpline n d r -> Point d r -> Point d r snap b = evaluate b . parameterOf b++-- If both control points are on the same side of the straight line from the start and end+-- points then the curve is guaranteed to be within 3/4 of the distance from the straight line+-- to the furthest control point.+-- Otherwise, if the control points are on either side of the straight line, the curve is+-- guaranteed to be within 4/9 of the maximum distance from the straight line to a control+-- point.+-- Also: 3/4 * sqrt(v) = sqrt (9/16 * v)+-- 4/9 * sqrt(v) = sqrt (16/81 * v)+-- So: 3/4 * sqrt(v) < eps =>+-- sqrt(9/16 * v) < eps =>+-- 9/16*v < eps*eps+-- | Return True if the curve is definitely completely covered by a line of thickness+-- twice the given tolerance. May return false negatives but not false positives.+colinear :: (Ord r, Fractional r) => r -> BezierSpline 3 2 r -> Bool+colinear eps (Bezier3 !a !b !c !d) = sqBound < eps*eps+ where ld = flip sqDistanceTo (lineThrough a d)+ sameSide = ccw a d b == ccw a d c+ maxDist = max (ld b) (ld c)+ sqBound+ | sameSide = 9/16 * maxDist+ | otherwise = 16/81 * maxDist++-- | Approximate curve as line segments where no point on the curve is further away+-- from the nearest line segment than the given tolerance.+lineApproximate :: (Ord r, Fractional r) => r -> BezierSpline 3 2 r -> [Point 2 r]+lineApproximate eps bezier+ | colinear eps bezier =+ [ bezier^.controlPoints.to LSeq.head+ , bezier^.controlPoints.to LSeq.last ]+ | otherwise =+ let (b1, b2) = split 0.5 bezier+ in lineApproximate eps b1 ++ tail (lineApproximate eps b2)++-- | Convert a quadratic bezier to a cubic bezier.+quadToCubic :: (Fractional r) => BezierSpline 2 2 r -> BezierSpline 3 2 r+quadToCubic (Bezier2 a b c) =+ Bezier3 a ((1/3)*^(Point (toVec a ^+^ 2*^toVec b))) ((1/3)*^(Point (2*^ toVec b ^+^ toVec c))) c
+ src/Data/Geometry/Polygon/Bezier.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+module Data.Geometry.Polygon.Bezier+ ( PathJoin(..)+ , fromBeziers+ , approximate+ , approximateSome+ ) where++import Control.Lens+import Data.Ext+import Data.Geometry.BezierSpline (BezierSpline, lineApproximate, pattern Bezier3)+import Data.Geometry.Point+import Data.Geometry.Polygon+import qualified Data.Vector.Circular as CV++data PathJoin r+ = JoinLine+ | JoinCurve (Point 2 r) (Point 2 r)+ deriving (Show, Eq, Ord)++-- | Construct a polygon from a closed set of bezier curves. Each curve must be connected to+-- its neighbours.+fromBeziers :: (Eq r, Num r) => [BezierSpline 3 2 r] -> SimplePolygon (PathJoin r) r+fromBeziers curves+ | isCounterClockwise expanded = p+ | otherwise = p'+ where+ p = unsafeFromPoints+ [ a :+ JoinCurve b c+ | Bezier3 a b c _d <- curves ]+ p' = unsafeFromPoints+ [ d :+ JoinCurve c b+ | Bezier3 _a b c d <- reverse curves ]+ expanded = unsafeFromPoints $ concat+ [ map ext [a, b, c]+ | Bezier3 a b c _d <- curves ]++approximate :: forall t r. (Ord r, Fractional r) => r -> Polygon t (PathJoin r) r -> Polygon t () r+approximate eps p =+ case p of+ SimplePolygon{} ->+ let vs = p^.outerBoundaryVector+ in unsafeFromCircularVector $ CV.concatMap f $ CV.zip vs (CV.rotateRight 1 vs)+ MultiPolygon v hs -> MultiPolygon (approximate eps v) (map (approximate eps) hs)+ where+ f :: (Point 2 r :+ PathJoin r, Point 2 r :+ PathJoin r) -> CV.CircularVector (Point 2 r :+ ())+ f (a :+ JoinLine, _) = CV.singleton (ext a)+ f (a :+ JoinCurve b c, d :+ _) =+ CV.unsafeFromList $ map ext $ init (lineApproximate eps (Bezier3 a b c d))++approximateSome :: (Ord r, Fractional r) => r -> SomePolygon (PathJoin r) r -> SomePolygon () r+approximateSome eps (Left p) = Left $ approximate eps p+approximateSome eps (Right p) = Right $ approximate eps p