hgeometry-polygon
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2024

HGeometry.Polygon.Simple.PossiblyDegenerate

Description

A Covnex polygon that may be degenerate, i.e. may also be a line segment or point.

Synopsis

Documentation

data PossiblyDegenerateSimplePolygon vertex polygon Source #

A simple polygon (or a "subtype" thereof) that may be degenerate; i.e. may be a single vertex, or a point.

Constructors

DegenerateVertex vertex 
DegenerateEdge (ClosedLineSegment vertex) 
ActualPolygon polygon 

Instances

Instances details
Bifoldable PossiblyDegenerateSimplePolygon Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

Methods

bifold :: Monoid m => PossiblyDegenerateSimplePolygon m m -> m Source #

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> PossiblyDegenerateSimplePolygon a b -> m Source #

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> PossiblyDegenerateSimplePolygon a b -> c Source #

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> PossiblyDegenerateSimplePolygon a b -> c Source #

Bifoldable1 PossiblyDegenerateSimplePolygon Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

Bifunctor PossiblyDegenerateSimplePolygon Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

Functor (PossiblyDegenerateSimplePolygon vertex) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

Foldable (PossiblyDegenerateSimplePolygon vertex) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

Methods

fold :: Monoid m => PossiblyDegenerateSimplePolygon vertex m -> m Source #

foldMap :: Monoid m => (a -> m) -> PossiblyDegenerateSimplePolygon vertex a -> m Source #

foldMap' :: Monoid m => (a -> m) -> PossiblyDegenerateSimplePolygon vertex a -> m Source #

foldr :: (a -> b -> b) -> b -> PossiblyDegenerateSimplePolygon vertex a -> b Source #

foldr' :: (a -> b -> b) -> b -> PossiblyDegenerateSimplePolygon vertex a -> b Source #

foldl :: (b -> a -> b) -> b -> PossiblyDegenerateSimplePolygon vertex a -> b Source #

foldl' :: (b -> a -> b) -> b -> PossiblyDegenerateSimplePolygon vertex a -> b Source #

foldr1 :: (a -> a -> a) -> PossiblyDegenerateSimplePolygon vertex a -> a Source #

foldl1 :: (a -> a -> a) -> PossiblyDegenerateSimplePolygon vertex a -> a Source #

toList :: PossiblyDegenerateSimplePolygon vertex a -> [a] Source #

null :: PossiblyDegenerateSimplePolygon vertex a -> Bool Source #

length :: PossiblyDegenerateSimplePolygon vertex a -> Int Source #

elem :: Eq a => a -> PossiblyDegenerateSimplePolygon vertex a -> Bool Source #

maximum :: Ord a => PossiblyDegenerateSimplePolygon vertex a -> a Source #

minimum :: Ord a => PossiblyDegenerateSimplePolygon vertex a -> a Source #

sum :: Num a => PossiblyDegenerateSimplePolygon vertex a -> a Source #

product :: Num a => PossiblyDegenerateSimplePolygon vertex a -> a Source #

(Point_ vertex 2 r, Num r, Ord r, VertexContainer f vertex, HyperPlane_ line 2 r) => HasIntersectionWith (HalfSpaceF line) (PossiblyDegenerateSimplePolygon vertex (ConvexPolygonF f vertex)) Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Internal

