Je travaille avec une classe native qui représente une image 2D sous la forme d'un tableau 1D. Si vous souhaitez modifier un pixel, par exemple, vous devez maintenant comment obtenir l'index à partir des x,y
coordonnées.
Donc, disons que nous avons un tableau 1D array1d
comme celui-ci:
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 ]
Dans le contexte de notre programme, array1d
représente une grille 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
Et nous voulons effectuer des opérations array1d
telles que:
- Obtenir la valeur aux
x,y
coordonnées (dans cet exemple,1,2
donneraitl
) - Obtenez n'importe quelle sous-grille en utilisant
x,y,width,height
(1,2,2,2
donnerait[l, m, q, r]
) - Définir la valeur à n'importe quelle
x,y
coordonnée (etc.)
Comment faisons-nous cela?
data-structures
math
graphics
GladstoneKeep
la source
la source
Réponses:
2D / 1D - la cartographie est assez simple. Étant donné les tailles de tableau x et y, et 2D
width
(pour la direction x) etheight
(pour la direction y), vous pouvez calculer l'index correspondanti
dans un espace 1D (à base zéro) enet l'opération inverse est
Vous pouvez facilement l'étendre à 3 dimensions ou plus. Par exemple, pour une matrice 3D dont les dimensions sont "largeur", "hauteur" et "profondeur":
et inverser:
la source