首页 文章

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

提问于
浏览
-1

我知道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

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

    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)
    
  • 0

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

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

  • 0

    我从理论上解决了 . 圆的斜率是半径等于1 .

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

相关问题