Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Polygone zusammenfassen (https://www.delphipraxis.net/171803-polygone-zusammenfassen.html)

bernhard_LA 26. Nov 2012 10:53

Polygone zusammenfassen
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich benötigen einen Algorithmus um effektiv zwei Polygone zusammen zufassen.
Meine Polygone bestehen aus N-Punkten, PointF (Float Werte), was man unter http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx fiundet sieht sehr interesant aus , ich hätte hierzu gerne den Algorithmus.

Medium 26. Nov 2012 10:58

AW: Polygone zusammenfassen
 
Was für einen Algo? Den, der hinter dieser API Funktion steht, oder ein Anwendungsbeispiel für diese? (Am Rande: Die WinAPI Regions arbeiten nur mit Integern.)

Aphton 26. Nov 2012 11:11

AW: Polygone zusammenfassen
 
Ein naiver Ansatz wäre, per FloodFill Algorithmus (ohne Färbung) die Ränder entlang zu tracen, bis man an einem Punkt ankommt, wo man schon war.
Ein anderer wäre, eine Boolean Matrix aufzubauen und beide Polygone drinnen abzubilden. Dann wieder die Ränder entlangfahren, bei Änderungen Punkte
aufzeichnen usw usf.

Memnarch 26. Nov 2012 11:43

AW: Polygone zusammenfassen
 
Also, wenn du Polygone menst, hast du sicherlich auch Punktarrays.

Erste Frage: Sind die Formen immer Convex oder können sie auch Concave sein?
-> http://www.mathsisfun.com/definitions/convex.html

Convex(mein theoretischer ansatz)
Hier musst du erstmal herausfinden, welche kannten(verbindung zweiterpunkte) sich überlappen.
Am schnittpunkt fügst du dann bei beiden einen zusätzlichen Punkt ein der die Kante damit nochmal unterteilt.

Danach überprüffst du, welche Punkte von Form A in FormB liegen, diese merkst du dir. Danach guckst du, welche Punkte von Form B in Form A liegen, die merkst du dir auch.

Dan löscht du alle gemerkten punkte, und vereinst die schnittpunkte, die direkt übereinanderlagen.

bernhard_LA 26. Nov 2012 12:19

AW: Polygone zusammenfassen
 
Hallo Zusammen,


danke schon mal für die Inputs:


a) ich habe als Punkt einen Datentyp
Delphi-Quellcode:
        FPoint = record
                 x : Real;
                 y : Real;
                end;
ich denke die MSDN Lösungen spielen nur deshalb so schnell, weil ich bei Integer und einer gegebenen Screen resolution, ein festes Bitarray als Unterlage eh schon haben und damit dann mit wenigen Zahlen (Pixeln / Pixelzeilen) rechnen kann


b) meine Polygone können schon mal 1000 ... 5000 Stützpunkte haben, alle Algorithmen die Schnittpunkte berechnen werden in meinem Fall vermutlich elend langsam werden ....

Sir Rufo 26. Nov 2012 12:19

AW: Polygone zusammenfassen
 
Es gibt eine freie Lib für Polygone mit Integer-Punkten

http://sourceforge.net/p/polyclippin...hi/clipper.pas

Evtl. kannst du die auf Float umschreiben


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz