通过2个已知点和一个点的角度计算圆

时间:2014-06-23 14:59:34

标签: math geometry points

我知道A点的角度,圆圈经过A点和B点。应该有一个独特的解决方案,根据这些信息给出圆心(C)和半径(R)。我试图找到如下公式。

R^2 = (Bx - Cx)^2 + (By - Cy)^2
Cx = Ax - R*dy
Cy = Ay + R*dx

(dx,dy)是点A处圆的切线的单位矢量,可以从点A处的sin,cos的角度找到。圆的中心是在垂直于(dx,dy)的方向上距离点A的距离R.

把它放在一起给了我

R^2 = (Bx - Ax + R*dy)^2 + (By - Ay - R*dx)^2

将此乘以得出R的二次方,但二次方的分母(/ 2a部分)是

dx^2 + dy^2 - 1

由于(dx,dy)是单位向量,分母总是0,我得到除零误差。我哪里出错?

3 个答案:

答案 0 :(得分:0)

假设您指的是AB线和切线之间的角度。 l,在A的圆圈中:

关键是绘制AB的垂直平分线和垂直于l到A的线,并找到交点。那将是你圈子的中心。

答案 1 :(得分:0)

这个配方对我来说似乎很好。让我们扩展表达式

R^2 = (Bx - Ax + R dy)^2 + (By - Ay - R dx)^2

这给出了

R^2 = Bx^2 + Ax^2 + R^2 dy^2 + 2 Bx R dy - 2 Ax Bx - 2 Ax R dy
    + By^2 + Ay^2 + R^2 dx^2 - 2 By R dx - 2 Ay By + 2 Ay R dx

重新整理

(1 - dx^2 - dy^2) R^2 + 2 (Ax dy - Ay dx - Bx dy + By dx) R + 2 (Ax Bx + Ay By) = 0

你是正确的,如果(dx,dy)是单位向量,则R ^ 2项消失。这不是问题,只是意味着你有一个线性方程式来解决。

2 (Ax dy - Ay dx - Bx dy + By dx) R + 2 (Ax Bx + Ay By) = 0

易于解决

R = - (Ax Bx + Ay By) / (Ax dy - Ay dx - Bx dy + By dx)

如果你让U =(u,v)=(Bx-Ax,By-Ay)是从A到B的向量,那么事情会变得更简单

R^2 = (u + R dy)^2 + (v - R dx)^2
    = u^2 + 2 u dy R + dy^2 R^2 + v^2 - 2 v dx R + dx^2 R^2

重新整理

(1-dx^2-dy^2) R^2 + 2 (v dx - u dy) R - u^2 - v^2 = 0

设T =(dx,dy)为正切,N =(dy,-dx)为正常。如果它们是单位长度,则简化为

  2 (N . U) R - U . U = 0

 R = (U . U)/ 2 (N . U)

答案 2 :(得分:0)

我从我的理论中解脱了。 圆的斜率是半径等于1。

因此:slope=(rise^2+run^2)^(1/2)=1, 所以dy^2+dx^2=1^2(dy^2+dx^2)^(1/2)=1