最近由于项目需要,根据两个圆函数求出相交的坐标。实现代码如下,另感谢两圆求交点算法实现Java代码,虽然他所贡献的代码中存在问题,但仍有借鉴意义。
1.两个圆相交的数学求法
在中学数学中我们知道,一个圆可以作如下描述,以x1,y1为圆心,r为半径的一个圆:
那么假设现在有两个圆C1与C2,其中C1与C2的描述式如下:
其中C1是以(x1,y1)为圆心,r1为半径的圆,C2是以(x2,y2)为圆心,r2为半径的圆。若想求两个圆的交点,那么这个交点一同时在C1与C2上,即同时满足C1与C2的方程,此时只需联立这两个方程即可。
我们用C1-C2可得:
整理得:
令
此时
将上式代入C1,整理可得关于x的一元二次方程:
此后,只要求出该方程的判别式,进行一元二次方程的求解即可。
2.程序清单
根据1中的算法写出程序如下:
package com.ken.blesniff.util;
import com.ken.blesniff.bean.Circle;
/**