Ich arbeite mit einer nativen Klasse, die ein 2D-Bild als 1D-Array darstellt. Wenn Sie beispielsweise ein Pixel ändern möchten, müssen Sie jetzt festlegen, wie der Index aus den x,y
Koordinaten abgeleitet werden soll.
Nehmen wir also an, wir haben ein 1D-Array array1d
wie dieses:
array1d = [ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y ]
Stellt im Rahmen unseres Programms array1d
ein 2D-Raster dar:
a b c d e
f g h i j
k l m n o
p q r s t
u v w x y
Und wir möchten Operationen ausführen array1d
mit:
- Ermitteln Sie den Wert an
x,y
Koordinaten (in diesem Beispiel1,2
würde gebenl
) - Holen Sie sich ein Sub-Grid mit
x,y,width,height
(1,2,2,2
würde geben[l, m, q, r]
) - Setze den Wert auf eine beliebige
x,y
Koordinate (etc.)
Wie machen wir das?
data-structures
math
graphics
GladstoneKeep
quelle
quelle
Antworten:
2D / 1D-Mapping ist ziemlich einfach. Bei gegebenen x- und y- und 2D-Array-Größen
width
(für x-Richtung) undheight
(für y-Richtung) können Sie den entsprechenden Indexi
im 1D-Raum (nullbasiert) durch berechnenund der umgekehrte Vorgang ist
Sie können dies problemlos auf 3 oder mehr Dimensionen erweitern. Zum Beispiel für eine 3D-Matrix mit den Dimensionen "Breite", "Höhe" und "Tiefe":
und umgekehrt:
quelle