Autor Beitrag
Balduin
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 30.06.11 09:09 
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 30.06.11 11:24 
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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