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

Math 通过两个已知点和一个点的角度计算圆,math,geometry,points,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

我知道点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,dy)是单位向量,分母总是0,我得到一个除以零的误差。我哪里出错了?

假设你指的是AB线和切线之间的角度。l、 在A处的圆的形状:


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

我觉得这个公式很好。让我们展开表达式

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
(1-dx^2-dy^2) R^2 + 2 (v dx - u dy) R - u^2 - v^2 = 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,y)作为从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 (Ax dy - Ay dx - Bx dy + By dx) R + 2 (Ax Bx + Ay By) = 0
(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)

我从理论上解决了这个问题。 圆的坡度等于半径1

因此:
斜率=(上升^2+运行^2)^(1/2)=1

所以
dy^2+dx^2=1^2
(dy^2+dx^2)^(1/2)=1
“我知道A点的角度”?角度呢?不清楚-1.请添加一张图纸-如果这是连接点a到中心的线的角度,沿着这条线,两个点之间有无限个圆-在图像a和B中是点,α是角度到a的可能解释,和c-c'是两个圆心,都满足所有条件,但描述不同的圆。你是指线段AB与A处圆的切线之间的角度吗?查看圆心的方程式,用户表示切线的角度。非常感谢。我觉得很愚蠢,因为我没有意识到R^2项消失了。如果我把它写出来,而不是试图通过使用符号数学工具来节省时间,那么我可能会意识到。我没想到它会这么简单。最终的解决方案非常简单。下面是我为测试它而编写的一些Matlab代码。p1=[2];p2=[5];角度=20;d=[sind(角度)cosd(角度)];n=[d(2)-d(1)];pd=p2-p1;r=(pd*pd')/(2*(n*pd');c=p1+r*[d(2)-d(1)];绘图([p1(1)p2(1)],[p1(2)p2(2)],“r.”)保持矩形('Position',[c-R2*R2*r],“Curvature',[1])轴相等我确信最终公式有几何解释。