Die Funktion Polylinie wird verwendet, um Polylinien zu erstellen, die aus geraden Liniensegmenten und Bogensegmenten bestehen.
Format:
Code Block |
---|
Polyline(<Argumenteliste>); |
<Argumenteliste> | Definiert die Argumenteliste, durch Kommata getrennt. Argumente definieren die individuellen Segmente einer Polylinie. |
Ein Liniensegment wird durch 2 Punkte definiert.
Ein Bogensegment wird durch eine Abrundungsfunktion oder durch eine Funktion Arc0 oder Arc1 und zwei Punkten an den Enden des Bogens definiert.
Für Polylinien, die nur aus geraden Liniensegmenten bestehen, enthält die <Argumenteliste> nur 2D-Punkte, die über die Funktion Point(x,y) definiert werden.
Format:
Point(<cx>,<cy>)
<cx> | Definiert die X-Koordinate des Punkts |
<cy> | Definiert die Y-Koordinate des Punkts |
Ein Rechteck kann beispielsweise wie folgt definiert werden:
Code Block |
---|
recht = Polyline( // Kein Zeilenende |
...
Point(0,0), // diese Funktion befindet sich auf mehreren Zeilen |
...
Point(B, 0), |
...
Point(B, H), |
...
Point(0, H), |
...
Point(0, 0) ); |
Es sollte noch angemerkt werden, dass es sich um eine geschlossene Polylinie handelt, falls die Anfangs- und Endpunkte deckungsgleich sind. Dieser Polylinientyp ist auf einen bestimmten Bereich begrenzt und kann für die Erstellung von 3D-Objekten verwendet werden.
Polylinien mit Bogensegmenten werden durch das Hinzufügen der Hilfsfunktionen Arc0 und Arc1 in der Argumenteliste definiert. Arc0 baut den kreisförmigen Bogen im Uhrzeigersinn auf, während Arc1 den kreisförmigen Bogen entgegen den Uhrzeigersinn aufbaut.
Format:
Code Block |
---|
Arc0(<cx>,<cy>), |
...
Arc1(<cx>,<cy>), |
<cx> | Definiert die X-Koordinate des Bogenmittelpunkts |
<cy> | Definiert die Y-Koordinate des Bogenmittelpunkts |
Anfangs- und Endpunkte eines Bogens werden durch die vorhergehend und nachfolgend genannten Argumente definiert.
Arc0 und Arc1 können das erste oder letzte Argument in der Argumenteliste darstellen. Für eine Polylinie, die nu rein Bogensegment enthält, besteht die <Argumenteliste> aus zwei durch die Funktion Point(x,y) definierten Punkten und aus einem Bogen, der entweder durch die Funktion Arc0 oder durch Arc1 definiert wird.
Beispiel für Bögen in einer Polylinie:
Code Block |
---|
//Polyarc.ppm |
...
- Polylinie mit Bögen |
...
YGroesse=5; |
...
XGroesse=6; |
...
R = 1; |
...
Pfad = Polyline(Point(0, R), // Beginn an Oberseite der abgerundeten unteren linken Ecke |
...
Point(0, YGroesse-R), // gehe zur Unterseite der abgerundten oberen linken Ecke |
...
Arc1(0, YGroesse, R), // aus dieser Ecke einen "Ausschnitt" machen |
...
Point(R, YGroesse), // linke Seite der oberen Kanten |
...
Point(XGroesse-R, YGroesse), |
...
Arc0(XGroesse-R, YGroesse-R, R), // aus dieser Ecke eine "Abrundung" machen |
...
Point(XGroesse, YGroesse-R), |
...
Point(XGroesse, R), |
...
Arc0(XGroesse-R, R, R), // weitere Abrundung |
...
Point(XGroesse-R, 0), |
...
Point(R, 0), |
...
Arc1(0, 0, R), // weiterer Ausschnitt |
...
Point(0, R)); |
...
Output(Pfad); |
Eine weitere Methode für das Erstellen eines Bogens innerhalb einer Polylinie ist es, die Hilfsfunktion Fillet zu verwenden. Diese Funktion "glättet" zwei lineare Segmente, die am vorhergehenden Punkt beginnen und enden, indem an einer Ecke ein Bogen mit einem bestimmten Radius eingefügt wird. Dies gewährleistet glatte Übergangspunkte.
Format:
Code Block |
---|
Fillet(<Radius>); |
<Radius> | Definiert den Radius der Abrundung. |
Beispiel für Abrundungen in einer Polylinie:
Code Block |
---|
// polyfillet.ppm |
...
- Polylinie mit Abrundungen |
...
H = 5; |
...
L = 10; |
...
FR = 1; |
...
p2 = Polyline( // Rechteck mit abgerundeten Ecken |
...
Point(0,0), // untere linke Ecke |
...
Point(L,0), // untere rechte Ecke |
...
Fillet(FR), // platziert Abrundung unten rechts |
...
Point(L,H), // obere rechte Ecke |
...
Fillet(FR), // platziert Abrundung oben rechts |
...
Point(0,H), // obere linke Ecke |
...
Fillet(FR), // platziert Abrundung oben links |
...
Point(0,0), // schließt das Rechteck |
...
Fillet(FR) // Anfangs-/Endecke der Abrundung Da es sich um eine geschlossene Form handelt |
...
// wird nachfolgend keine Point-Funktion benötigt |
...
); |
...
Output(p2); |
Abrundungen und Bögen können innerhalb der Funktion Polyline auch zusammen verwendet werden.
Beispiel für Bögen und einer Abrundung in einer Polylinie:
Code Block |
---|
Poly1 = Polyline( // Rechteck mit abgerundeten Ecken |
...
Point(0, 0), |
...
Point(B - r, 0), Arc1(B - r, r), Point(B, r), |
...
Point(B, H - r), Arc1(B - r, H - r), Point(B - r ,H), |
...
Point(0, H), Fillet(r), |
...
Point(0, 0), Fillet(r) ); |