圆心是与两点相交的圆的中心点。

6
在二维平面上给定两个点和一个半径为r的圆,该圆与这两个点相交,如何计算该圆的圆心公式?
我意识到圆可以放置在两个位置。当沿着连接这两个点的线从任意角度开始绕其中一个点旋转时,我希望遇到的第一个顺时针方向的圆心是所需的圆。我想这是在找到第一部分答案后的下一步问题。
我希望整个计算过程都不需要三角函数以提高速度。如果有助于解决问题,我将从整数坐标开始,并以整数坐标结束。

你总是需要三角学来解决这个问题。给定 r、(x1,y1) 和 (x2,y2),您可以有一个固定的数学公式。但是,再次强调,该公式将涉及某些计算量。您是否正在寻找更简单的方法? - Neo
如果需要三角函数,我想就需要了。最终,我并不关心任何角度的绝对值,但我会比较角度的相对大小(例如哪个更大或更小)。 - Jason
谢谢大家 - 这就是我一直在Google上拼命寻找但却没有找到的答案。我正在尝试在地理点周围绘制一个凹多边形,并通过“滚动”圆圈来完成点云的边缘。这只是解决方案的一部分。到目前为止,我发现的唯一凹壳解决方案要么是闭源工具,要么是受专利限制的算法。这很有帮助。 - Jason
你找到解决方案了吗? - katta
3个回答

8
不确定这是否是提问的正确地方,但是: let:
q = sqrt((x2-x1)^2 + (y2-y1)^2)
x3 = (x1+x2)/2
y3 = (y1+y2)/2

第一个圆圈:

x = x3 + sqrt(r^2-(q/2)^2)*(y1-y2)/q
y = y3 + sqrt(r^2-(q/2)^2)*(x2-x1)/q  

第二圈:

x = x3 - sqrt(r^2-(q/2)^2)*(y1-y2)/q
y = y3 - sqrt(r^2-(q/2)^2)*(x2-x1)/q  

Here


q是两点之间的距离,且始终不超过2r。 - Jason

3
A=(ax, ay)
B=(bx, by)
求解公式:d=((bx-ax)^2 + (by-ay)^2)^(1/2) # A和B之间的距离
r=圆的半径

当 (2*r>d) 时,无实际解 - 存在复杂解 ;-)

当 (2*r=d) 时,有唯一解 : A 和 B 的中点。

从 A 到 B 画一条线。
在中点处画出垂线并向外延伸到距离 D,使 r=(D^2 + (d/2)^2)^(1/2)。根据需要选择左侧或右侧。


2

Dr Math的解决方案提供了两个中心。如何确定从点A顺时针到达点B时使用哪个中心? - katta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接