AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Polygone zusammenfassen

Ein Thema von bernhard_LA · begonnen am 26. Nov 2012 · letzter Beitrag vom 26. Nov 2012
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.136 Beiträge
 
Delphi 11 Alexandria
 
#1

Polygone zusammenfassen

  Alt 26. Nov 2012, 11:53
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.
Miniaturansicht angehängter Grafiken
polygon_task_1.jpg  
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Polygone zusammenfassen

  Alt 26. Nov 2012, 11:58
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.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Polygone zusammenfassen

  Alt 26. Nov 2012, 12:11
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.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#4

AW: Polygone zusammenfassen

  Alt 26. Nov 2012, 12:43
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.
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.136 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Polygone zusammenfassen

  Alt 26. Nov 2012, 13:19
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 ....
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Polygone zusammenfassen

  Alt 26. Nov 2012, 13:19
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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