X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmodel%2Fgeometry.hpp;h=f9f87c4f9d14462f31af92b16247e5a6aad584e9;hb=3542823a1af7f5063d7cc8da84efa248eb889b8a;hp=df45fff2f2a2797d789b06b9bd2ad71feb3c6464;hpb=419e33e565bffbaf0416ed4a5f80e9c81f62a479;p=blank.git diff --git a/src/model/geometry.hpp b/src/model/geometry.hpp index df45fff..f9f87c4 100644 --- a/src/model/geometry.hpp +++ b/src/model/geometry.hpp @@ -13,6 +13,31 @@ constexpr float PI_0p5 = PI * 0.5f; constexpr float PI_1p5 = PI * 1.5f; constexpr float PI_2p0 = PI * 2.0f; +constexpr float DEG_RAD_FACTOR = PI / 180.0f; +constexpr float RAD_DEG_FACTOR = 180.0f / PI; + +constexpr float deg2rad(float d) { + return d * DEG_RAD_FACTOR; +} + +constexpr float rad2deg(float r) { + return r * RAD_DEG_FACTOR; +} + + +template +T manhattan_distance(const glm::tvec3 &a, const glm::tvec3 &b) { + glm::tvec3 diff(abs(a - b)); + return diff.x + diff.y + diff.z; +} + +template +T manhattan_radius(const glm::tvec3 &v) { + glm::tvec3 a(abs(v)); + return std::max(a.x, std::max(a.y, a.z)); +} + + struct AABB { glm::vec3 min; glm::vec3 max;