Assignments Assignments

Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | List of all members
Ray::PointLight Class Reference

`#include <pointLight.h>`

Inheritance diagram for Ray::PointLight:

## Public Member Functions
std::string | name (void) const
Util::Point3D | getAmbient (Util::Ray3D ray, const class RayShapeIntersectionInfo &iInfo, const Material &material) const
Util::Point3D | getDiffuse (Util::Ray3D ray, const class RayShapeIntersectionInfo &iInfo, const Material &material) const
Util::Point3D | getSpecular (Util::Ray3D ray, const class RayShapeIntersectionInfo &iInfo, const Material &material) const
bool | isInShadow (const class RayShapeIntersectionInfo &iInfo, const class Shape &shape, unsigned int tIdx) const
Util::Point3D | transparency (const class RayShapeIntersectionInfo &iInfo, const class Shape &shape, Util::Point3D cLimit, unsigned int samples, unsigned int tIdx) const
void | drawOpenGL (int index, GLSLProgram *glslProgram) const
Public Member Functions inherited from Ray::Light
virtual | ~Light (void)

## Static Public Member Functions
static std::string | Directive (void)

## Protected Attributes
Util::Point3D | _location
double | _constAtten
double | _linearAtten
double | _quadAtten
Protected Attributes inherited from Ray::Light
Util::Point3D | _ambient
Util::Point3D | _diffuse
Util::Point3D | _specular

## Private Member Functions
void | _write (std::ostream &stream) const
void | _read (std::istream &stream)

## Detailed Description

This class describes a point-light light-source. This light has a fixed position and the light attenuates as function of the distance from the light-source.

## Member Function Documentation

## ◆ _read()

void PointLight::_read | ( | std::istream & | stream | ) |
| private virtual

This method reads the Light from the stream (excluding the starting directive)

Implements Ray::Light.

Reimplemented in Ray::SphereLight.

## ◆ _write()

void PointLight::_write | ( | std::ostream & | stream | ) | const
| private virtual

This method writes the Light into the stream (including the starting directive)

Implements Ray::Light.

Reimplemented in Ray::SphereLight.

## ◆ Directive()

static std::string Ray::PointLight::Directive | ( | void |  | ) |
| inline static

This static method returns the directive describing the Light.

## ◆ drawOpenGL()

void PointLight::drawOpenGL | ( | int | index,
|  | GLSLProgram * | glslProgram ) const
| virtual

This method calls the necessary OpenGL commands to render the light. The index argument specifices the index of the light that is to be drawn.

Implements Ray::Light.

## ◆ getAmbient()

Point3D PointLight::getAmbient | ( | Util::Ray3D | ray,
|  | const class RayShapeIntersectionInfo & | iInfo,
|  | const Material & | material ) const
| virtual

This method returns the ambient contribution of the light source to the specified hit location.

Implements Ray::Light.

## ◆ getDiffuse()

Point3D PointLight::getDiffuse | ( | Util::Ray3D | ray,
|  | const class RayShapeIntersectionInfo & | iInfo,
|  | const Material & | material ) const
| virtual

This method returns the diffuse contribution of the light source to the specified hit location.

Implements Ray::Light.

## ◆ getSpecular()

Point3D PointLight::getSpecular | ( | Util::Ray3D | ray,
|  | const class RayShapeIntersectionInfo & | iInfo,
|  | const Material & | material ) const
| virtual

This method returns the specular contribution of the light source to the specified hit location.

Implements Ray::Light.

## ◆ isInShadow()

bool PointLight::isInShadow | ( | const class RayShapeIntersectionInfo & | iInfo,
|  | const class Shape & | shape,
|  | unsigned int | tIdx ) const
| virtual

This method tests if the intersection point represented by iInfo is in shadow from the light source. The returned value is either 0 if the the intersection point is not in shadow or 1 if it is.

Implements Ray::Light.

## ◆ name()

std::string Ray::PointLight::name | ( | void |  | ) | const
| inline virtual

This method returns the name of the shape

Implements Ray::Light.

Reimplemented in Ray::SphereLight.

## ◆ transparency()

Point3D PointLight::transparency | ( | const class RayShapeIntersectionInfo & | iInfo,
|  | const class Shape & | shape,
|  | Util::Point3D | cLimit,
|  | unsigned int | samples,
|  | unsigned int | tIdx ) const
| virtual

This method tests if the intersection point represented by iInfo is in partial shadow from the light source. A ray is cast from the hit location to the light source, and the transparency values are accumulated. If the light source is an area light source, multiple rays area cast to (uniformly randomly chosen positions on the area light sources and the transparency is set to the average of the transparency values over the samples. If the transparency value falls below cLimit, the testing terminates.

Implements Ray::Light.

Reimplemented in Ray::SphereLight.

## Member Data Documentation

## ◆ _constAtten

double Ray::PointLight::_constAtten
| protected

The constant term of the attenuation equation

## ◆ _linearAtten

double Ray::PointLight::_linearAtten
| protected

The linear term of the attenuation equation

## ◆ _location

Util::Point3D Ray::PointLight::_location
| protected

The position of the spot-light

## ◆ _quadAtten

double Ray::PointLight::_quadAtten
| protected

The quadratic term of the attenuation equation

The documentation for this class was generated from the following files:

- Assignments/Ray/pointLight.h
- Assignments/Ray/pointLight.cpp
- Assignments/Ray/pointLight.todo.cpp