CubicSDR/external/cubicvr2/math/sphere.h

35 lines
833 B
C++

//
// sphere.h
// CubicVR2
//
// Created by Charles J. Cliffe on 2013-02-22.
// Copyright (c) 2013 Charles J. Cliffe. All rights reserved.
//
#ifndef CubicVR2_sphere_h
#define CubicVR2_sphere_h
#include "vec3.h"
#include "vec4.h"
namespace CubicVR {
struct sphere {
bool intersects(vec4 sphere, vec4 other) {
vec3 spherePos(sphere[0], sphere[1], sphere[2]);
vec3 otherPos(other[0], other[1], other[2]);
vec3 diff = vec3::subtract(spherePos, otherPos);
__float mag = sqrtf(diff[0] * diff[0] + diff[1] * diff[1] + diff[2] * diff[2]);
__float sum_radii = sphere[3] + other[3];
if (mag * mag < sum_radii * sum_radii) {
return true;
}
return false;
}
};
}
#endif