hgeometry-1.0.0.0: Geometric Algorithms, Data structures, and Data types.
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellSafe-Inferred
LanguageGHC2021

HGeometry.Box.Sides

Description

 
Synopsis

Documentation

data Sides a Source #

The four sides of a rectangle

Constructors

Sides !a !a !a !a 

Instances

Instances details
Foldable Sides Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

fold :: Monoid m => Sides m -> m #

foldMap :: Monoid m => (a -> m) -> Sides a -> m #

foldMap' :: Monoid m => (a -> m) -> Sides a -> m #

foldr :: (a -> b -> b) -> b -> Sides a -> b #

foldr' :: (a -> b -> b) -> b -> Sides a -> b #

foldl :: (b -> a -> b) -> b -> Sides a -> b #

foldl' :: (b -> a -> b) -> b -> Sides a -> b #

foldr1 :: (a -> a -> a) -> Sides a -> a #

foldl1 :: (a -> a -> a) -> Sides a -> a #

toList :: Sides a -> [a] #

null :: Sides a -> Bool #

length :: Sides a -> Int #

elem :: Eq a => a -> Sides a -> Bool #

maximum :: Ord a => Sides a -> a #

minimum :: Ord a => Sides a -> a #

sum :: Num a => Sides a -> a #

product :: Num a => Sides a -> a #

Foldable1 Sides Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

fold1 :: Semigroup m => Sides m -> m #

foldMap1 :: Semigroup m => (a -> m) -> Sides a -> m #

foldMap1' :: Semigroup m => (a -> m) -> Sides a -> m #

toNonEmpty :: Sides a -> NonEmpty a #

maximum :: Ord a => Sides a -> a #

minimum :: Ord a => Sides a -> a #

head :: Sides a -> a #

last :: Sides a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> Sides a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> Sides a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> Sides a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> Sides a -> b #

Traversable Sides Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

traverse :: Applicative f => (a -> f b) -> Sides a -> f (Sides b) #

sequenceA :: Applicative f => Sides (f a) -> f (Sides a) #

mapM :: Monad m => (a -> m b) -> Sides a -> m (Sides b) #

sequence :: Monad m => Sides (m a) -> m (Sides a) #

Applicative Sides Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

pure :: a -> Sides a #

(<*>) :: Sides (a -> b) -> Sides a -> Sides b #

liftA2 :: (a -> b -> c) -> Sides a -> Sides b -> Sides c #

(*>) :: Sides a -> Sides b -> Sides b #

(<*) :: Sides a -> Sides b -> Sides a #

Functor Sides Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

fmap :: (a -> b) -> Sides a -> Sides b #

(<$) :: a -> Sides b -> Sides a #

Traversable1 Sides Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

traverse1 :: Apply f => (a -> f b) -> Sides a -> f (Sides b) Source #

sequence1 :: Apply f => Sides (f b) -> f (Sides b) Source #

Monoid a => Monoid (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

mempty :: Sides a #

mappend :: Sides a -> Sides a -> Sides a #

mconcat :: [Sides a] -> Sides a #

Semigroup a => Semigroup (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

(<>) :: Sides a -> Sides a -> Sides a #

sconcat :: NonEmpty (Sides a) -> Sides a #

stimes :: Integral b => b -> Sides a -> Sides a #

Generic (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

Associated Types

type Rep (Sides a) :: Type -> Type #

Methods

from :: Sides a -> Rep (Sides a) x #

to :: Rep (Sides a) x -> Sides a #

Read a => Read (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

Show a => Show (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

showsPrec :: Int -> Sides a -> ShowS #

show :: Sides a -> String #

showList :: [Sides a] -> ShowS #

Eq a => Eq (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

(==) :: Sides a -> Sides a -> Bool #

(/=) :: Sides a -> Sides a -> Bool #

Ord a => Ord (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

compare :: Sides a -> Sides a -> Ordering #

(<) :: Sides a -> Sides a -> Bool #

(<=) :: Sides a -> Sides a -> Bool #

(>) :: Sides a -> Sides a -> Bool #

(>=) :: Sides a -> Sides a -> Bool #

max :: Sides a -> Sides a -> Sides a #

min :: Sides a -> Sides a -> Sides a #

Ixed (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

ix :: Index (Sides a) -> Traversal' (Sides a) (IxValue (Sides a)) Source #

type Rep (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

type Rep (Sides a) = D1 ('MetaData "Sides" "HGeometry.Box.Sides" "hgeometry-1.0.0.0-inplace-kernel" 'False) (C1 ('MetaCons "Sides" 'PrefixI 'True) ((S1 ('MetaSel ('Just "_north") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Just "_east") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a)) :*: (S1 ('MetaSel ('Just "_south") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Just "_west") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))))
type Index (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

type IxValue (Sides a) Source # 
Instance details

Defined in HGeometry.Box.Sides

type IxValue (Sides a) = a

north :: Lens' (Sides a) a Source #

Access the north side

east :: Lens' (Sides a) a Source #

Access the east side

south :: Lens' (Sides a) a Source #

Access the south side

west :: Lens' (Sides a) a Source #

Access the west side

topSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point Source #

The top side of the box, from left to right.

bottomSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point Source #

Oriented from *left to right*

leftSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point Source #

Left side of the box, from bottom to top

rightSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point Source #

The right side, oriented from *bottom* to top

sides :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point) Source #

The sides of the rectangle, in order (Top, Right, Bottom, Left). The sides themselves are also oriented in clockwise order. If, you want them in the same order as the functions topSide, bottomSide, leftSide, and rightSide, use sides' instead.

sides' :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point) Source #

The sides of the rectangle. The order of the segments is (Top, Right, Bottom, Left). Note that the segments themselves, are oriented as described by the functions topSide, bottomSide, leftSide, rightSide (basically: from left to right, and from bottom to top). If you want the segments oriented along the boundary of the rectangle, use the sides function instead.

sideDirections :: Sides CardinalDirection Source #

Constructs a Sides value that indicates the appropriate direction.

sideValues :: (Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides r Source #

The side values of the rectangle, i.e. the coordinates of the top, right, bottom, and left sides.