两圆相交分如下集中情况:相离、相切、相交、包含。
设两圆圆心分别是O1和O2,半径分别是r1和r2,设d为两圆心距离。又因为两圆有大有小,我们设较小的圆是O1。
相离相切的面积为零,代码如下:
double d = sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
if (d >= r1+r2)
return 0;包含的面积就是小圆的面积了,代码如下:
if(r2 - r1 >= d)
return pi*r1*r1;接下来看看相交的情况。
相交面积可以这样算:扇形O1AB - △O1AB + 扇形O2AB - △O2AB,这两个三角形组成了一个四边形,可以用两倍的△O1AO2求得,
所以答案就是两个扇形-两倍的△O1AO2

博客探讨了两圆相交的几何问题,包括相离、相切、相交和包含四种情况。针对相交情况,提供了计算相交面积的算法模板,通过扇形和三角形的面积差来得到结果,涉及数学和算法知识。
最低0.47元/天 解锁文章
935

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



