计算圆半径的问题(100分)

  • 主题发起人 主题发起人 埋名
  • 开始时间 开始时间

埋名

Unregistered / Unconfirmed
GUEST, unregistred user!
假设已知平面内一条直线和两点(不在直线上,且在直线同一侧),现要求过此两点且
与直线相切的圆的半径。
已知:一点(x1,y1) ,另一点(x2, y2), 直线方程为 x=100(此处将直线方程简单化
高手也可用任意直线方程)
注意:要求方法尽可能简单,最好直接设半径为变量r,而不要设圆心为(x,y),因问题
关键在求半径,如果利用设圆心坐标,利用圆心到已知直线距离和圆心在已知两点构成的
中垂线上联立方程将出现比较复杂的计算(有二次方程)。
 
肯定会有两次方的拉。
 
我看了一下,好象没有二次方不行啊.
 
与其挖空心思想一些投机取巧的方法(并且还犯了原则性的错误),还不如用常规的方法求解,
然后简化表达式——最终的结果肯定是关于两个点的坐标的函数,即: r=f(x1,y1,x2,y2)
 
以上各位所说的确有道理,要求出半径必然有二次方程,但如此简单的图形应该有更好
的方法求解,我重新计算了一下,已知中垂点(x0,y0)设中垂点到圆心的距离为d,设圆
的半径为r,再利用中垂线到其与已知直线的交点距离为a,中垂点到已知两点中任一点的
距离为b,可列出联立方程, a / (a + d) = x0 / r
(r - d)(r + d) = b * b
求解,虽然方法与设圆心坐标没有本质区别,但求解可稍微化简,不知其他人是否有更好
的建议。
 
其实通过坐标变换(旋转和平行移动),任意直线和另外两点都可以转化成:
X=0的直线,和(x1,0),(x2,y2)两点的形式.
因为你使用了圆这个2次曲线,并且要求一般的情况,
所以是无法避免二次方程的.
 
你可以考虑用矢量来进行计算,已圆心为极点,那么你要求的半径就是圆的矢量半径的长度
矢量是可以进行平移和旋转的,应该能简化运算,但是没试过,仅供参考
 
谢谢各位的参与,我的问题已经在程序上实现了,用的是我自己的方法,不过后面两位
提出的方法很有参考意义,应该也是可以实现的。很高兴有人真正思考问题。
 
多人接受答案了。
 
to 埋名:
哈利波特的分为什么这么多?
 
不好意思,给分错了,应该是DarwinZhang得40分,选一个地方我给你加上把
 

Similar threads

回复
0
查看
804
不得闲
回复
0
查看
863
不得闲
D
回复
0
查看
911
DelphiTeacher的专栏
D
后退
顶部