C++判断矩形相交的方法

2020-01-06 13:25:08王振洲

易采站长站为您分析C++判断矩形相交的方法,涉及C++针对平面坐标数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C++判断矩形相交的方法。。具体如下:

已知2矩形原点和宽高,判断2矩形相交,相交矩形

相交判断原理:

假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形

rect1{(minx1, miny1)(maxx1, maxy1)}

rect2{(minx2, miny2)(maxx2, maxy2)}

相交的结果一定是个矩形,构成这个相交矩形rect{(minx, miny) (maxx, maxy)}的点对坐标是:

minx = max(minx1, minx2)

miny = max(miny1, miny2)

maxx = min(maxx1, maxx2)

maxy = min(maxy1, maxy2)

如果两个矩形不相交,那么计算得到的点对坐标必然满足:

( minx > maxx ) 或者 ( miny > maxy )

判定是否相交,以及相交矩形是什么都可以用这个方法一体计算完成

设计3个类:

1. 点类:x,y

2. 矩形类:点,宽,高

3. 判断相交类

程序实现:

 

 
  1. CPoint.h   #import <Foundation/Foundation.h> 
  2. @interface CPoint : NSObject   { 
  3. int x; //点坐标  int y; 
  4. }  -(void) print; 
  5. -(void) setX: (int) vx;  -(void) setY: (int) vy; 
  6. -(void) setXY:(int) vx :(int) vy;  -(int) x; 
  7. -(int) y;  @end  
  8. CPoint.m  #import "CPoint.h" 
  9. @implementation CPoint  -(void) print 
  10. {  NSLog(@"the point is (%i, %i)",x,y); 
  11. }  -(void) setX: (int) vx 
  12. {  x = vx; 
  13. }  -(void) setY: (int) vy 
  14. {  y = vy; 
  15. }  -(void) setXY:(int)vx :(int)vy 
  16. {  x = vx; 
  17. y = vy;  } 
  18. -(int) x  { 
  19. return x;  } 
  20. -(int) y  { 
  21. return y;  } 
  22. @end  CRect.h 
  23. #import <Foundation/Foundation.h>  #import "CPoint.h"