diff options
Diffstat (limited to 'hw6/src/directionalLightsource.cpp')
-rw-r--r-- | hw6/src/directionalLightsource.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/hw6/src/directionalLightsource.cpp b/hw6/src/directionalLightsource.cpp new file mode 100644 index 0000000..7703eb1 --- /dev/null +++ b/hw6/src/directionalLightsource.cpp @@ -0,0 +1,47 @@ +/******************************************************************/ +/* This file is part of the homework assignments for CSCI-427/527 */ +/* at The College of William & Mary and authored by Pieter Peers. */ +/* No part of this file, whether altered or in original form, can */ +/* be distributed or used outside the context of CSCI-427/527 */ +/* without consent of either the College of William & Mary or */ +/* Pieter Peers. */ +/******************************************************************/ + +#include "constants.h" +#include "directionalLightsource.h" + +////////////////// +// Constructors // +////////////////// +directionalLightsource::directionalLightsource(const vec3d& direction, const color& power) +{ + _direction = normalize(direction); + _power = power; +} + + +///////////// +// Methods // +///////////// +lightSample directionalLightsource::intensityAt(const vec3d& point) const +{ + return lightSample(_direction, _power, +LARGE); +} + + +lightSample directionalLightsource::emittanceAt(const vec3d& point, float r1, float r2) const +{ + // Set emittance to _power * distance^2 to compensate for squared distance fall off. + // Distance is set to large (to ensure everything can occlude). + // Foreshortening == 1 + // PDF == 1 (no selection). + return lightSample(_direction, _power * LARGE * LARGE, LARGE, 1.0f, 1.0f); +} + +///////////////////// +// Private Methods // +///////////////////// +void directionalLightsource::_print(std::ostream& s) const +{ + s << "Directional Lightsource: direction=" << _direction << ", power=" << _power; +} |