GeomAlg-0.2.3: Library of geometric algorithms in HaskellSource codeContentsIndex
GeomAlg.Polygon
Description
Polygons
Synopsis
data (Point p, Num a) => Polygon p a
= PolygonCW [p a]
| PolygonCCW [p a]
type Polygon2 a = Polygon Point2 a
type Polygon3 a = Polygon Point3 a
mapPolygon :: (Point p, Num a, Num b) => (p a -> p b) -> Polygon p a -> Polygon p b
vertices :: (Point p, Num a) => Polygon p a -> [p a]
edges :: [a] -> [(a, a)]
angles :: [a] -> [(a, a, a)]
area :: Fractional a => Polygon2 a -> a
contains :: (Num a, Ord a) => Polygon2 a -> P2 a -> Bool
isConvex :: (Ord a, Num a) => Polygon2 a -> Bool
deleteCollinear :: (Ord a, Num a) => [P2 a] -> [P2 a]
extreme :: (Num a, Ord a) => P2 a -> Polygon2 a -> P2 a
extremeArr :: (Num a, Ord a) => Array Int (P2 a) -> P2 a -> Int -> Int
naiveInConvex :: (Num a, Ord a) => P2 a -> Polygon2 a -> Bool
inConvexInteriour :: (Fractional a, Ord a) => P2 a -> Polygon2 a -> Bool
inConvex :: (Fractional a, Ord a) => P2 a -> Polygon2 a -> Bool
Documentation
data (Point p, Num a) => Polygon p a Source
Constructors
PolygonCW [p a]
PolygonCCW [p a]
show/hide Instances
(Eq a, Num a, Point p) => Eq (Polygon p a)
(Show a, RealFloat a) => MetaPost (Polygon Point2 a)
type Polygon2 a = Polygon Point2 aSource
type Polygon3 a = Polygon Point3 aSource
mapPolygon :: (Point p, Num a, Num b) => (p a -> p b) -> Polygon p a -> Polygon p bSource
vertices :: (Point p, Num a) => Polygon p a -> [p a]Source
edges :: [a] -> [(a, a)]Source
angles :: [a] -> [(a, a, a)]Source
area :: Fractional a => Polygon2 a -> aSource
Die Flche eines Polygons wird nach Theorem 1.4.3 aus cite{orourke94:cg} berechnet.
contains :: (Num a, Ord a) => Polygon2 a -> P2 a -> BoolSource
texttt{countCrossings} ist eine erweiterte Version der Funktion texttt{InPoly} aus cite[S. 235]{orourke94:cg}. Die auf Seite 236 beschriebenen Nachteile werden durch Extratests umgangen.
isConvex :: (Ord a, Num a) => Polygon2 a -> BoolSource
deleteCollinear :: (Ord a, Num a) => [P2 a] -> [P2 a]Source
extreme :: (Num a, Ord a) => P2 a -> Polygon2 a -> P2 aSource
  • Extremale Punkte eines konvexen Polygons

|extreme| ermittelt den extremalen Punkt des konvexen Polygons |p| bezglich des Richtungsvektors |u| (aus cite[K. 7.3]{orourke94:cg}).

extremeArr :: (Num a, Ord a) => Array Int (P2 a) -> P2 a -> Int -> IntSource
naiveInConvex :: (Num a, Ord a) => P2 a -> Polygon2 a -> BoolSource
  • Schnittpunkttests

Fr konvexe Polygone ist der Test auf Enthaltensein einfach, zuerst die naive Methode, die testet, ob sich der Punkt links von oder auf allen Kanten befindet.

inConvexInteriour :: (Fractional a, Ord a) => P2 a -> Polygon2 a -> BoolSource
Der Punkt |p| ist genau dann im Inneren eines Polygon enthalten, wenn die Strecke zwischen |p| und einem Punkt |c| im Innern von |p| keinen Schnittpunkt mit dem Rand von |p| bei einer Kante |e| hat, die inzident zum extremalen Eckpunkt von |p| in Richtung |p-c| ist.
inConvex :: (Fractional a, Ord a) => P2 a -> Polygon2 a -> BoolSource
Produced by Haddock version 2.4.2