我知道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,我得到除零误差。我哪里出错?
答案 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
。