Autor |
Beitrag |
Balduin
Hält's aus hier
Beiträge: 8
|
Verfasst: Do 30.06.11 07:57
Hallo zusammen,
bräuchte Ideen für folgendes Problem:
Es gibt ein Hauptpolygon. Weiterhin gibt es Polygone welche das Hauptpolygon schneiden, innerhalb oder ausserhalb liegen.
Als erstes muss also geprüft werden welcher Fall vorliegt (innerhalb ausserhalb, schneiden).
Die Polygonelemente werden dann vom Hauptpolygon abgezogen sodass ein neues Innenpolygon entsteht.
Die angehängte Grafik sollte das Problem deutlich machen.
Hat jemand eine Idee wie man da vorgehen könnte ?
Einloggen, um Attachments anzusehen!
_________________ Balduin
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 30.06.11 09:09
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 30.06.11 11:02
Und dann noch GetRegionData.
Wie man da allerdings nicht-Rectangles rauskriegt wäre noch zu Testen. Ich denke mal, da wirds was undokumentiertes geben, z.B. ein Ergebnis bei dem iType nicht RDH_RECTANGLES ist.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 30.06.11 11:24
Martok hat folgendes geschrieben : | Wie man da allerdings nicht-Rectangles rauskriegt wäre noch zu Testen. |
Vermutlich gar nicht, denn intern sind das einfach viele Rechtecke. Diese Rawdaten kann man natürlich auslesen, aber ob es Funktionen gibt, die daraus etwas anderes wie Polygone interpolieren bezweifle ich eher.
Da man Regionen aber auch zeichnen usw. kann, ist das aber meistens auch gar nicht wichtig.
|
|
Horst_H
      
Beiträge: 1654
Erhaltene Danke: 244
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: Do 30.06.11 12:34
Hallo,
sollte da nicht etwas, wie dies gesucht werden:
www.google.de/search...n+intersection+sweep
softsurfer.com/Archi...8/algorithm_0108.htm
mit einer Veranschaulichung, aus zwei sich überschneidenden Polygonen, eigenständige zu machen
softsurfer.com/Archi...pose%20into%20Simple
Gruß Horst
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 30.06.11 23:14
Schau dir mal den Algorithmus von
www.cs.man.ac.uk/~toby/alan/software/
an, der macht das alles fuer dich und ist einer der schnellsten.
Es gibt eine Version (wenn auch mit Speicherlecks) für Pascal.
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
Balduin 
Hält's aus hier
Beiträge: 8
|
Verfasst: Fr 01.07.11 08:01
Vielen Dank für die Infos. Die gdi32.dll mit combinergn erscheint mir auf den ersten Blick ungeeignet. Die GPC library löst wahrscheinlich alle meine Probleme. Muss ich am WE mal ausprobieren.
_________________ Balduin
|
|
Balduin 
Hält's aus hier
Beiträge: 8
|
Verfasst: Di 05.07.11 07:08
Es gibt hier ein einfaches Beispiel wie man die unit gpc benutzt:
www.nldelphi.com/for...;p=309105#post309105
Ansonsten war der Tip von uall@ogc "Gold wert" - Danke nochmal
_________________ Balduin
|
|