Introduction
This programming assignment implements error-driven adaptive meshing. The Monte Carlo technique from the Programming Assignment is used to compute the radiosity for each mesh element. Instead of uniform mesh subdivision, an error metric is used to decide whether the mesh needs to be further subdivided or not.
Two error metrics were used in this assignment: L1 norm and L infinity norm. Maximum (Lmax) and minumum (Lmin ) radiance on each mesh element were computed and converted to brigthness.
L1 norm
L1 norm computes the difference between maximum and minimum radiance
on the mesh element. In addition, This difference is weighted by the ratio
of mesh element area to the are of entire polygon.
L = | Lmax - Lmin | * patch area / polgon area
Linfinity norm
Linfinity norm simply computes the difference between maximunm and
minimum radiance on the mesh element.
L = | Lmax - Lmin |
Sample Images
OpenGL was used for displaying the mesh.




Conclusion
L1 norm takes into account the area. So, errors over large areas will
be more significant as opposed to errors over small areas. Thus, L1 norm
emphasizes areas of high radiance gradient (soft shadow, or penumbra, regions).
On the other hand, Linfinity norm does not account for the area of the
mesh element. This causes problems such as really fine meshing in certain
regions (bright regions), slower computation, higher memory demands. In
general, L1 norm error metric works better than Linfinity norm metric in
terms of computation time, memory usage and mesh quality.