aihot  2017-05-08 23:50:46  OpenCV |   查看评论   

 矩形和圆的相交检测 算法分析与实现

编写一个函数
int IsOnRECT(float x, float y, float r,
        float x1, float y1, float x2, float y2)
x,y表示一个圆的圆心,r是圆的半径
x1,y1,x2,y2表示一个矩形的一条对角线上的两个顶点的坐标
矩形的四边均与坐标轴平行或者垂直
要判断这个圆和这个矩形有没有重合的部分

输入:
按照参数传递进行输入,样例中一行就是一次输入
按顺序分别对应x,y,d,x1, ....

输出:
使用函数返回值作为输出,当有重合的时候返回非0,否则请返回0
函数中不得含有任何其它输出,否则作为错误

样例输入:
1 1 1  0 0 2 2
1 1 1  2 2 3 3

样例输出:
1
0

分析:

分三步:

一:检测圆的内接正方形和矩形的相交与否

 

这一步可以检测出多种相交和包含的情况

 

二:检测矩形的四个顶点是否在圆中,用顶点跟圆心的距离计算就可以了
 

三:检测圆的四个坐标轴方向的点与矩形是否相交,四点位置如黑色所示

 

主要为了检测这种情况:

 

如下:

[cpp]   
 
 
  1. #include <math.h>  
  2. #include <stdio.h>  
  3. int IsOnRECT(float x, float y, float r,  
  4.              float x1, float y1, float x2, float y2)  
  5. {  
  6.  1/5    1 2 3 4 5 下一页 尾页
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自矩形和圆的相交检测 算法分析与实现

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]