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 nur ein 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) );