kick
/Users/morten/Programmering/cpp/kick/src/kick/math/bounds3.h
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 
 All Classes Functions Variables