我正在尝试用数值方法求解与给定直线相切并通过另一个给定点的圆的圆心和半径问题。该问题如下图所示:
圆必须与直线Y=mx + c相切,并且必须通过该点。由于问题是对称的,因此圆心始终位于两条直线的平分线x轴(y=0)上。点A始终已知,Angular θ也是已知的。点P指定为输入
我可以写出直角三角形的一些方程:Sin theta = BC / AC
,我知道BC == PC == R
,但我不知道如何用数值方法求解,因为每次调用代码时,直线和点的方程都是不同的。手工求解需要将A和P代入直线的方程中。
我想我需要用一些scipy
模块来解一些联立方程,但是我不知道我应该做什么。希望有人能帮助我。
1条答案
按热度按时间pexxcrt21#
我认为有两个解可以通过解一个二次方程来求出。
圆的公式是
(x**2) + (y**2) = r**2
。你的点P是一个圆心为C的圆,所以(xc - xp)**2 + (yc - yp)**2 = r**2
。你还知道yc == 0,所以(xc - xp)**2 + yp**2 = r**2
,其中xp
和yp
是已知的常数。你也知道ABC是一个直角三角形,所以
r / (xc - xa) = sin(theta)
,其中xa
是一个已知常数。此时,您可以替换
r
或xc
以创建二次方程,并使用标准公式see求解。