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

编写一个函数
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

算法分析:

分三步:

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

  

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

如: 

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

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

 

主要为了检测这种情况:

 

代码如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值