Moin,
sorry für den langen Titel: Mir ist da echts nichts besseres eingefallen, was die Sache kürzer beschreibt.
Zur Ausgangssituation:
Ich will (später) eine 2D-Form generieren, die in mehrere ungefähr gleichgroße Flächen unterteilt ist. Dabei gilt, dass eine Fläche mindestens eine und maximal 6 (vllt. später auch 8) Nachbarflächen hat. Die Flächen sollen dabei von der Form her von unregelmäßigen Dreiecken bis Sechsecken (Achtecken) gehen (wenn möglich alle konvex). Natürlich sind die Flächen wild angeordnet, folgen also keiner Rasterstruktur oder ähnlichem.
Ich habe mir dazu erst mal ein HashSet aus Objekten angelegt. Jedes Objekt steht für eine Fläche. Und jedes Objekt hat ein HashSet an Nachbarobjekte/-flächen.
Das Problem an der Sache mit der Nachbarschaftsgenerierung ist, dass bei einem naiven Algorithmus doofe Formen herauskommen können. zB hier liegen eine grüne und eine orange Fläche übereinander, beide sind Nachbarn der blauen Fläche:

Ich hätte es gerne aber mosaikartig, ohne Überlappung.
Ist jemandem ein Algo bekannt, mit dem man das erreichen kann? Oder hab ich wieder Scheuklappen auf und sehe die einfache Lösung nicht?
Gruß Laurin
sorry für den langen Titel: Mir ist da echts nichts besseres eingefallen, was die Sache kürzer beschreibt.
Zur Ausgangssituation:
Ich will (später) eine 2D-Form generieren, die in mehrere ungefähr gleichgroße Flächen unterteilt ist. Dabei gilt, dass eine Fläche mindestens eine und maximal 6 (vllt. später auch 8) Nachbarflächen hat. Die Flächen sollen dabei von der Form her von unregelmäßigen Dreiecken bis Sechsecken (Achtecken) gehen (wenn möglich alle konvex). Natürlich sind die Flächen wild angeordnet, folgen also keiner Rasterstruktur oder ähnlichem.
Ich habe mir dazu erst mal ein HashSet aus Objekten angelegt. Jedes Objekt steht für eine Fläche. Und jedes Objekt hat ein HashSet an Nachbarobjekte/-flächen.
Das Problem an der Sache mit der Nachbarschaftsgenerierung ist, dass bei einem naiven Algorithmus doofe Formen herauskommen können. zB hier liegen eine grüne und eine orange Fläche übereinander, beide sind Nachbarn der blauen Fläche:

Ich hätte es gerne aber mosaikartig, ohne Überlappung.
Ist jemandem ein Algo bekannt, mit dem man das erreichen kann? Oder hab ich wieder Scheuklappen auf und sehe die einfache Lösung nicht?
Gruß Laurin
Zuletzt bearbeitet:
