calculate surface normal using light Imagine you have a sheet of glitter. It can be thought of as a thousands of tiny flat mirrors with varying surface normals. These varying surface normals are what allows for the shimmering effect of light as you move. I am attempting to figure out what those normals are.

Using the reflection of light, could I determine the surface normal of a planar mirror (aka, a single piece of glitter)? 

My current thought is to have the sheet of glitter fixed and a light shines on a particular piece of glitter. Then, place a piece of paper or something underneath the single piece of glitter to catch the reflection of light. By moving that piece of paper closer to the single piece of glitter, the reflected light moves. Does that movement help in determining the angle of reflection? Does that even help us at all in determining the surface normal?

I know this is a strange question, and I will happily elaborate on it if you wish. I also welcome and suggestions on different ways of trying to obtain the surface normals of the sheet of glitter.
Gentle

Interesting.  I was contemplating a similar question while staring at the reflection of the sun of a choppy ocean: could I estimate the choppiness as a function of position by taking some sort of average of the intensity of the reflection.

The literature on optics is full of terminology concerning this sort of problem. In satellite imaging one wishes to analyze materials using spectral information, for example.  This requires a host of information so that you can determine how much of the light that you sense from a particular point was attenuated by the atmosphere or dust, how bright the source was, etc.  There are databases full of data collected in laboratories about how much light is reflected as a function of wavelength, angle of incidence, angle of reflection, and other parameters.

Generally speaking, the maximum amount of light will be reflected when the angle between the light source and the normal is the same as that between the sensor and the normal.  So if you can figure out a way to discover the orientation that produces this maximum you've got a start.  

Of course doing this once only provides a plane of possible normals.  You need to repeat with a second orientation of the sensor (unless the light source is collocated with the sensor).

If you cannot control the orientation of the glitter you could try measuring the returned light for a number of points and assume that the maximum observed value represents those pieces of glitter with the optimal geometry and then try to infer how much orientation change is associated with various lesser values to guess the orientations of the rest of the glitter.  You would then have a graph that relates intensity to the angle between source and sensor -- roughly.
Don't know if you are still working on this problem, but I (with my students) wrote this paper that answers this question:

"SparkleGeometry: Glitter Imaging for 3D Point Tracking"

https://www.cv-foundation.org/openaccess/content_cvpr_2016_workshops/w16/papers/Stylianou_SparkleGeometry_Glitter_Imaging_CVPR_2016_paper.pdf

and there is related work that solves a similar calibration problem:

"SparkleVision: Seeing the world through random specular microfacets"

https://arxiv.org/abs/1412.7884

Good luck!