Geometrische Pfade streichen - nicht so einfach, wie es scheint

In PDF werden geometrische Pfade einfach als Linien und kubische Bézier-Kurven beschrieben. Das Füllen eines Pfades ist einfach, wenn man die Regel der geraden und nicht-nullen Windungen verstanden hat. Das Streichen eines Pfades ist jedoch nicht so einfach, wie es auf den ersten Blick scheint. Werfen wir einen Blick auf das Streicheln und einige Sonderfälle.

Einen Pfad zu streichen bedeutet eigentlich nichts anderes, als einen neuen Pfad zu erstellen und ihn zu füllen. Zu diesem Zweck muss die Grafik-Engine die im Grafikstatus gespeicherten Linienattribute wie Linienbreite, Gehrungsgrenze, Strichanordnung, Strichphase, Kappen- und Verbindungsstile usw. interpretieren.

Beginnen wir mit einigen einfachen Fällen: Eine einzelne Linie wird mit Hilfe eines moveto, eines lineto und eines stroke Operators gezeichnet. Offensichtlich wird dieser Pfad gestrichen, indem ein neuer Pfad erstellt wird, der aus zwei Kappen am Anfangs- und Endpunkt besteht, die durch zwei Linien verbunden sind. Die Form der Kappen wird durch den Kappenstil und der vertikale Abstand der Linien durch die Linienbreite bestimmt. Zwei Liniensegmente werden in ähnlicher Weise gestrichen, mit Ausnahme des Punktes in der Mitte, der eine Verbindung im vorgegebenen Stil bildet.

Wenn ein Pfad aus mehr als zwei Liniensegmenten besteht, können sie frühere Liniensegmente kreuzen. Dies bedeutet, dass der neu erstellte Pfad mit der Nicht-Nullpunkt-Regel gefüllt werden muss, um die Überlappung korrekt zu zeichnen. Außerdem kann das letzte Liniensegment dort enden, wo das erste beginnt. Dies ist etwas anderes als das Schließen eines Pfades mit dem entsprechenden Operator. Warum? Denn wenn ein gestrichener Pfad geschlossen ist, wird anstelle der Start- und Endkappen eine Linienverbindung verwendet. Wenn ein Pfad nicht geschlossen ist, werden die Kappen gezeichnet, auch wenn der Anfangs- und Endpunkt gleich sind.

Was aber, wenn ein Liniensegment die Länge Null hat? Die Form der Kappen und Verbindungen sowie der Abstand zwischen den Verbindungslinien hängen von der Richtung der Linienführung ab. Wenn der Linienabschnitt die Länge Null hat, kann die Richtung nicht bestimmt werden. Daher ist es im Allgemeinen sicher, solche Liniensegmente zu entfernen, außer in einem Fall. Ein Pfad, der ein einziges Liniensegment der Länge Null enthält, ist zulässig. Aber wie wird sie gezeichnet? Wenn runde Kappen verwendet werden, wird ein Kreis mit einem Durchmesser in Höhe der Linienbreite gezeichnet. Wenn Stoßkappen verwendet werden, wird ein Quadrat gezeichnet. Die Richtung der Kanten ist jedoch implementierungsspezifisch. Wenn keine Kappen verwendet werden, muss ein einzelnes Pixel gezeichnet werden.

Wie sieht es mit Bézier-Kurven aus? Sie werden in eine Anzahl von zusammenhängenden Liniensegmenten umgewandelt, bevor der Pfad gestrichen wird, so dass sie keine besondere Behandlung benötigen.

Gefällt Ihnen, was Sie sehen? Teilen Sie es mit einem Freund.

Grüezi! Wie können wir helfen?

Phone