Browse Source

Corrected rectangle intersection, fixes #1731

Juan Linietsky 10 years ago
parent
commit
7006fe3cc4
2 changed files with 10 additions and 10 deletions
  1. 6 6
      core/math/aabb.h
  2. 4 4
      core/math/math_2d.h

+ 6 - 6
core/math/aabb.h

@@ -110,17 +110,17 @@ public:
 
 inline bool AABB::intersects(const AABB& p_aabb) const {
 
-        if ( pos.x > (p_aabb.pos.x + p_aabb.size.x) )
+	if ( pos.x >= (p_aabb.pos.x + p_aabb.size.x) )
                 return false;
-        if ( (pos.x+size.x) < p_aabb.pos.x  )
+	if ( (pos.x+size.x) <= p_aabb.pos.x  )
                 return false;
-        if ( pos.y > (p_aabb.pos.y + p_aabb.size.y) )
+	if ( pos.y >= (p_aabb.pos.y + p_aabb.size.y) )
                 return false;
-        if ( (pos.y+size.y) < p_aabb.pos.y  )
+	if ( (pos.y+size.y) <= p_aabb.pos.y  )
                 return false;
-        if ( pos.z > (p_aabb.pos.z + p_aabb.size.z) )
+	if ( pos.z >= (p_aabb.pos.z + p_aabb.size.z) )
                 return false;
-        if ( (pos.z+size.z) < p_aabb.pos.z  )
+	if ( (pos.z+size.z) <= p_aabb.pos.z  )
                 return false;
 
         return true;

+ 4 - 4
core/math/math_2d.h

@@ -214,13 +214,13 @@ struct Rect2 {
 	float get_area() const { return size.width*size.height; }
 
 	inline bool intersects(const Rect2& p_rect) const { 
-		if ( pos.x > (p_rect.pos.x + p_rect.size.width) ) 
+		if ( pos.x >= (p_rect.pos.x + p_rect.size.width) )
 			return false;
-		if ( (pos.x+size.width) < p_rect.pos.x  ) 
+		if ( (pos.x+size.width) <= p_rect.pos.x  )
 			return false;
-		if ( pos.y > (p_rect.pos.y + p_rect.size.height) ) 
+		if ( pos.y >= (p_rect.pos.y + p_rect.size.height) )
 			return false;
-		if ( (pos.y+size.height) < p_rect.pos.y  ) 
+		if ( (pos.y+size.height) <= p_rect.pos.y  )
 			return false;
 		
 		return true;