给定三个圆的中心点和半径,如何定义相交区域?
到目前为止,我所拥有的是:
var point1 = {x: -3, y: 0};
var point2 = {x: 3, y: 0};
var point3 = {x: 0, y: -3};
var r1 = 5;
var r2 = 5;
var r3 = 5;
var area = returnIntersectionArea(point1, point2, point3, r1, r2, r3);
同样,如果两个碰撞但不是第三碰撞,则函数应返回null.
如果没有冲突,则应返回null.
解决方法:
This article描述了如何找到两个圆之间的交点区域.结果很容易扩展到三个圆圈.
– – – – – – -编辑 – – – – – – –
好吧,这个问题不容易扩展到三个圈子,我发现了关于该主题的博士学位论文.假设三个圆相交如下所示,可以找到一个近似解(我认为).在尝试之前,我们必须检查三个圆是否确实相交,如下所示.如果说一个圆圈在另一个圆圈内,而第三个圆圈将它们都相交,则问题会发生很大变化.
.
令S1,S2和S3表示三个圆的面积,并且X1,X2和X3表示每对圆之间的交点的面积(索引沿顺时针方向增加).正如我们已经建立的,有确切的公式.考虑以下线性方程组:
A D F G = A D X1 = S1
B D E G = B D X3 = S2
B E D G = B E X2 = S3
它是不确定的,但是可以使用最小二乘法找到近似解.我还没有尝试过数字,但是我会尽快回复您:D
如果最小二乘解似乎是错误的,我们还应该施加一些约束,例如如果任意一对圆之间的交点小于圆的面积,则为面积.
评论被赞赏.
PS 1西蒙(Simon)指出我不应该认为事情简单