一个和圆相切有关的问题

snailmmx 2008-09-06 06:46:49
已知两个圆,C1和C2,可能相交,也可能不相交.
已知一个点P(x0,y0),现在要找一个圆C3,C3过P点,与C2外切,与C1内切.C1与C3谁在谁里面取决于C1和C2的相交关系.

C1和C2的圆心(x1,y1)(x2,y2),半径(R1和R2)是已知数,C3圆心(x3,y3)和半径R3是未知数.主要是要求R3.

我可以得到下面的方程组,但要用程序来解却是头大得很,不知有什么解法,或是别的什么算法来解决这个问题?谢谢

C3圆心到C1的圆心的距离是|R1-R3| :
(x3-x1)^2+(Y3-y1)^2=(R1-R3)^2

C3圆心到C2的圆心的距离是R2+R3 :
(X3-x2)^2+(Y3-Y2)^2=(R2+R3)^2

P到C3圆心的距离是R3 :
(X3-X0)^2+(Y3-Y0)^2=(R3)^2
...全文
109 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiao_dang 2008-09-06
  • 打赏
  • 举报
回复
方程没有问题,但是这个方程没有显式解。

其实这个解是一个椭圆和双曲线的交点,而且解可能不存在。
设计一个通用的算法可能比较困难,但是如果(x1,y1)(x2,y2),(R1,R2)都是具体的数就总是有办法算的。

最好的办法是先把这个椭圆和双曲线的图画出来,再根据图像在交点附近搜索。
一种搜索方式就是先把这个椭圆和双曲线的方程写出来,假设为:
f1(x,y)=0,f2(x,y)=0。(f1和f2都是二元二次函数)
然后根据图像选取初值x0,开始迭代:
1.解关于y的方程f1(x0,y)=0,得到y1
2.解关于x的方程f2(x,y1)=0,得到x1
3.如果|f1(x1,y1)|<error,迭代结束;否则令x0:=x1,goto 1

如果算法不收敛,就另取初值x0重新计算。

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