-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathboundingbox.cpp
72 lines (60 loc) · 1.71 KB
/
boundingbox.cpp
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "boundingbox.h"
BoundingBox::BoundingBox() {}
BoundingBox::BoundingBox(glm::vec3 &vmin, glm::vec3 &vmax) {
min = vmin; max = vmax;
origin = 0.5f * min + 0.5f * max;
}
glm::vec3 BoundingBox::getOrigin() const {
return origin;
}
void BoundingBox::setOrigin(const glm::vec3 &value) {
origin = value;
}
glm::vec3 BoundingBox::getMax() const {
return max;
}
void BoundingBox::setMax(const glm::vec3 &value) {
max = value;
}
glm::vec3 BoundingBox::getMin() const {
return min;
}
void BoundingBox::setMin(const glm::vec3 &value) {
min = value;
}
bool BoundingBox::containsPoint(glm::vec3 &p) {
return (min.x <= p.x &&
min.y <= p.y &&
min.z <= p.z &&
max.x >= p.x &&
max.y >= p.y &&
max.z >= p.z );
}
bool BoundingBox::intersects(Ray r) {
// T tmin, tmax, tymin, tymax, tzmin, tzmax;
//
// tmin = (bounds[r.sign[0]].x - r.orig.x) * r.invdir.x;
// tmax = (bounds[1-r.sign[0]].x - r.orig.x) * r.invdir.x;
//
// tymin = (bounds[r.sign[1]].y - r.orig.y) * r.invdir.y;
// tymax = (bounds[1-r.sign[1]].y - r.orig.y) * r.invdir.y;
// if ((tmin > tymax) || (tymin > tmax))
// return false;
// if (tymin > tmin)
// tmin = tymin;
// if (tymax < tmax)
// tmax = tymax;
//
// tzmin = (bounds[r.sign[2]].z - r.orig.z) * r.invdir.z;
// tzmax = (bounds[1-r.sign[2]].z - r.orig.z) * r.invdir.z;
// if ((tmin > tzmax) || (tzmin > tmax))
// return false;
// if (tzmin > tmin)
// tmin = tzmin;
// if (tzmax < tmax)
// tmax = tzmax;
//
// if (tmin > r.tmin) r.tmin = tmin;
// if (tmax < r.tmax) r.tmax = tmax;
// return true;
}