kick
/Users/morten/Programmering/cpp/kick/src/kick/math/bounds2.h
00001 //
00002 // Created by morten on 05/07/14.
00003 //
00004 
00005 
00006 #pragma once
00007 
00008 #include "glm/glm.hpp"
00009 #include <iostream>
00010 #include "glm/gtx/string_cast.hpp"
00011 
00012 namespace kick {
00013     struct Bounds2 {
00014     public:
00015         glm::vec2 min = glm::vec2{ std::numeric_limits<float>::max() };
00016         glm::vec2 max = glm::vec2{ std::numeric_limits<float>::lowest() };
00017 
00018         Bounds2();
00019 
00020         Bounds2(glm::vec2 const &min, glm::vec2 const &max);
00021 
00022         glm::vec2 dimension();
00023 
00024         glm::vec2 center();
00025 
00026         glm::vec2 diagonal();
00027 
00028         void expand(glm::vec2 p);
00029 
00030         void expand(Bounds2 b);
00031 
00032         void reset();
00033 
00034         glm::vec2 lowLeft();
00035 
00036         glm::vec2 upperLeft();
00037 
00038         glm::vec2 lowRight();
00039 
00040         glm::vec2 upperRight();
00041 
00042         Bounds2 lerp(float f, Bounds2 b);
00043 
00044         bool contains(glm::vec2 point);
00045     };
00046 
00047     inline std::ostream& operator<<(std::ostream& out, const Bounds2 & f){
00048         return out << "bounds{"<<glm::to_string(f.min) << ',' << glm::to_string(f.max) <<"}";
00049     }
00050 }
00051 
00052 
 All Classes Functions Variables