2018/10/6
鸽了许久,但还是要做一下总结。
问题描述:
给定二维平面上的一个圆和一个三角形,视两者为两个点集C和T。C和T均不包含图形的内部,仅包含图形的边界。判断集合C和T的交集是否非空。
输入格式:
(第一行)正整数N,代表接下来有N组测试数据。
(接下来的N行,每一行格式是:)r x0 y0 x1 y1 x2 y2 x3 y3 (解释:r为圆半径,(x0, y0)为圆心坐标,(x1,y1), (x2,y2), (x3,y3)为三角形3个顶点坐标)
数据范围:
0<N<1,000,000
横、纵坐标属于区间[-1000, 1000]
输出格式:
一共N行,每行输出数字0或1。若C和T交集非空,输出1;若C和T交集为空集,输出0.
输入样例:
2
1 0 0 5 5 6 6 7 4
1 0 0 0 2 1 -1 2 1
输出样例:
0
1
简而言之就是判断圆和三角形有无交点。
我们分类讨论:
1.三角形的三个顶点都在圆内,不可能相交;
2. 三角形的三个顶点都在圆外,需要另外讨论;
3.其余情况,此时一定相交。
接下来对单个顶点都在圆外的情况继续加以讨论。分别判断三条边与圆的相交关系。需要注