Cela semble vraiment être une question de mathématiques, mais vous avez aussi mentionné Python, donc j'essaie de donner un peu de code. Vous utiliseriez habituellement trilinear interpolation. Nous supposons donc que votre grille a les coins (0.0, 0.0, 0.0)
et (max_x, max_y, max_z)
et qu'elle est alignée avec le système de coordonnées. Nous notons le nombre de cellules le long de chaque axe par (n_x, n_y, n_z)
respectivement et le point que vous souhaitez évaluer par (x, y, z)
(tous de type float
). Ensuite, votre logique est peut-être quelque chose de similaire à
a_x = x * n_x/max_x
a_y = y * n_y/max_y
a_z = z * n_z/max_z
i_x = math.floor(a_x)
i_y = math.floor(a_y)
i_z = math.floor(a_z)
l_x = a_x - i_x
l_y = a_y - i_y
l_z = a_z - i_z
Les indices des 8 sommets de grille adjacents sont maintenant (i_x, i_y, i_z)
, (i_x+1, i_y, i_z)
, (i_x, i_y+1, i_z)
, ..., (i_x+1, i_y+1, i_z+1)
. Les coordonnées locales de votre point dans la cellule de la grille sont (l_x, l_y, l_z)
. Avec l'article de Wikipédia lié, cela devrait vous aider à avancer (notez que la notation est différente ici).
Pas assez d'informations. –
Un exemple de structure de données serait utile. –