kick
|
00001 // 00002 // Created by Morten Nobel-Jørgensen on 08/09/14. 00003 // 00004 00005 00006 #pragma once 00007 00008 #include "glm/glm.hpp" 00009 #include <iostream> 00010 #include "glm/gtx/string_cast.hpp" 00011 #include <limits> 00012 #include <vector> 00013 00014 namespace kick { 00015 struct Bounds3 { 00016 public: 00017 glm::vec3 min = glm::vec3{ std::numeric_limits<float>::max() }; 00018 glm::vec3 max = glm::vec3{ std::numeric_limits<float>::lowest() }; 00019 00020 glm::vec3 dimension(); 00021 00022 glm::vec3 center(); 00023 00024 glm::vec3 diagonal(); 00025 00026 Bounds3 transform(glm::mat4 trans); 00027 00028 Bounds3(); 00029 00030 Bounds3(glm::vec3 const &min, glm::vec3 const &max); 00031 00032 void expand(glm::vec3 p); 00033 00034 void expand(Bounds3 b); 00035 00036 void reset(); 00037 00038 Bounds3 lerp(float f, Bounds3 b); 00039 00040 bool contains(glm::vec3 point); 00041 00042 std::vector<glm::vec3> toLines(); 00043 }; 00044 00045 inline std::ostream& operator<<(std::ostream& out, const Bounds3 & f){ 00046 return out << "bounds{"<<glm::to_string(f.min) << ',' << glm::to_string(f.max) <<"}"; 00047 } 00048 } 00049 00050 00051