-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlight.cpp
More file actions
37 lines (29 loc) · 1.08 KB
/
light.cpp
File metadata and controls
37 lines (29 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "light.h"
Light::DirectionalLight::DirectionalLight(glm::dvec3 direction, glm::dvec3 color) {
this->direction = glm::normalize(direction);
this->color = color;
}
glm::dvec3 Light::DirectionalLight::getColorAt(double distance) {
return this->color;
}
glm::dvec3 Light::DirectionalLight::getDirectionFrom(glm::dvec3 point) {
return this->direction;
}
double Light::DirectionalLight::getDistanceFrom(glm::dvec3 point) {
return std::numeric_limits<double>::infinity();
}
Light::PointLight::PointLight(glm::dvec3 position, glm::dvec3 color, glm::dvec3 attenuation) {
this->position = position;
this->color = color;
this->attenuation = attenuation;
}
glm::dvec3 Light::PointLight::getColorAt(double distance) {
double denominator = glm::dot(this->attenuation, glm::dvec3(1, distance, std::pow(distance, 2)));
return (1 / denominator) * this->color;
}
glm::dvec3 Light::PointLight::getDirectionFrom(glm::dvec3 point) {
return glm::normalize(this->position - point);
}
double Light::PointLight::getDistanceFrom(glm::dvec3 point) {
return glm::length(this->position - point);
}