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

HGeometry.Cone

Description

A Data type to represent Cones

Synopsis

Documentation

data Cone r point edge Source #

A Cone

Constructors

Cone point (Vector 2 r :+ edge) (Vector 2 r :+ edge) 

Instances

Instances details
Bifoldable (Cone r) Source # 
Instance details

Defined in HGeometry.Cone

Methods

bifold :: Monoid m => Cone r m m -> m Source #

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

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> Cone r a b -> c Source #

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> Cone r a b -> c Source #

Bifunctor (Cone r) Source # 
Instance details

Defined in HGeometry.Cone

Methods

bimap :: (a -> b) -> (c -> d) -> Cone r a c -> Cone r b d Source #

first :: (a -> b) -> Cone r a c -> Cone r b c Source #

second :: (b -> c) -> Cone r a b -> Cone r a c Source #

Bitraversable (Cone r) Source # 
Instance details

Defined in HGeometry.Cone

Methods

bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> Cone r a b -> f (Cone r c d) Source #

Functor (Cone r point) Source # 
Instance details

Defined in HGeometry.Cone

Methods

fmap :: (a -> b) -> Cone r point a -> Cone r point b Source #

(<$) :: a -> Cone r point b -> Cone r point a Source #

Foldable (Cone r point) Source # 
Instance details

Defined in HGeometry.Cone

Methods

fold :: Monoid m => Cone r point m -> m Source #

foldMap :: Monoid m => (a -> m) -> Cone r point a -> m Source #

foldMap' :: Monoid m => (a -> m) -> Cone r point a -> m Source #

foldr :: (a -> b -> b) -> b -> Cone r point a -> b Source #

foldr' :: (a -> b -> b) -> b -> Cone r point a -> b Source #

foldl :: (b -> a -> b) -> b -> Cone r point a -> b Source #

foldl' :: (b -> a -> b) -> b -> Cone r point a -> b Source #

foldr1 :: (a -> a -> a) -> Cone r point a -> a Source #

foldl1 :: (a -> a -> a) -> Cone r point a -> a Source #

toList :: Cone r point a -> [a] Source #

null :: Cone r point a -> Bool Source #

length :: Cone r point a -> Int Source #

elem :: Eq a => a -> Cone r point a -> Bool Source #

maximum :: Ord a => Cone r point a -> a Source #

minimum :: Ord a => Cone r point a -> a Source #

sum :: Num a => Cone r point a -> a Source #

product :: Num a => Cone r point a -> a Source #

Traversable (Cone r point) Source # 
Instance details

Defined in HGeometry.Cone

Methods

traverse :: Applicative f => (a -> f b) -> Cone r point a -> f (Cone r point b) Source #

sequenceA :: Applicative f => Cone r point (f a) -> f (Cone r point a) Source #

mapM :: Monad m => (a -> m b) -> Cone r point a -> m (Cone r point b) Source #

sequence :: Monad m => Cone r point (m a) -> m (Cone r point a) Source #

(Point_ point 2 r, Num r, Ord r) => HasIntersectionWith (Point 2 r) (Cone r point edge) Source # 
Instance details

Defined in HGeometry.Cone

Methods

intersects :: Point 2 r -> Cone r point edge -> Bool Source #

(Show point, Show r, Show edge) => Show (Cone r point edge) Source # 
Instance details

Defined in HGeometry.Cone

Methods

showsPrec :: Int -> Cone r point edge -> ShowS Source #

show :: Cone r point edge -> String Source #

showList :: [Cone r point edge] -> ShowS Source #

(Eq point, Eq r, Eq edge) => Eq (Cone r point edge) Source # 
Instance details

Defined in HGeometry.Cone

Methods

(==) :: Cone r point edge -> Cone r point edge -> Bool Source #

(/=) :: Cone r point edge -> Cone r point edge -> Bool Source #

(Ord point, Ord r, Ord edge) => Ord (Cone r point edge) Source # 
Instance details

Defined in HGeometry.Cone

Methods

compare :: Cone r point edge -> Cone r point edge -> Ordering Source #

(<) :: Cone r point edge -> Cone r point edge -> Bool Source #

(<=) :: Cone r point edge -> Cone r point edge -> Bool Source #

(>) :: Cone r point edge -> Cone r point edge -> Bool Source #

(>=) :: Cone r point edge -> Cone r point edge -> Bool Source #

max :: Cone r point edge -> Cone r point edge -> Cone r point edge Source #

min :: Cone r point edge -> Cone r point edge -> Cone r point edge Source #

type Dimension (Cone r point edge) Source # 
Instance details

Defined in HGeometry.Cone

type Dimension (Cone r point edge) = 2
type NumType (Cone r point edge) Source # 
Instance details

Defined in HGeometry.Cone

type NumType (Cone r point edge) = r

apex :: forall r point1 edge point2 f. Functor f => (point1 -> f point2) -> Cone r point1 edge -> f (Cone r point2 edge) Source #

leftBoundaryVector :: forall r point edge f. Functor f => ((Vector 2 r :+ edge) -> f (Vector 2 r :+ edge)) -> Cone r point edge -> f (Cone r point edge) Source #

rightBoundaryVector :: forall r point edge f. Functor f => ((Vector 2 r :+ edge) -> f (Vector 2 r :+ edge)) -> Cone r point edge -> f (Cone r point edge) Source #

leftBoundary :: (Dimension point ~ 2, NumType point ~ r) => Cone r point edge -> HalfLine point :+ edge Source #

Get the left boundary as a HalfLine starting at the apex.

rightBoundary :: (Dimension point ~ 2, NumType point ~ r) => Cone r point edge -> HalfLine point :+ edge Source #

Get the left boundary as a HalfLine starting at the apex.

coneBisector :: (Point_ point 2 r, Num r) => Cone r point edge -> HalfLine point Source #

Get the bisector of the cone

intersectingHalfplanes :: (Point_ point 2 r, Num r, Ord r) => Cone r point edge -> Vector 2 (HalfSpaceF (LinePV 2 r)) Source #

Get the two halfplanes so that the cone is the intersection of the two halfplanes. the first halfplane is the plane right of the left boundary, whereas the second halfplane is the plane left of the right boundary.