4 #include <camera/ray.hpp>
6 #include <math3d/vec3.hpp>
8 using namespace ptracey;
20 point3 min()
const {
return minimum; }
21 point3 max()
const {
return maximum; }
22 bool hit(
const ray &r,
double t_min,
double t_max)
const {
23 for (
int a = 0; a < 3; a++) {
25 (minimum[a] - r.origin()[a]) / r.direction()[a],
26 (maximum[a] - r.origin()[a]) / r.direction()[a]);
28 (minimum[a] - r.origin()[a]) / r.direction()[a],
29 (maximum[a] - r.origin()[a]) / r.direction()[a]);
30 t_min = fmax(t0, t_min);
31 t_max = fmin(t1, t_max);
38 auto a = maximum.x() - minimum.x();
39 auto b = maximum.y() - minimum.y();
40 auto c = maximum.z() - minimum.z();
41 return 2 * (a * b + b * c + c * a);
43 int longest_axis()
const {
44 auto a = maximum.x() - minimum.x();
45 auto b = maximum.y() - minimum.y();
46 auto c = maximum.z() - minimum.z();
61 vec3 small(fmin(box0.min().x(), box1.min().x()),
62 fmin(box0.min().y(), box1.min().y()),
63 fmin(box0.min().z(), box1.min().z()));
65 vec3 big(fmax(box0.max().x(), box1.max().x()),
66 fmax(box0.max().y(), box1.max().y()),
67 fmax(box0.max().z(), box1.max().z()));
69 return aabb(small, big);