【问题标题】:Centre of a circle that intersects two points与两点相交的圆心
【发布时间】:2011-02-06 15:10:18
【问题描述】:

给定二维平面中的两个点,以及与这两个点相交的半径为 r 的圆,计算该圆心的公式是什么?

我意识到圆圈可以放置在两个位置。当从任意角度开始扫过连接两个点围绕其中一个点的线时,我想要其中心首先以顺时针方向遇到的圆。我想这是我问题的下一个阶段,在我找到第一部分的答案之后。

我希望整个计算可以在不使用三角函数的情况下完成。我从整数坐标开始,如果有帮助,将以整数坐标结束。

【问题讨论】:

  • 你总是需要三角函数来解决这个问题。给定 r、(x1,y1) 和 (x2,y2),您可以有一个固定的数学公式。但同样,该公式将涉及一些计算量。您在寻找更简单的东西吗?
  • 如果需要trig,我猜是需要的。最后,我并不真正关心任何角度的绝对值,但我会比较角度的相对大小(例如哪个更大或更小)。
  • 谢谢大家 - 这是我一直在拼命试图通过谷歌找到的答案,但没有运气。我试图在地理点周围绘制一个凹多边形,并通过围绕点云边缘“滚动”一个圆圈来做到这一点。这只是该解决方案的一部分。到目前为止,我发现的凹壳的唯一解决方案要么是闭源工具,要么是受专利保护的算法。这很有帮助。
  • 找到解决方案了吗?

标签: geometry points


【解决方案1】:

不确定这是不是问这个问题的正确地方,但是:

让:

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 或更小。
【解决方案2】:

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)。根据您的需要选择左或右。

【讨论】:

    【解决方案3】:

    【讨论】:

    • Dr Math 的解给出了两个中心。从A点顺时针到B点时如何确定使用哪个中心
    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多