Ich habe ein Programmierproblem im Zusammenhang mit der Netzgenerierung für Stadtnetze. Ich habe kürzlich einen Stadtnetzgenerator erstellt und bin so weit gekommen, das Straßennetz für das von meinem System ausgespuckte Netz zuverlässig zu generieren. Jetzt bin ich jedoch nicht mehr in der Lage, eine Methode zu finden, um die Grundstücke und Zwischenräume zwischen den Straßen zu erzeugen. Schließlich möchte ich, dass das Stadtgitter Höhenänderungen aufweist, und dafür muss ich in der Lage sein, die Zwischenräume zwischen den Straßen auszufüllen.
Hier ist ein Beispiel für das, was ich habe:
Ich habe mich mit Triangulationsmethoden wie Delauney Triangulation befasst, aber die Ausgabe ist unzuverlässig (möglicherweise aufgrund der Art und Weise, wie ich sie verwende). Hier ist ein weiteres Beispiel, das das Problem zeigt (die schwarzen Linien sind das Straßennetz, die magentafarbenen sind die Delauney-Ausgabe):
Zum größten Teil folgt die Delauney-Ausgabe dem Netz, wenn ich es nur mit den Eckpunkten präsentiere, aus denen die Schnittpunkte bestehen. Manchmal überlappen sich die Delauney-Dreiecke jedoch mit denen des Straßennetzes (wie bei der breiten Straße in der Bildmitte). Ich verwende einen Port von as2Delauney für Unity und erstelle einfach eine Liste aller Eckpunkte, aus denen die Schnittpunkte bestehen, und übergebe sie dann an die Delauney-Funktion. Ich frage mich, ob ich etwas berücksichtigen muss, bevor ich eine Reihe von Punkten und übergebe Lassen Sie die Funktion es aussortieren.
Gibt es spezielle Überlegungen, die ich bei der Verwendung von Delauney für diese Art der Triangulation berücksichtigen muss, oder gibt es andere Methoden, mit denen ich die Füllungen für das Straßennetz erstellen kann?
Ich habe darüber nachgedacht, eine Funktion zu erstellen, die versucht, den Kreuzungen im oder gegen den Uhrzeigersinn zu folgen, bis sie wieder zum Start zurückkehrt. Dies würde jedoch zu Endlosschleifen führen, da einige Straßen Sackgassen sind.
Im Moment bin ich mir nicht sicher, wonach ich suchen soll, da mir die Terminologie fehlt und Google keine Ergebnisse hinsichtlich der Methoden geliefert hat, mit denen ich die Füllungen für das Straßennetz generieren könnte (es gibt einige gute Informationen zur Stadterzeugung, jedoch nicht auf dem Maschenteil).
Hat jemand irgendwelche Erfahrungen damit?
Bearbeiten: So funktioniert mein System:
Grundsätzlich verwende ich eine offene Liste von Leitungen, um mein Netzwerk zu erweitern, und überprüfe die Leitungen anhand einer Reihe von Einschränkungen. Dann gehe ich jede Linie durch und generiere Schnittpunkte für jeden Start- und Endpunkt. Wenn das Ende / der Start bereits in meiner Liste enthalten ist, füge ich den anderen Punkt als Ziel für die aktuelle Kreuzung hinzu.
Am Ende habe ich eine Liste von benutzerdefinierten Objekten, die ihren eigenen Positionsvektor und alle Positionsvektoren der Schnittpunkte enthalten, mit denen sie verbunden sind. Damit erstelle ich dann die Netzpunkte für den Schnittpunkt, indem ich die Schnittpunkte der Linien überprüfe, aus denen die Seiten der Straßen bestehen. Ich habe diese Punkte zur Verfügung und verwende sie, um die Dreiecke für mein Netz zu erstellen.
Jetzt muss ich nur noch wissen, wie man sie organisiert, um die Füllungen zu erstellen, die sich über mehrere Schnittpunkte erstrecken.