#pragma once #include #include "Vector.hpp" struct AABB { AABB() = default; AABB(Vector<3> min, Vector<3> max) : min(min), max(max) {} explicit AABB(Vector<3> max) : max(max) {} std::array, 8> corners() const { return {{ {min.x(), min.y(), min.z()}, {min.x(), min.y(), max.z()}, {min.x(), max.y(), min.z()}, {min.x(), max.y(), max.z()}, {max.x(), min.y(), min.z()}, {max.x(), min.y(), max.z()}, {max.x(), max.y(), min.z()}, {max.x(), max.y(), max.z()}, }}; } AABB offset(Vector<3> by) const { return {min + by, max + by}; } Vector<3> min, max; };