Autor Beitrag
ademus
Hält's aus hier
Beiträge: 11

WIN XP
Delphi 2005
BeitragVerfasst: So 15.05.05 14:33 
Hallo zusammen,

habe mich die letzten Tage damit beschäftigt, einen Algorithmus zur Berechnung beliebiger Überschneidungen von Rechtecken zu kreieren. (Cohen-Sutherland-Algorithmus)
Habe das auch soweit hinbekommen. Nur scheint mir das Ergebnis sehr umständlich:
Prog. ansehen: www.entwurfsforschun...04_rechtClipping.exe
Download (330kb): www.entwurfsforschun...04_rechtClipping.zip

Würde mich freuen, wenn jemand Verebesserungs-/Optimierungsvorschläge hätte.
Die weitere Verwendung wird sein, die Überlagerungsflächen mittels Evolutionsstrategie zu minimieren.
Beste Grüße ademus
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 15.05.05 14:52 
Alternativ dazu kann man auch die Funktion IntersectRect benützen.
ademus Threadstarter
Hält's aus hier
Beiträge: 11

WIN XP
Delphi 2005
BeitragVerfasst: So 15.05.05 15:24 
stimmt, mit IntersectRect hätte ich mir anscheinend eine Menge Arbeit sparen können... :roll:
Vielleicht noch eine gute Idee, wie man die Überlappung beliebiger Polygone entsprechend erhält?
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 15.05.05 15:34 
Beliebige Polygone (eines der Polygone muss iirc aber konvex sein):
:arrow: Sutherland-Hodgeman oder Liang-Barsky Algorithmus
Muetze1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 346



BeitragVerfasst: So 15.05.05 20:11 
Moin!

user profile iconademus hat folgendes geschrieben:
stimmt, mit IntersectRect hätte ich mir anscheinend eine Menge Arbeit sparen können... :roll:
Vielleicht noch eine gute Idee, wie man die Überlappung beliebiger Polygone entsprechend erhält?


Bastel dir Polygone regions zusammen und dann so kombinieren (CombineRgn) das du die Überschneidungsfläche erhälst.

MfG
Muetze1

_________________
49 63 68 68 61 62 65 6B 65 69 6E 65 41 68 6E 75 6E 67 21
ademus Threadstarter
Hält's aus hier
Beiträge: 11

WIN XP
Delphi 2005
BeitragVerfasst: Do 19.05.05 10:41 
Danke für den Tip, Muetze1.
Habe an meinem kleinem Rechteck-Überschneidungsprogramm weitergebastelt. - Minimierung der Überschneidungsflächen zur Erzeugung einer "dichten Packung" der Rechtecke:
Sehen: www.entwurfsforschun.../07_packingScale.exe
Source: www.entwurfsforschun.../07_packingScale.zip
(Über die Anzahl der Rechtecke und deren Größe den Wert der 'Rechteckfläche ges.' so einstellen, dass er ca. dem Wert 'Feldfläche ges.' entspricht.)

Wie kann ich denn einstellen, dass mein TImage, in dem ich die Rechtecke zeichne, auf jedem System gleich groß ist? Der Wert 'Feldfläche ges.' ist bei mir 160737 Pixel, bei den meisten anderen ist er geringer?
Und wenn jemand eine Idee hat, wie ich die ganze Berechnungsmethode verbessern kann, würde ich mich natürlich freuen, da der Algorithmus manchmal in einem lokalen Optimum hängen bleibt.

Beste Grüße ademus