编写一个函数
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
算法分析:
分三步:
一:检测圆的内接正方形和矩形的相交与否
这一步可以检测出多种相交和包含的情况
如:
二:检测矩形的四个顶点是否在圆中,用顶点跟圆心的距离计算就可以了
三:检测圆的四个坐标轴方向的点与矩形是否相交,四点位置如黑色所示
主要为了检测这种情况:
代码如下:
本文介绍了一种算法,用于检测给定圆心坐标、半径及矩形对角线上两点坐标的圆与矩形是否有重合部分。通过分三步判断:圆的内接正方形与矩形的相交情况;矩形顶点是否在圆内;以及圆的四个坐标轴方向的点与矩形的相交情况,最终返回是否重合的判断结果。
6762

被折叠的 条评论
为什么被折叠?



