| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
HGeometry.HalfPlane.CommonIntersection
Synopsis
- data CommonIntersection halfPlane r
- = SingletonPoint (Point 2 r) (Vector 3 halfPlane)
- | InSubLine (VerticalOrLineEQ r) (Vector 2 halfPlane) (SubLine halfPlane r)
- | Slab halfPlane halfPlane
- | BoundedRegion (ConvexPolygon (Point 2 r :+ halfPlane))
- | UnboundedRegion (Chain Seq r halfPlane)
- data SubLine halfPlane r
- = EntireLine
- | InHalfLine (HalfLine (Point 2 r)) halfPlane
- | InSegment (ClosedLineSegment (Point 2 r)) halfPlane halfPlane
- newtype Chain (f :: Type -> Type) r halfPlane = Chain (Alternating f (Point 2 r) halfPlane)
- commonIntersection :: (Foldable1 f, Functor f, HalfPlane_ halfPlane r, Fractional r, Ord r, HyperPlane_ (BoundingHyperPlane halfPlane 2 r) 2 r, Show halfPlane, Show r) => f halfPlane -> Maybe (CommonIntersection halfPlane r)
- boundaries :: (HalfPlane_ halfPlane r, Ord r, Fractional r, Show r, Show halfPlane) => NonVerticals halfPlane r -> These2 (Chain Seq r (LineEQ r :+ halfPlane))
- clipUpperByLower :: (Ord r, Num r, HasIntersectionWith (Point 2 r) halfPlane) => Chain Seq r (line :+ halfPlane) -> Chain Seq r (line :+ halfPlane) -> Chain Seq r (line :+ halfPlane)
Documentation
data CommonIntersection halfPlane r Source #
A type represetning the Common intersection of a bunch of halfplanes; assuming this intersection is non-empty.
Constructors
| SingletonPoint (Point 2 r) (Vector 3 halfPlane) | Common intersection is a singleton point, defined by the three given halfplanes |
| InSubLine (VerticalOrLineEQ r) (Vector 2 halfPlane) (SubLine halfPlane r) | The two halfPlanes that define the line, and the other halfplanes furthe restricitng the line. |
| Slab halfPlane halfPlane | two parallel halfPlanes l and u that form a slab; |
| BoundedRegion (ConvexPolygon (Point 2 r :+ halfPlane)) | each vertex stores the interior halfplane of the CCW-edge it is incident to. |
| UnboundedRegion (Chain Seq r halfPlane) | each vertex stores the interior halfplane of the CCW-edge it is incident to. |
Instances
| (Show r, Show halfPlane) => Show (CommonIntersection halfPlane r) Source # | |
Defined in HGeometry.HalfPlane.CommonIntersection | |
| (Eq r, Eq halfPlane) => Eq (CommonIntersection halfPlane r) Source # | |
Defined in HGeometry.HalfPlane.CommonIntersection Methods (==) :: CommonIntersection halfPlane r -> CommonIntersection halfPlane r -> Bool Source # (/=) :: CommonIntersection halfPlane r -> CommonIntersection halfPlane r -> Bool Source # | |
data SubLine halfPlane r Source #
Part of the line
Constructors
| EntireLine | |
| InHalfLine (HalfLine (Point 2 r)) halfPlane | the third halfPlane |
| InSegment (ClosedLineSegment (Point 2 r)) halfPlane halfPlane | the remaining two halfplanes |
newtype Chain (f :: Type -> Type) r halfPlane Source #
A polygonal chain bounding an unbounded convex region, in CCW order.
Constructors
| Chain (Alternating f (Point 2 r) halfPlane) |
Instances
| Foldable f => Bifoldable (Chain f) Source # | |
Defined in HGeometry.HalfPlane.CommonIntersection.Chain | |
| Functor f => Bifunctor (Chain f) Source # | |
| Foldable f => Foldable1 (Chain f r) Source # | |
Defined in HGeometry.HalfPlane.CommonIntersection.Chain Methods fold1 :: Semigroup m => Chain f r m -> m Source # foldMap1 :: Semigroup m => (a -> m) -> Chain f r a -> m Source # foldMap1' :: Semigroup m => (a -> m) -> Chain f r a -> m Source # toNonEmpty :: Chain f r a -> NonEmpty a Source # maximum :: Ord a => Chain f r a -> a Source # minimum :: Ord a => Chain f r a -> a Source # head :: Chain f r a -> a Source # last :: Chain f r a -> a Source # foldrMap1 :: (a -> b) -> (a -> b -> b) -> Chain f r a -> b Source # foldlMap1' :: (a -> b) -> (b -> a -> b) -> Chain f r a -> b Source # foldlMap1 :: (a -> b) -> (b -> a -> b) -> Chain f r a -> b Source # foldrMap1' :: (a -> b) -> (a -> b -> b) -> Chain f r a -> b Source # | |
| Functor f => Functor (Chain f r) Source # | |
| Foldable f => Foldable (Chain f r) Source # | |
Defined in HGeometry.HalfPlane.CommonIntersection.Chain Methods fold :: Monoid m => Chain f r m -> m Source # foldMap :: Monoid m => (a -> m) -> Chain f r a -> m Source # foldMap' :: Monoid m => (a -> m) -> Chain f r a -> m Source # foldr :: (a -> b -> b) -> b -> Chain f r a -> b Source # foldr' :: (a -> b -> b) -> b -> Chain f r a -> b Source # foldl :: (b -> a -> b) -> b -> Chain f r a -> b Source # foldl' :: (b -> a -> b) -> b -> Chain f r a -> b Source # foldr1 :: (a -> a -> a) -> Chain f r a -> a Source # foldl1 :: (a -> a -> a) -> Chain f r a -> a Source # toList :: Chain f r a -> [a] Source # null :: Chain f r a -> Bool Source # length :: Chain f r a -> Int Source # elem :: Eq a => a -> Chain f r a -> Bool Source # maximum :: Ord a => Chain f r a -> a Source # minimum :: Ord a => Chain f r a -> a Source # | |
| Traversable f => Traversable (Chain f r) Source # | |
Defined in HGeometry.HalfPlane.CommonIntersection.Chain Methods traverse :: Applicative f0 => (a -> f0 b) -> Chain f r a -> f0 (Chain f r b) Source # sequenceA :: Applicative f0 => Chain f r (f0 a) -> f0 (Chain f r a) Source # mapM :: Monad m => (a -> m b) -> Chain f r a -> m (Chain f r b) Source # sequence :: Monad m => Chain f r (m a) -> m (Chain f r a) Source # | |
| Traversable f => Traversable1 (Chain f r) Source # | |
| (Show halfPlane, Show (f (Point 2 r, halfPlane))) => Show (Chain f r halfPlane) Source # | |
| (Eq halfPlane, Eq (f (Point 2 r, halfPlane))) => Eq (Chain f r halfPlane) Source # | |
| (Ord halfPlane, Ord (f (Point 2 r, halfPlane))) => Ord (Chain f r halfPlane) Source # | |
Defined in HGeometry.HalfPlane.CommonIntersection.Chain Methods compare :: Chain f r halfPlane -> Chain f r halfPlane -> Ordering Source # (<) :: Chain f r halfPlane -> Chain f r halfPlane -> Bool Source # (<=) :: Chain f r halfPlane -> Chain f r halfPlane -> Bool Source # (>) :: Chain f r halfPlane -> Chain f r halfPlane -> Bool Source # (>=) :: Chain f r halfPlane -> Chain f r halfPlane -> Bool Source # max :: Chain f r halfPlane -> Chain f r halfPlane -> Chain f r halfPlane Source # min :: Chain f r halfPlane -> Chain f r halfPlane -> Chain f r halfPlane Source # | |
| type NumType (Chain f r halfPlane) Source # | |
Defined in HGeometry.HalfPlane.CommonIntersection.Chain | |
commonIntersection :: (Foldable1 f, Functor f, HalfPlane_ halfPlane r, Fractional r, Ord r, HyperPlane_ (BoundingHyperPlane halfPlane 2 r) 2 r, Show halfPlane, Show r) => f halfPlane -> Maybe (CommonIntersection halfPlane r) Source #
Computes the common intersection of a \(n\) halfplanes.
running time: \(O(n\log n)\)
boundaries :: (HalfPlane_ halfPlane r, Ord r, Fractional r, Show r, Show halfPlane) => NonVerticals halfPlane r -> These2 (Chain Seq r (LineEQ r :+ halfPlane)) Source #
Computes the upper boundary of the halfplanes that have negative sign, and the upper boundary of the halfplanes that have negative sign
clipUpperByLower :: (Ord r, Num r, HasIntersectionWith (Point 2 r) halfPlane) => Chain Seq r (line :+ halfPlane) -> Chain Seq r (line :+ halfPlane) -> Chain Seq r (line :+ halfPlane) Source #
given the upper and lower chain, clip the upper thain to retain only the vertices that are above the lower chain.