kick
|
00001 // 00002 // Created by morten on 05/07/14. 00003 // 00004 00005 #include "bounds2.h" 00006 00007 00008 namespace kick{ 00009 Bounds2::Bounds2() { 00010 } 00011 00012 Bounds2::Bounds2(glm::vec2 const &min, glm::vec2 const &max) : min(min), max(max) { 00013 } 00014 00015 glm::vec2 Bounds2::dimension() { return max-min; } 00016 00017 glm::vec2 Bounds2::center() { return (max+min)*0.5f; } 00018 00019 void Bounds2::expand(glm::vec2 p) { 00020 min = glm::min(min, p); 00021 max = glm::max(max, p); 00022 } 00023 00024 void Bounds2::expand(Bounds2 b) { 00025 min = glm::min(min, b.min); 00026 max = glm::max(max, b.max); 00027 } 00028 00029 void Bounds2::reset() { 00030 min = glm::vec2{ std::numeric_limits<float>::max() }; 00031 max = glm::vec2{ std::numeric_limits<float>::lowest() }; 00032 } 00033 00034 glm::vec2 Bounds2::lowLeft() { 00035 return min; 00036 } 00037 00038 glm::vec2 Bounds2::upperLeft() { 00039 return {min.x, max.y}; 00040 } 00041 00042 glm::vec2 Bounds2::lowRight() { 00043 return {max.x, min.y}; 00044 } 00045 00046 glm::vec2 Bounds2::upperRight() { 00047 return {max.x, max.y}; 00048 } 00049 00050 Bounds2 Bounds2::lerp(float f, Bounds2 b) { 00051 return Bounds2 {glm::mix(min, b.min, f), glm::mix(max, b.max, f)}; 00052 00053 } 00054 00055 bool Bounds2::contains(glm::vec2 point) { 00056 return min.x <= point.x && min.y <= point.y && 00057 max.x >= point.x && max.y >= point.y; 00058 } 00059 00060 glm::vec2 Bounds2::diagonal() { 00061 return max-min; 00062 } 00063 }