I have a flat, rectangular surface with an evenly-spaced grid. Let's say it is $100 \times 100$ units (in the $X$ and $Y$ directions, defining the coordinates of each grid cell), and $Z = 0$ everywhere. I have placed $10$ randomly-located normal vectors on this surface in the positive $Z$ direction (orthogonal to the surface, and none at the boundaries, and I know there locations with respect to $X$ and $Y$).
Then, the surface experiences slight deformations such that $X$ and $Y$ coordinates do not change, but $Z$ changes slightly (imagine the surface being stretched rubber, and I've placed some random objects - say, balls and cylinders - on the surface to stretch it). The surface remains smooth (has a real derivative in $X$ and $Y$ directions everywhere). I don't know the locations of the random objects. However, the $10$ surface vectors remain orthogonal to the new surface and I can measure their new direction (and change from the original direction is small, lets say all less than $1$ degree).
Is there a process to determine the new elevations $Z$ for each cell in the grid based on the known locations and change in direction of the normal vectors?