Saya bekerja dengan kelas asli yang mewakili gambar 2D sebagai array 1D. Jika Anda ingin mengubah satu piksel, misalnya, Anda perlu sekarang cara menurunkan indeks dari x,y
koordinat.
Jadi, katakanlah kita memiliki array 1D array1d
seperti ini:
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 ]
Dalam konteks program kami, array1d
merupakan kisi 2D:
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
Dan kami ingin melakukan operasi array1d
seperti:
- Dapatkan nilai pada
x,y
koordinat (dalam contoh ini,1,2
akan berikanl
) - Dapatkan sub-grid menggunakan
x,y,width,height
(1,2,2,2
akan memberi[l, m, q, r]
) - Tetapkan nilai pada
x,y
koordinat apa pun (dll.)
Bagaimana kita melakukan ini?
data-structures
math
graphics
Gladstone. Terus
sumber
sumber
Jawaban:
2D / 1D - pemetaan cukup sederhana. Diberikan ukuran array x dan y, dan 2D
width
(untuk arah-x) danheight
(untuk arah-y), Anda dapat menghitung indeks yang sesuaii
dalam ruang 1D (berbasis-nol) dengandan operasi sebaliknya adalah
Anda dapat memperluas ini dengan mudah ke 3 dimensi atau lebih. Misalnya, untuk matriks 3D dengan dimensi "lebar", "tinggi" dan "kedalaman":
dan membalikkan:
sumber