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

HGeometry.Direction.Cardinal

Description

Cardinal and Intercardinal directions.

Synopsis

Documentation

data CardinalDirection Source #

The four cardinal directions.

Constructors

North 
East 
South 
West 

Instances

Instances details
Bounded CardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Enum CardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Read CardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Show CardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Eq CardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Ord CardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

FoldableWithIndex CardinalDirection Sides Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

ifoldMap :: Monoid m => (CardinalDirection -> a -> m) -> Sides a -> m Source #

ifoldMap' :: Monoid m => (CardinalDirection -> a -> m) -> Sides a -> m Source #

ifoldr :: (CardinalDirection -> a -> b -> b) -> b -> Sides a -> b Source #

ifoldl :: (CardinalDirection -> b -> a -> b) -> b -> Sides a -> b Source #

ifoldr' :: (CardinalDirection -> a -> b -> b) -> b -> Sides a -> b Source #

ifoldl' :: (CardinalDirection -> b -> a -> b) -> b -> Sides a -> b Source #

FunctorWithIndex CardinalDirection Sides Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

imap :: (CardinalDirection -> a -> b) -> Sides a -> Sides b Source #

TraversableWithIndex CardinalDirection Sides Source # 
Instance details

Defined in HGeometry.Box.Sides

Methods

itraverse :: Applicative f => (CardinalDirection -> a -> f b) -> Sides a -> f (Sides b) Source #

oppositeDirection :: CardinalDirection -> CardinalDirection Source #

Computes the direction opposite to the given one.

data InterCardinalDirection Source #

Intercardinal directions

Instances

Instances details
Enum InterCardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Generic InterCardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Associated Types

type Rep InterCardinalDirection 
Instance details

Defined in HGeometry.Direction.Cardinal

type Rep InterCardinalDirection = D1 ('MetaData "InterCardinalDirection" "HGeometry.Direction.Cardinal" "hgeometry-kernel-1.0.0.0-inplace" 'False) ((C1 ('MetaCons "NorthWest" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NorthEast" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "SouthEast" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SouthWest" 'PrefixI 'False) (U1 :: Type -> Type)))
Read InterCardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Show InterCardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Eq InterCardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

Ord InterCardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

FoldableWithIndex InterCardinalDirection Corners Source # 
Instance details

Defined in HGeometry.Box.Corners

Methods

ifoldMap :: Monoid m => (InterCardinalDirection -> a -> m) -> Corners a -> m Source #

ifoldMap' :: Monoid m => (InterCardinalDirection -> a -> m) -> Corners a -> m Source #

ifoldr :: (InterCardinalDirection -> a -> b -> b) -> b -> Corners a -> b Source #

ifoldl :: (InterCardinalDirection -> b -> a -> b) -> b -> Corners a -> b Source #

ifoldr' :: (InterCardinalDirection -> a -> b -> b) -> b -> Corners a -> b Source #

ifoldl' :: (InterCardinalDirection -> b -> a -> b) -> b -> Corners a -> b Source #

FunctorWithIndex InterCardinalDirection Corners Source # 
Instance details

Defined in HGeometry.Box.Corners

Methods

imap :: (InterCardinalDirection -> a -> b) -> Corners a -> Corners b Source #

TraversableWithIndex InterCardinalDirection Corners Source # 
Instance details

Defined in HGeometry.Box.Corners

Methods

itraverse :: Applicative f => (InterCardinalDirection -> a -> f b) -> Corners a -> f (Corners b) Source #

type Rep InterCardinalDirection Source # 
Instance details

Defined in HGeometry.Direction.Cardinal

type Rep InterCardinalDirection = D1 ('MetaData "InterCardinalDirection" "HGeometry.Direction.Cardinal" "hgeometry-kernel-1.0.0.0-inplace" 'False) ((C1 ('MetaCons "NorthWest" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NorthEast" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "SouthEast" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SouthWest" 'PrefixI 'False) (U1 :: Type -> Type)))

interCardinalsOf :: CardinalDirection -> Vector 2 InterCardinalDirection Source #

Get the two intercardinal directions, in increasing order, corresponding to the cardinal direction.

classifyDirection :: (Ord r, Num r) => Vector 2 r -> Either CardinalDirection InterCardinalDirection Source #

Classfiy the direction of the given vector

pre: the vector is non-zero

classifyDirection' :: (Ord r, Num r) => Vector 2 r -> Maybe (Either CardinalDirection InterCardinalDirection) Source #

Classfiy the direction of the given vector. Returns nothing if the vector is zero