GeomAlg-0.2.3: Library of geometric algorithms in HaskellSource codeContentsIndex
GeomAlg.Point2
Description
Two dimensional points
Synopsis
module GeomAlg.Point
newtype Point2 a = Point2 (a, a)
type Point2D = Point2 Double
type P2 a = Point2 a
cross2 :: Num a => Point2 a -> Point2 a -> a
area2 :: Num a => Point2 a -> Point2 a -> Point2 a -> a
angle :: (Floating a, Ord a) => P2 a -> a
angle2 :: (Floating a, Ord a) => P2 a -> P2 a -> a
angle3 :: (Floating a, Ord a) => P2 a -> P2 a -> P2 a -> a
angleWrt :: (Floating a, Ord a) => P2 a -> P2 a -> P2 a -> a
angleEps :: (Floating a, Ord a) => a -> P2 a -> P2 a -> a
translate :: (Floating a, Ord a) => P2 a -> a -> a -> P2 a
rotate :: (Floating a, Ord a) => P2 a -> P2 a -> a -> P2 a
rotateOrg :: (Floating a, Ord a) => P2 a -> a -> P2 a
reflect :: Fractional a => P2 a -> P2 a -> P2 a -> P2 a
lexic2 :: (Num a, Ord a) => OrderRel (P2 a)
aboveOrOn :: (Num a, Ord a) => Rel (P2 a)
aboveOrRight :: (Num a, Ord a) => Rel (P2 a)
aboveOrLeft :: (Num a, Ord a) => Rel (P2 a)
above :: (Num a, Ord a) => Rel (P2 a)
belowOrOn :: (Num a, Ord a) => Rel (P2 a)
belowOrRight :: (Num a, Ord a) => Rel (P2 a)
belowOrLeft :: (Num a, Ord a) => Rel (P2 a)
below :: (Num a, Ord a) => Rel (P2 a)
leftOfOrOn :: (Num a, Ord a) => Rel (P2 a)
leftOrBelow :: (Num a, Ord a) => Rel (P2 a)
leftOrAbove :: (Num a, Ord a) => Rel (P2 a)
leftOf :: (Num a, Ord a) => Rel (P2 a)
rightOfOrOn :: (Num a, Ord a) => Rel (P2 a)
rightOrBelow :: (Num a, Ord a) => Rel (P2 a)
rightOrAbove :: (Num a, Ord a) => Rel (P2 a)
rightOf :: (Num a, Ord a) => Rel (P2 a)
rightestLowest :: (Num a, Ord a) => [Point2 a] -> Point2 a
leftestHighest :: (Num a, Ord a) => [Point2 a] -> Point2 a
rightestHighest :: (Num a, Ord a) => [Point2 a] -> Point2 a
lowestLeftest :: (Num a, Ord a) => [Point2 a] -> Point2 a
highestLeftest :: (Num a, Ord a) => [Point2 a] -> Point2 a
lowestRightest :: (Num a, Ord a) => [Point2 a] -> Point2 a
highestRightest :: (Num a, Ord a) => [Point2 a] -> Point2 a
lowest :: (Num a, Ord a) => [Point2 a] -> Point2 a
highest :: (Num a, Ord a) => [Point2 a] -> Point2 a
rightest :: (Num a, Ord a) => [Point2 a] -> Point2 a
leftest :: (Num a, Ord a) => [Point2 a] -> Point2 a
leftestLowest :: (Num a, Ord a) => [Point2 a] -> Point2 a
data Orientation
= Collinear
| Clockwise
| CounterClockwise
orientation :: (Num a, Ord a) => Point2 a -> Point2 a -> Point2 a -> Orientation
caseOrientation :: (Ord a, Num a) => Bool -> Bool -> Bool -> Rel3 (Point2 a)
isRightTurn :: (Num a, Ord a) => Rel3 (Point2 a)
isLeftTurn :: (Num a, Ord a) => Rel3 (Point2 a)
isLeftTurnOrOn :: (Num a, Ord a) => Rel3 (Point2 a)
isRightTurnOrOn :: (Num a, Ord a) => Rel3 (Point2 a)
isOn :: (Num a, Ord a) => Rel3 (Point2 a)
isLeftTurnOrNearer :: (Num a, Ord a) => Rel3 (Point2 a)
isRightTurnOrNearer :: (Num a, Ord a) => Rel3 (Point2 a)
isCollinear :: (Num a, Ord a) => Rel3 (Point2 a)
clockwise3 :: (Ord a, Num a) => [Point2 a] -> [Point2 a]
cclockwise3 :: (Ord a, Num a) => [Point2 a] -> [Point2 a]
Documentation
module GeomAlg.Point
newtype Point2 a Source
Constructors
Point2 (a, a)
show/hide Instances
Functor Point2
Point Point2
Eq a => Eq (Point2 a)
Num a => Num (Point2 a)
(Num a, Ord a) => Ord (Point2 a)
(Ord a, Num a) => Ord (Point2 a)
(Show a, Num a) => Show (Point2 a)
(Show a, RealFloat a) => MetaPost (Point2 a)
type Point2D = Point2 DoubleSource
type P2 a = Point2 aSource
cross2 :: Num a => Point2 a -> Point2 a -> aSource
The cross product for two dimensional points is taken from [CLR90, p. 887-888] and [R94, p.19]
area2 :: Num a => Point2 a -> Point2 a -> Point2 a -> aSource
area2 calculates the determinant.
angle :: (Floating a, Ord a) => P2 a -> aSource
Angles
angle2 :: (Floating a, Ord a) => P2 a -> P2 a -> aSource
angle3 :: (Floating a, Ord a) => P2 a -> P2 a -> P2 a -> aSource
angleWrt :: (Floating a, Ord a) => P2 a -> P2 a -> P2 a -> aSource
angleEps :: (Floating a, Ord a) => a -> P2 a -> P2 a -> aSource
translate :: (Floating a, Ord a) => P2 a -> a -> a -> P2 aSource
Translate the point p in direction a for a distance of d.
rotate :: (Floating a, Ord a) => P2 a -> P2 a -> a -> P2 aSource
Rotate the point p for angle phi around the point o.
rotateOrg :: (Floating a, Ord a) => P2 a -> a -> P2 aSource
Rotate the point p for angle phi around the origin.
reflect :: Fractional a => P2 a -> P2 a -> P2 a -> P2 aSource
Reflect the point p at the line qr.
lexic2 :: (Num a, Ord a) => OrderRel (P2 a)Source
Boolean and Ordering relations.
aboveOrOn :: (Num a, Ord a) => Rel (P2 a)Source
aboveOrRight :: (Num a, Ord a) => Rel (P2 a)Source
aboveOrLeft :: (Num a, Ord a) => Rel (P2 a)Source
above :: (Num a, Ord a) => Rel (P2 a)Source
belowOrOn :: (Num a, Ord a) => Rel (P2 a)Source
belowOrRight :: (Num a, Ord a) => Rel (P2 a)Source
belowOrLeft :: (Num a, Ord a) => Rel (P2 a)Source
below :: (Num a, Ord a) => Rel (P2 a)Source
leftOfOrOn :: (Num a, Ord a) => Rel (P2 a)Source
leftOrBelow :: (Num a, Ord a) => Rel (P2 a)Source
leftOrAbove :: (Num a, Ord a) => Rel (P2 a)Source
leftOf :: (Num a, Ord a) => Rel (P2 a)Source
rightOfOrOn :: (Num a, Ord a) => Rel (P2 a)Source
rightOrBelow :: (Num a, Ord a) => Rel (P2 a)Source
rightOrAbove :: (Num a, Ord a) => Rel (P2 a)Source
rightOf :: (Num a, Ord a) => Rel (P2 a)Source
rightestLowest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
Extremal values.
leftestHighest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
rightestHighest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
lowestLeftest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
highestLeftest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
lowestRightest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
highestRightest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
lowest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
highest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
rightest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
leftest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
leftestLowest :: (Num a, Ord a) => [Point2 a] -> Point2 aSource
data Orientation Source
Orientation is the orientation of point r with respect to the line pq [R94, p.30-31].
Constructors
Collinear
Clockwise
CounterClockwise
show/hide Instances
orientation :: (Num a, Ord a) => Point2 a -> Point2 a -> Point2 a -> OrientationSource
caseOrientation :: (Ord a, Num a) => Bool -> Bool -> Bool -> Rel3 (Point2 a)Source
The collinear case for floating point arithmetic has to be implemented with epsilon-intervals [R94, p.30-31].
isRightTurn :: (Num a, Ord a) => Rel3 (Point2 a)Source
Orientation
isLeftTurn :: (Num a, Ord a) => Rel3 (Point2 a)Source
isLeftTurnOrOn :: (Num a, Ord a) => Rel3 (Point2 a)Source
isRightTurnOrOn :: (Num a, Ord a) => Rel3 (Point2 a)Source
isOn :: (Num a, Ord a) => Rel3 (Point2 a)Source
isLeftTurnOrNearer :: (Num a, Ord a) => Rel3 (Point2 a)Source
isRightTurnOrNearer :: (Num a, Ord a) => Rel3 (Point2 a)Source
isCollinear :: (Num a, Ord a) => Rel3 (Point2 a)Source
clockwise3 :: (Ord a, Num a) => [Point2 a] -> [Point2 a]Source
cclockwise3 :: (Ord a, Num a) => [Point2 a] -> [Point2 a]Source
Produced by Haddock version 2.4.2