Maximale Ausdehnung eines Rechtecks inmitten anderer Rechtecke

19/11/2010 - 17:53 von Hermie | Report spam
Hallo!

Ich möchte gerne die maximale Ausdehnung eines Rechtecks bestimmen, dass

a) Von einem Workspace-Rand umgeben wird
b) Möglicherweise von anderen Rechtecken umgeben wird

Also ungefàhr so:

_________________________________________
| |
| **** #### |
| * * # # |
| * * #### |
| **** |
| |
| |
| |
| |
| #### |
| # # |
| # # |
| #### |
| ######### |
| # # |
| ######### |
|_______________________________________|

Das Rechteck, das aus Sternchen besteht, ist das Rechteck, dessen
maximale Ausdehnung ich erfassen möchte.

Die Lösung sàhe so aus, die Pluszeichen verkörpern die maximal mögliche
Ausdehnung:
_________________________________________
|+++++++++++ |
|++****+++++ #### |
|++* *+++++ # # |
|++* *+++++ #### |
|++****+++++ |
|+++++++++++ |
|+++++++++++ |
|+++++++++++ |
|+++++++++++ |
| #### |
| # # |
| # # |
| #### |
| ######### |
| # # |
| ######### |
|_______________________________________|

Ich habe schon sehr viele Formeln ausprobiert, und alle waren wieder
extrem kompliziert, und ich habe noch keine immer-funktionierende Lösung
gefunden.
Etwas, das für mich immer geklappt hat, war, den Rand um das Rechteck
Pixel für Pixel zu vergrößern und dann zu gucken, ob es irgendwo
anstößt, aber das ist natürlich sehr rechenintensiv.
Gibt es dafür eine einfache(rere) Formel?

Danke!
Hermie
 

Lesen sie die antworten

#1 Frank Müller
19/11/2010 - 23:47 | Warnen spam
Hallo Hermie

Ich möchte gerne die maximale Ausdehnung eines Rechtecks bestimmen,
dass

a) Von einem Workspace-Rand umgeben wird
b) Möglicherweise von anderen Rechtecken umgeben wird



Was genau verstehst du denn unter maximaler Ausdehnung?
Nur die in x und y Richtung, wenn ja welche hat Vorrang,
oder die Ausdehnung so, dass das neue Rechteck die
größtmöglich Flàche hat?

Also ungefàhr so:

_________________________________________
|
**** #### |
* * # # |
* * #### |
**** |
|
|
|
|
#### |
# # |
# # |
#### |
######### |
# # |
######### |
_______________________________________|



Das Rechteck, das aus Sternchen besteht, ist das Rechteck, dessen
maximale Ausdehnung ich erfassen möchte.

Die Lösung sàhe so aus, die Pluszeichen verkörpern die maximal
mögliche Ausdehnung:



Oder eben auch nicht, ich habe in zwei deiner
Rechtecke mal eine 1 und eine zwei geschrieben,
Erklàrung siehe unten.

_________________________________________
+++++++++++ |
++****+++++ #### |
++* *+++++ # 1 # |
++* *+++++ #### |
++****+++++ |
+++++++++++ |
+++++++++++ |
+++++++++++ |
+++++++++++ |
#### |
# 2 # |
# # |
#### |
######### |
# # |
######### |
_______________________________________|





Du hast dein Rechteck in x Richtung vergrößert bis
es an den Rand von Rechteck 1 kommt. danach
hast du die y Richtung genommen bis auf die
Oberkante von Rechteck 2

Man kann es aber auch so machen:
Zuerst in y Richtung vergrößern, dann bis du
unten am Workspace angekommen, danach
dann in x Richtung da kommst du bis an den
linken Rand von Rechteck 2

Wenn es um die Frage der Flàche geht
bleibt zu prüfen welches der beiden
Rechtecke größer ist. Das könnte sowohl
das eine als auch das andere sein, auch
theoretisch beide gleich groß.

Ich habe schon sehr viele Formeln ausprobiert, und alle waren wieder
extrem kompliziert, und ich habe noch keine immer-funktionierende
Lösung gefunden.



Einfach ist das auch nicht. Aber was für Formeln waren das die
du ausprobiert hast? Rein schulmàssige Mathematik (Rucksackproblem,
Extremwertaufgaben der Analysis), oder selbst erstellte Formeln?

Etwas, das für mich immer geklappt hat, war, den Rand um das Rechteck
Pixel für Pixel zu vergrößern



Auch hier wieder die Frage in welcher Richtung du die Pixel
vergrößert hast. Nur waagerecht (x Richtung) bis an die
Grenze und dann senkrecht (y Richtung) oder jeweils ein Pixel
mehr gleichzeitig in beide Richtungen?

und dann zu gucken, ob es irgendwo
anstößt, aber das ist natürlich sehr rechenintensiv.



Ja und auch der falsche Weg, denn die Positionen
der anderen Rechtecke sind dir ja mit Sicherheit
bekannt.

Gibt es dafür eine einfache(rere) Formel?



Wenn gegeben ist, dass es immer nur
Rechtecke sind, deren Eckpunkte bekannt sind,
dann würde ich alle Rechtecke mit den Koordinaten
in "etwas Sortierbarem" wie einem Array oder
einem Recordset (ohne DB Anbindung) festhalten.

Die Koordinaten deines zu untersuchenden Rechtecks
kennst du ja auch. Dann eine Abfrage welches der
anderen Objekte auf Basis des Ausgangsrechtecks
den kleinsten x oder y Wert hat danach die andere
Richtung jeweils. Sind aber wenn es um die Flàche
geht zwei "Abfragen" Natürlich musst du auch
berücksichtigen, dass dein zu untersuchendes
Rechteck in deinem Beispiel rechts von
Rechteck 1 liegen kann.

Beschreibe doch mal die Hintergründe warum
du das brauchst, vielleicht gibt es dann ja
eine einfache(re) Lösung.

Gruß,
Frank

Ähnliche fragen