Einzelnen Beitrag anzeigen

Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

Zwischen-den-Jahren-Kopfnuss: Hilfe zum Algorithmus

  Alt 27. Dez 2011, 12:39
Hallo Gemeinde!
Frohe Feiertage und so

Vielleicht hat ja jemand Zeit und Lust neben Lebkuchen und Gans beim folgendem Problemchen behilflich zu sein:
Ich habe da einen feinen Algorithmus, der mir ein Rechteck (Grundrechteck) in beliebig viele kleinere Rechtecke (ohne Überlappung -- "zero waste") unterteilt (mit Beachtung von Seiten- und Flächen Restriktionen). Das funktionert super und das Ergebnis sieht nun wie ein Grundriss einer Wohnung aus. Mein Problem: Ich hätte gern Türen zwischen benachbarten Räumen. Die anhängende PNG-Datei macht das Problem hoffentlich klarer.
Ich habe also nach der Raum-Generierung ein Rechteck-Array vom Typ TRechteck, der für jeden Raum folgende Angaben enthält:
- Fläche, Länge, Breite, XPos und YPos
Nun wird es schwierig: Ich denke, ich müßte nun durch das Rechteck-Array laufen, um benachbarte Räume zu identifizieren. Ich vermute in der daraus folgenden zweidimensionalen "Ist-Nachbar-von-Matrix" würde dann für jede Raumkobination stehen:
- 1 (Nachbar Nordwand) oder
- 2 (Nachbar Westwand) oder
... etc. stehen.
Anschließend würde ich durch diese Matrix laufen und die Türen entsprechend setzen.

Ich bin mir aber nicht sicher ob das überhaupt eine gute Idee ist (mir verbiegt sich das Hirn bei der Vorstellung: Ich müßte dann ja die Räume nach iregendeinem Kriterium sortieren, die Lage der Tür ist ja wichtig, sonst setze ich die Tür für einen Raum mittig in seiner vertikalen Wand, aber dann kommt nocht ein kleiner Nachbarraum und dann sitzt doch die Tür an falscher Stelle oder so). Naja, und Außenwände sollten garkeine Tür haben.

Falls das ich das Problem auch nur Ansatzweise klar geschildert habe, würde ich mich über Kommentare/Ideen oder gar Lösungen sehr freuen.

Vielen Dank vorab
Gruß
Jazzman
Miniaturansicht angehängter Grafiken
doorproblem.png  
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat