hgeometry-0.9.0.0: Geometric Algorithms, Data structures, and Data types.

Data.Geometry.HalfSpace

Description

$$d$$-dimensional HalfSpaces

Synopsis

# Documentation

>>> :{
let myVector :: Vector 3 Int
myVector = Vector3 1 2 3
myPoint = Point myVector
:}


newtype HalfSpace d r Source #

A Halfspace in $$d$$ dimensions.

Constructors

 HalfSpace Fields_boundingPlane :: HyperPlane d r
Instances
 Arity d => Functor (HalfSpace d) Source # Instance detailsDefined in Data.Geometry.HalfSpace Methodsfmap :: (a -> b) -> HalfSpace d a -> HalfSpace d b #(<$) :: a -> HalfSpace d b -> HalfSpace d a # Arity d => Foldable (HalfSpace d) Source # Instance detailsDefined in Data.Geometry.HalfSpace Methodsfold :: Monoid m => HalfSpace d m -> m #foldMap :: Monoid m => (a -> m) -> HalfSpace d a -> m #foldr :: (a -> b -> b) -> b -> HalfSpace d a -> b #foldr' :: (a -> b -> b) -> b -> HalfSpace d a -> b #foldl :: (b -> a -> b) -> b -> HalfSpace d a -> b #foldl' :: (b -> a -> b) -> b -> HalfSpace d a -> b #foldr1 :: (a -> a -> a) -> HalfSpace d a -> a #foldl1 :: (a -> a -> a) -> HalfSpace d a -> a #toList :: HalfSpace d a -> [a] #null :: HalfSpace d a -> Bool #length :: HalfSpace d a -> Int #elem :: Eq a => a -> HalfSpace d a -> Bool #maximum :: Ord a => HalfSpace d a -> a #minimum :: Ord a => HalfSpace d a -> a #sum :: Num a => HalfSpace d a -> a #product :: Num a => HalfSpace d a -> a # Arity d => Traversable (HalfSpace d) Source # Instance detailsDefined in Data.Geometry.HalfSpace Methodstraverse :: Applicative f => (a -> f b) -> HalfSpace d a -> f (HalfSpace d b) #sequenceA :: Applicative f => HalfSpace d (f a) -> f (HalfSpace d a) #mapM :: Monad m => (a -> m b) -> HalfSpace d a -> m (HalfSpace d b) #sequence :: Monad m => HalfSpace d (m a) -> m (HalfSpace d a) # (Arity d, Eq r) => Eq (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace Methods(==) :: HalfSpace d r -> HalfSpace d r -> Bool #(/=) :: HalfSpace d r -> HalfSpace d r -> Bool # (Arity d, Show r) => Show (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace MethodsshowsPrec :: Int -> HalfSpace d r -> ShowS #show :: HalfSpace d r -> String #showList :: [HalfSpace d r] -> ShowS # Generic (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace Associated Typestype Rep (HalfSpace d r) :: Type -> Type # Methodsfrom :: HalfSpace d r -> Rep (HalfSpace d r) x #to :: Rep (HalfSpace d r) x -> HalfSpace d r # (Arity d, Arity (d + 1), Fractional r) => IsTransformable (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace MethodstransformBy :: Transformation (Dimension (HalfSpace d r)) (NumType (HalfSpace d r)) -> HalfSpace d r -> HalfSpace d r Source # (Num r, Ord r, Arity d) => IsIntersectableWith (Point d r) (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace Methodsintersect :: Point d r -> HalfSpace d r -> Intersection (Point d r) (HalfSpace d r)intersects :: Point d r -> HalfSpace d r -> BoolnonEmptyIntersection :: proxy (Point d r) -> proxy (HalfSpace d r) -> Intersection (Point d r) (HalfSpace d r) -> Bool (Fractional r, Ord r) => IsIntersectableWith (Line 2 r) (HalfSpace 2 r) Source # Instance detailsDefined in Data.Geometry.HalfSpace Methodsintersect :: Line 2 r -> HalfSpace 2 r -> Intersection (Line 2 r) (HalfSpace 2 r)intersects :: Line 2 r -> HalfSpace 2 r -> BoolnonEmptyIntersection :: proxy (Line 2 r) -> proxy (HalfSpace 2 r) -> Intersection (Line 2 r) (HalfSpace 2 r) -> Bool type Rep (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace type Rep (HalfSpace d r) = D1 (MetaData "HalfSpace" "Data.Geometry.HalfSpace" "hgeometry-0.9.0.0-inplace" True) (C1 (MetaCons "HalfSpace" PrefixI True) (S1 (MetaSel (Just "_boundingPlane") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (HyperPlane d r)))) type NumType (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace type NumType (HalfSpace d r) = r type Dimension (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace type Dimension (HalfSpace d r) = d type IntersectionOf (Point d r) (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace type IntersectionOf (Point d r) (HalfSpace d r) = NoIntersection ': (Point d r ': ([] :: [Type])) type IntersectionOf (Line d r) (HalfSpace d r) Source # Instance detailsDefined in Data.Geometry.HalfSpace type IntersectionOf (Line d r) (HalfSpace d r) = NoIntersection ': (HalfLine d r ': (Line d r ': ([] :: [Type]))) boundingPlane :: forall d r d r. Iso (HalfSpace d r) (HalfSpace d r) (HyperPlane d r) (HyperPlane d r) Source # leftOf :: Num r => Line 2 r -> HalfPlane r Source # Get the halfplane left of a line (i.e. "above") a line >>> leftOf$ horizontalLine 4
HalfSpace {_boundingPlane = HyperPlane {_inPlane = Point2 [0,4], _normalVec = Vector2 [0,1]}}


rightOf :: Num r => Line 2 r -> HalfPlane r Source #

Get the halfplane right of a line (i.e. "below") a line

>>> rightOf \$ horizontalLine 4
HalfSpace {_boundingPlane = HyperPlane {_inPlane = Point2 [0,4], _normalVec = Vector2 [0,-1]}}


above :: Num r => Line 2 r -> HalfPlane r Source #

below :: Num r => Line 2 r -> HalfPlane r Source #

inHalfSpace :: (Num r, Ord r, Arity d) => Point d r -> HalfSpace d r -> PointLocationResult Source #

Test if a point lies in a halfspace