RayTracer 1.0
Ray tracing is a technique used to generate realistic digital images by simulating the inverse path of light. Our goal is to create a program able to generate an image from a file describing the scene.
 
Loading...
Searching...
No Matches
RayTracer::PointLight Class Reference

#include <PointLight.hpp>

Inheritance diagram for RayTracer::PointLight:
RayTracer::ILight

Public Member Functions

 PointLight (const Math::Point3D &pos, float intensity)
 
Color illuminate (const Ray &ray, const IPrimitive &object, const Math::Point3D &point) const override
 
const Math::Point3DgetPosition () const
 
- Public Member Functions inherited from RayTracer::ILight
virtual ~ILight ()=default
 

Private Attributes

Math::Point3D _position
 
float _intensity
 

Detailed Description

Definition at line 15 of file PointLight.hpp.

Constructor & Destructor Documentation

◆ PointLight()

RayTracer::PointLight::PointLight ( const Math::Point3D & pos,
float intensity )

Definition at line 9 of file PointLight.cpp.

9 : _position(pos), _intensity(intensity)
10{}
Math::Point3D _position

References _intensity, and _position.

Member Function Documentation

◆ getPosition()

const Math::Point3D & RayTracer::PointLight::getPosition ( ) const

Definition at line 26 of file PointLight.cpp.

27{
28 return _position;
29}

References _position.

◆ illuminate()

Color RayTracer::PointLight::illuminate ( const Ray & ray,
const IPrimitive & object,
const Math::Point3D & point ) const
overridevirtual

Implements RayTracer::ILight.

Definition at line 12 of file PointLight.cpp.

13{
14 Color base = object.getBaseColor();
15 Math::Vector3D lightVec = _position - point;
16 double distance = lightVec.length();
17 double attenuation = 1.0 / (distance * distance);
18
19 return Color(
20 std::clamp(static_cast<int>(base.r * _intensity * attenuation), 0, 255),
21 std::clamp(static_cast<int>(base.g * _intensity * attenuation), 0, 255),
22 std::clamp(static_cast<int>(base.b * _intensity * attenuation), 0, 255)
23 );
24}
int r
Definition Color.hpp:13
int g
Definition Color.hpp:13
int b
Definition Color.hpp:13
double length() const
Definition Math3D.cpp:15

References _intensity, _position, Color::b, Color::g, Math::Vector3D::length(), and Color::r.

Member Data Documentation

◆ _intensity

float RayTracer::PointLight::_intensity
private

Definition at line 24 of file PointLight.hpp.

◆ _position

Math::Point3D RayTracer::PointLight::_position
private

Definition at line 23 of file PointLight.hpp.


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