return glm::length(high);
}
+ void Position(const glm::vec3 ¢er) noexcept {
+ const glm::vec3 halfsize((max - min) * 0.5f);
+ min = center - halfsize;
+ max = center + halfsize;
+ }
void Move(const glm::vec3 &delta) noexcept {
min += delta;
max += delta;
bool CullTest(const AABB &box, const Frustum &) noexcept;
struct Sphere {
+
glm::vec3 origin;
float radius;
+
+ void Position(const glm::vec3 ¢er) noexcept {
+ origin = center;
+ }
+ void Move(const glm::vec3 &delta) noexcept {
+ origin += delta;
+ }
+
};
std::ostream &operator <<(std::ostream &, const Sphere &);
+/// Two spheres intersection test.
+bool Intersection(
+ const Sphere &,
+ const Sphere &,
+ float &dist,
+ glm::vec3 &norm) noexcept;
+
/// Test for intersection of sphere with double sided infinite plane.
/// If true, dist will hold the smaller interpenetration depth and norm
/// the respective contact normal.