Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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