编写一个函数
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
算法分析:
分三步:
一:检测圆的内接正方形和矩形的相交与否
这一步可以检测出多种相交和包含的情况
如:
二:检测矩形的四个顶点是否在圆中,用顶点跟圆心的距离计算就可以了
三:检测圆的四个坐标轴方向的点与矩形是否相交,四点位置如黑色所示
主要为了检测这种情况:
代码如下: