Frage

Der einfache Algorithmus eine parallele Polylinie zu einer bestehenden Polylinie zu erstellen ist einfach: Sie die normale jedes Vertex berechnen kann (wie der Durchschnitt des Segments Normalen) und verschieben die Eckpunkte der normalen Verwendung mit dem, was Betrag, den Sie wollen.

Allerdings gibt es ein grafisches Problem, wenn ich versuche, diesen Algorithmus auf einer gekrümmten Linienzug zu verwenden, ist dies eine Folge von Punkten, die einen Bogen bilden. Wenn ich die parallel zu dem Bogen Polylinie ist alles in Ordnung, bis ich den Abstand genug erhöhen, die Vertices projiziert durch ihre Normalen eine Polylinie schaffen, in der von einem Scheitelpunkt zu einem anderen bewegt sich tatsächlich in der umgekehrten Richtung Vorschieben eines Selbstkreuzung entsteht.

effizient

Wie kann ich solche Ecken von dem parallelen Linienzug entfernen? Ich habe zwar von der Richtung der Segmente verglichen: wenn die erzeugten Segmente nicht parallel sind, es bedeutet, dass ich ein Punkt waren die parallel Polylinie erreicht haben selbst schneidet. Allerdings bedeutet dies nicht sehr gut für kleine Segmente arbeitet (eine gekrümmte Linienzug erzeugen wird noch kleinere Segmente) oder Polylinien, die ursprünglich entartete Ecken (eine Ecke zum nächsten gleich).

War es hilfreich?

Lösung

Eine parallele Polylinie wird in den grafischen Kreisen als Paralleler Linienzug bekannt. Sieht aus wie eine Offset-Methode Polylinien ist ohne degenerierte Geometrie Artefakte zu erzeugen, um die Verwendung Gerade Skeleton Algorithmen.

Ich habe auch ein interessantes Papier zu dem Thema gefunden genannt Ein Offset-Algorithmus für Linienzug Kurven .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top