diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2021-03-29 22:25:29 +0200 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2021-03-29 22:25:29 +0200 |
| commit | be5f1133bff5d4c551e2702211acb155d8819fd0 (patch) | |
| tree | bfd575657188b3ceb3b70dd0225c740035c98e99 /include/aabb.hpp | |
| parent | bc1073a020c99ed89967a6b00a9eeb4ab2e160dc (diff) | |
BVH simple implementation
Diffstat (limited to 'include/aabb.hpp')
| -rw-r--r-- | include/aabb.hpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/include/aabb.hpp b/include/aabb.hpp index 9ec1f3f..18f6d09 100644 --- a/include/aabb.hpp +++ b/include/aabb.hpp @@ -3,11 +3,26 @@ #include "vec3.hpp"
-class AABB {
- AABB(vec3 min_point, vec3 max_point): minimum(min_point), maximum(max_point) {}
+class aabb {
+ public:
+ aabb() = default;
+ aabb(vec3 min_point, vec3 max_point): minimum(min_point), maximum(max_point) {}
+ aabb(vec3 position, float radius): minimum(position - vec3(radius)), maximum(position + vec3(radius)) {}
- vec3 minimum;
- vec3 maximum;
+ static aabb surrounding_box(aabb box0, aabb box1) {
+ point3 min_point(fmin(box0.minimum.x, box1.minimum.x),
+ fmin(box0.minimum.y, box1.minimum.y),
+ fmin(box0.minimum.z, box1.minimum.z));
+
+ point3 max_point(fmax(box0.maximum.x, box1.maximum.x),
+ fmax(box0.maximum.y, box1.maximum.y),
+ fmax(box0.maximum.z, box1.maximum.z));
+
+ return aabb(min_point, max_point);
+ }
+
+ vec3 minimum;
+ vec3 maximum;
};
#endif // !__AABB_HPP_
|
