Polyline (Polylinie)
Die Funktion Polylinie wird verwendet, um Polylinien zu erstellen, die aus geraden Liniensegmenten und Bogensegmenten bestehen.
Format:
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:
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:
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:
//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:
Fillet(<Radius>);
<Radius> |
Definiert den Radius der Abrundung. |
Beispiel für Abrundungen in einer Polylinie:
// 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:
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) );