![]() |
Re: schneidet eine Strecke ein Polygon
Hast du dich auch mit nicht-konvexen Polygonen beschaeftigt? Die Entscheidung was dabei innen und aussen ist, ist garnicht so leicht.
|
Re: schneidet eine Strecke ein Polygon
Ja! Meine Polygone sind nicht immer konvex. Bis jetzt lief die fehlerhafte Prozedur ungefähr so:
Code:
Das ganze hat dann noch - wenn kein Schnittpunkt in der Spalte war - solange in beide Richtungen die Nachbarspalten ausprobiert, bis ein Punkt gefunden wurde.
Innen := false;
für alle Linien im Polygon wenn die Linie[i] und die Linie((Punkt.X, 0), (Punkt.X, MaxY)) sich schneiden dann begin wenn Schnittpunkt.Y > Punkt.Y dann Innen := not Innen; wenn Abs(Schnittpunkt.Y - Punkt.Y) < Abs(Bester.Y - Punkt.Y) then Bester := Schnittpunkt; end; Wenn Innen dann Result := Punkt sonst Result := Bester; Leider liefert der Schnittpunkt, der gespeichert wird, ungenaue, gerundete Werte, di nicht immer im Polygon liegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz