Torusförmiges Array addressieren
-
Hat jemand von Euch irgendwo einen Codeschnipsel, mit dem die Abbildung eines linearen Arrays auf einen Torus gemacht wird?
Ich möchte n Objekte auf einem Torus mit den Dimensionen
m*o=n
anordnen, und brauche hauptsächlich die 8 Nachbarschaftsindizes in die 8 Himmelsrichtungen, ausgedrückt in Abhängigkeit vom betrachteten Index i.
Beispiel:
n=12 m=3 o=4
Der Torus aufgetrennt und flach dargestellt sieht dann so aus:
| | | - 0- 1- 2- | | | - 3- 4- 5- | | | - 6- 7- 8- | | | - 9-10-11- | | |
Wenn ich also z.B. i=2 habe, möchte ich die Indexe der 8 Nachbarn in den Hauptrichtungen haben:
N=11 NO=9 O=0 SO=3 S=5 SW=4 W=1 NW=10
-
etwas lineares in etwas rechteckiges abbilden:
du hast i gegeben:dann einfach Teilen ohne Rest: i/Breite = y
i mod Breite = x
nun hast du x und y in kartesischen Koordinaten=> in Torus umwandeln:
Höhe, Breite, x und y gegeben:
((x mod Höhe),(y mod Breite)) = (x',y')x' und y' sind die Toruskoordinaten
aus x' und y' kommst du wieder auf linieares Array:
x'*Breite+y'*Breite = n
-
Vertexwahn schrieb:
etwas lineares in etwas rechteckiges abbilden:
du hast i gegeben:dann einfach Teilen ohne Rest: i/Breite = y
i mod Breite = x
nun hast du x und y in kartesischen Koordinaten=> in Torus umwandeln:
Höhe, Breite, x und y gegeben:
((x mod Höhe),(y mod Breite)) = (x',y')x' und y' sind die Toruskoordinaten
aus x' und y' kommst du wieder auf linieares Array:
x'*Breite+y'*Breite = nDanke Dir! Ich dachte, da gäbe es eventuell etwas Trickreiches ohne Umwandlung in kartesische Koordinaten, aber okay...