| Celeritas 0.7.0-dev.170+develop.df22d2a88
    | 
Sample a reflected vector from a diffuse Lambertian distribution. More...
#include <LambertianDistribution.hh>
| Public Member Functions | |
| CELER_FUNCTION | LambertianDistribution (Real3 const &normal) | 
| Construct distribution about a normal. | |
| template<class Engine > | |
| CELER_FUNCTION Real3 | operator() (Engine &) const | 
| Sample by Lambertian cosine law. | |
Sample a reflected vector from a diffuse Lambertian distribution.
Lambertian reflectance is an approximation of a diffuse material where the apparent brightness is equal for observers at all angles. Reflected vectors follow Lambert's cosine law, which states the intensity of reflected light is proportional to the cosine of the reflection angle \( \alpha \):
\[ I = I_0 \cos \alpha \]
Treating the incident light as a collection of photons, they are reflected with probability \( p(\alpha) = \cos\alpha \) about the surface normal, and the azimuthal angle is uniformly randomly sampled.