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