(Point_ vertex 2 r, Fractional r, Ord r, VertexContainer f vertex, VertexContainer f (OriginalOrExtra vertex (Point 2 r)), HyperPlane_ line 2 r, IsIntersectableWith (HalfSpaceF line) (ConvexPolygonF f vertex), IsIntersectableWith (LinePV 2 r) line, Intersection (LinePV 2 r) line ~ Maybe (LineLineIntersectionG r line')) => IsIntersectableWith (HalfSpaceF line) (PossiblyDegenerateSimplePolygon vertex (ConvexPolygonF f vertex)) Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Internal

(NFData vertex, NFData polygon) => NFData (PossiblyDegenerateSimplePolygon vertex polygon) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

Methods

rnf :: PossiblyDegenerateSimplePolygon vertex polygon -> () Source #

Generic (PossiblyDegenerateSimplePolygon vertex polygon) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

Associated Types

type Rep (PossiblyDegenerateSimplePolygon vertex polygon) 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

type Rep (PossiblyDegenerateSimplePolygon vertex polygon) = D1 ('MetaData "PossiblyDegenerateSimplePolygon" "HGeometry.Polygon.Simple.PossiblyDegenerate" "hgeometry-polygon-1.0.0.0-inplace" 'False) (C1 ('MetaCons "DegenerateVertex" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 vertex)) :+: (C1 ('MetaCons "DegenerateEdge" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ClosedLineSegment vertex))) :+: C1 ('MetaCons "ActualPolygon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 polygon))))
(Show vertex, Show polygon) => Show (PossiblyDegenerateSimplePolygon vertex polygon) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

(Eq vertex, Eq polygon) => Eq (PossiblyDegenerateSimplePolygon vertex polygon) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

(Point_ vertex 2 r, Num r, Ord r, HasIntersectionWith (LinePV 2 r) polygon) => HasIntersectionWith (LinePV 2 r) (PossiblyDegenerateSimplePolygon vertex polygon) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

Methods

intersects :: LinePV 2 r -> PossiblyDegenerateSimplePolygon vertex polygon -> Bool Source #

(Point_ vertex 2 r, Num r, Ord r, HasIntersectionWith (Point 2 r) polygon) => HasIntersectionWith (Point 2 r) (PossiblyDegenerateSimplePolygon vertex polygon) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

Methods

intersects :: Point 2 r -> PossiblyDegenerateSimplePolygon vertex polygon -> Bool Source #

(Fractional r, Ord r, ConvexPolygon_ (ConvexPolygonF nonEmpty vertex) vertex r) => IsIntersectableWith (LinePV 2 r) (PossiblyDegenerateSimplePolygon vertex (ConvexPolygonF nonEmpty vertex)) Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Internal

Methods

intersect :: LinePV 2 r -> PossiblyDegenerateSimplePolygon vertex (ConvexPolygonF nonEmpty vertex) -> Intersection (LinePV 2 r) (PossiblyDegenerateSimplePolygon vertex (ConvexPolygonF nonEmpty vertex)) Source #

type Intersection (HalfSpaceF line) (PossiblyDegenerateSimplePolygon vertex (ConvexPolygonF f vertex)) Source #

Intersecting a halfplane witha possibly degenerate convex polygon gives us a possibly degenerate polygon again.

Instance details

Defined in HGeometry.Polygon.Convex.Internal

type Rep (PossiblyDegenerateSimplePolygon vertex polygon) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

type Rep (PossiblyDegenerateSimplePolygon vertex polygon) = D1 ('MetaData "PossiblyDegenerateSimplePolygon" "HGeometry.Polygon.Simple.PossiblyDegenerate" "hgeometry-polygon-1.0.0.0-inplace" 'False) (C1 ('MetaCons "DegenerateVertex" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 vertex)) :+: (C1 ('MetaCons "DegenerateEdge" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ClosedLineSegment vertex))) :+: C1 ('MetaCons "ActualPolygon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 polygon))))
type Dimension (PossiblyDegenerateSimplePolygon vertex polygon) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

type Dimension (PossiblyDegenerateSimplePolygon vertex polygon) = 2
type NumType (PossiblyDegenerateSimplePolygon vertex polygon) Source # 
Instance details

Defined in HGeometry.Polygon.Simple.PossiblyDegenerate

type NumType (PossiblyDegenerateSimplePolygon vertex polygon) = NumType vertex
type Intersection (LinePV 2 r) (PossiblyDegenerateSimplePolygon vertex (ConvexPolygonF nonEmpty vertex)) Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Internal

type HalfPlane_x_SimplePolygon_Component (f :: Type -> Type) r vertex = PossiblyDegenerateSimplePolygon vertex (SimplePolygonF f (OriginalOrExtra vertex (Point 2 r))) Source #

A single Component of a HalfPlane x SimplePolygon intersection.