GeomAlg-0.2.3: Library of geometric algorithms in HaskellSource codeContentsIndex
GeomAlg.Line
Contents
Orientierung
Schnittpunkte
Description
Strecken, Strahlen und Geraden
Synopsis
data (Point p, Num a) => Line p a
= Segment {
point1 :: p a
point2 :: p a
}
| Ray {
point1 :: p a
point2 :: p a
}
| Line {
point1 :: p a
point2 :: p a
}
type Line2 a = Line Point2 a
type L2 a = Line Point2 a
type Line2D = Line2 Double
type Line3 a = Line Point3 a
segmentToLine :: (Point p, Num a) => Line p a -> Line p a
rayToLine :: (Point p, Num a) => Line p a -> Line p a
segmentToRay :: (Point p, Num a) => Line p a -> Line p a
target :: (Point p, Num a) => Line p a -> p a
source :: (Point p, Num a) => Line p a -> p a
mapLine :: (Point p, Num a, Num b) => (p a -> p b) -> Line p a -> Line p b
xcoord2 :: (Point p, Num a) => Line p a -> a
ycoord1 :: (Point p, Num a) => Line p a -> a
ycoord2 :: (Point p, Num a) => Line p a -> a
zcoord1 :: (Point p, Num a) => Line p a -> a
zcoord2 :: (Point p, Num a) => Line p a -> a
xcoord1 :: (Point p, Num a) => Line p a -> a
dy :: Num a => L2 a -> a
dx :: Num a => L2 a -> a
isHorizontal :: Num a => L2 a -> Bool
isVertical :: Num a => L2 a -> Bool
vertical :: Num a => a -> L2 a
horizontal :: Num a => a -> L2 a
data Fractional a => Slope a
= Vertical
| Slope a
slope :: Fractional a => L2 a -> Slope a
areParallel :: Fractional a => L2 a -> L2 a -> Bool
direction :: RealFloat a => L2 a -> a
angle :: Line2D -> Line2D -> Double
translate :: (Floating a, Ord a) => L2 a -> a -> a -> L2 a
rotate :: (Floating a, Ord a) => L2 a -> P2 a -> a -> L2 a
rotateOrg :: (Floating a, Ord a) => L2 a -> a -> L2 a
reflect :: Fractional a => L2 a -> P2 a -> P2 a -> L2 a
fromPDL :: (Floating a, Ord a) => (P2 a -> P2 a -> b) -> P2 a -> a -> a -> b
orientationOfLines :: (Num a, Ord a) => L2 a -> L2 a -> Orientation
strictIntersect :: (Ord a, Fractional a) => L2 a -> L2 a -> Maybe (Point2 a)
intersect :: (Ord a, Fractional a) => L2 a -> L2 a -> Maybe (Point2 a)
doStrictIntersect :: (Ord a, Fractional a) => L2 a -> L2 a -> Bool
doIntersect :: (Ord a, Fractional a) => L2 a -> L2 a -> Bool
interAux :: Fractional a => (Line2 a -> a -> Bool) -> Line2 a -> Line2 a -> Maybe (Point2 a)
intersection :: Fractional a => L2 a -> L2 a -> Maybe (Point2 a, a, a)
distanceFromLine :: (Ord a, Floating a) => L2 a -> P2 a -> a
sqrDistanceFromLine :: (Ord a, Fractional a) => L2 a -> P2 a -> a
distanceAux :: Fractional a => P2 a -> P2 a -> P2 a -> (a, a, a, P2 a)
lengthOfSegment :: (Point p, Floating a) => Line p a -> a
sqrLengthOfSegment :: (Point p, Num a) => Line p a -> a
centerOfSegment :: (Point p, Fractional a) => Line p a -> p a
perpendicular :: Fractional a => L2 a -> L2 a
bisector :: Fractional a => L2 a -> L2 a
Documentation
data (Point p, Num a) => Line p a Source
Constructors
Segment
point1 :: p a
point2 :: p a
Ray
point1 :: p a
point2 :: p a
Line
point1 :: p a
point2 :: p a
show/hide Instances
type Line2 a = Line Point2 aSource
type L2 a = Line Point2 aSource
type Line2D = Line2 DoubleSource
type Line3 a = Line Point3 aSource
segmentToLine :: (Point p, Num a) => Line p a -> Line p aSource
rayToLine :: (Point p, Num a) => Line p a -> Line p aSource
segmentToRay :: (Point p, Num a) => Line p a -> Line p aSource
target :: (Point p, Num a) => Line p a -> p aSource
source :: (Point p, Num a) => Line p a -> p aSource
mapLine :: (Point p, Num a, Num b) => (p a -> p b) -> Line p a -> Line p bSource
xcoord2 :: (Point p, Num a) => Line p a -> aSource
ycoord1 :: (Point p, Num a) => Line p a -> aSource
ycoord2 :: (Point p, Num a) => Line p a -> aSource
zcoord1 :: (Point p, Num a) => Line p a -> aSource
zcoord2 :: (Point p, Num a) => Line p a -> aSource
xcoord1 :: (Point p, Num a) => Line p a -> aSource
dy :: Num a => L2 a -> aSource
dx, dy sind die Differenzen der $x$- bzw. der $y$-Koordinaten der zwei Punkte.
dx :: Num a => L2 a -> aSource
isHorizontal :: Num a => L2 a -> BoolSource
isVertical :: Num a => L2 a -> BoolSource
vertical :: Num a => a -> L2 aSource
horizontal :: Num a => a -> L2 aSource
data Fractional a => Slope a Source
Die Steigung einer Geraden wird als Datentyp |Slope| gespeichert. Ein Nachteil dieser Darstellung ist, da die Darstellung nicht eindeutig ist, $-0=+0$.
Constructors
Vertical
Slope a
show/hide Instances
slope :: Fractional a => L2 a -> Slope aSource
areParallel :: Fractional a => L2 a -> L2 a -> BoolSource
direction :: RealFloat a => L2 a -> aSource
direction ist die Richtung bezglich der $x$-Achse.
angle :: Line2D -> Line2D -> DoubleSource
angle ermittelt den Winkel zwischen zwei Linien.
translate :: (Floating a, Ord a) => L2 a -> a -> a -> L2 aSource
translate|, |rotate| und |reflect| sind kanonische Erweiterungen der entsprechenden Funktionen auf Punkten.
rotate :: (Floating a, Ord a) => L2 a -> P2 a -> a -> L2 aSource
rotateOrg :: (Floating a, Ord a) => L2 a -> a -> L2 aSource
reflect :: Fractional a => L2 a -> P2 a -> P2 a -> L2 aSource
fromPDL :: (Floating a, Ord a) => (P2 a -> P2 a -> b) -> P2 a -> a -> a -> bSource
fromPDL| erstellt die Zwei-Punkte-Form aus einem Punkt, einer Richtung und einer Lnge.
Orientierung
orientationOfLines :: (Num a, Ord a) => L2 a -> L2 a -> OrientationSource
Schnittpunkte
strictIntersect :: (Ord a, Fractional a) => L2 a -> L2 a -> Maybe (Point2 a)Source
intersect :: (Ord a, Fractional a) => L2 a -> L2 a -> Maybe (Point2 a)Source
doStrictIntersect :: (Ord a, Fractional a) => L2 a -> L2 a -> BoolSource
doIntersect :: (Ord a, Fractional a) => L2 a -> L2 a -> BoolSource
interAux :: Fractional a => (Line2 a -> a -> Bool) -> Line2 a -> Line2 a -> Maybe (Point2 a)Source
intersection :: Fractional a => L2 a -> L2 a -> Maybe (Point2 a, a, a)Source
distanceFromLine :: (Ord a, Floating a) => L2 a -> P2 a -> aSource
sqrDistanceFromLine :: (Ord a, Fractional a) => L2 a -> P2 a -> aSource
distanceAux :: Fractional a => P2 a -> P2 a -> P2 a -> (a, a, a, P2 a)Source
lengthOfSegment :: (Point p, Floating a) => Line p a -> aSource
sqrLengthOfSegment :: (Point p, Num a) => Line p a -> aSource
centerOfSegment :: (Point p, Fractional a) => Line p a -> p aSource
perpendicular :: Fractional a => L2 a -> L2 aSource
bisector :: Fractional a => L2 a -> L2 aSource
Produced by Haddock version 2.4.2