Guten Abend,
ich versuche ein drei dimensionales Array in ein ein-dimensionales Array zu konvertieren.
Problematisch ist jedoch dass ich drei Index-Formeln habe.
Dieser ist bedingt dadurch, wie ich das drei dimensionale Array fülle. (Reihenfolge der For-Schleife : Erst X, dann Y, abschließend Z, oder Y, X, Z, et cetera)
Das 3d-Array fülle ich folgendergestalt:
Um auf den 1D-Index zuzugreifen wird hierfür die Methode getFirstZ gebraucht ( denn zuerst wird X, dann Y, dann Z iteriert.)
Gibt es eine allgemeine Form?
Scheint es ja, denn das .NET Framework kann immer korrekt auf den Index zugreifen.(Wenn ich mich recht entsinne konvertiert CSharp ein polydimensionales Array immer in ein ein Dimensionales).
Liebe Grüße.
ich versuche ein drei dimensionales Array in ein ein-dimensionales Array zu konvertieren.
Problematisch ist jedoch dass ich drei Index-Formeln habe.
Dieser ist bedingt dadurch, wie ich das drei dimensionale Array fülle. (Reihenfolge der For-Schleife : Erst X, dann Y, abschließend Z, oder Y, X, Z, et cetera)
C#-Quellcode
- Func<int, int, int, int> getFirstX = (int x, int y, int z) =>
- {
- return z * HEIGHT + y + x * HEIGHT * DEPTH;
- };
- Func<int, int, int, int> getFirstY = (int x, int y, int z) =>
- {
- return z + y * WIDTH * DEPTH + x * DEPTH;
- };
- Func<int, int, int, int> getFirstZ = (int x, int y, int z) =>
- {
- return z * WIDTH * HEIGHT + y * WIDTH + x;
- };
Das 3d-Array fülle ich folgendergestalt:
Um auf den 1D-Index zuzugreifen wird hierfür die Methode getFirstZ gebraucht ( denn zuerst wird X, dann Y, dann Z iteriert.)
Gibt es eine allgemeine Form?
Scheint es ja, denn das .NET Framework kann immer korrekt auf den Index zugreifen.(Wenn ich mich recht entsinne konvertiert CSharp ein polydimensionales Array immer in ein ein Dimensionales).
Liebe Grüße.
Und Gott alleine weiß alles am allerbesten und besser.