求出圆心连线长度和连线中点,就可以推算出交点坐标
解决方案 »
- 请用最简单的话概括uml的建模过程
- 关于SQL数据库中删除记录后标志列的排序问题
- c# 如何取得回调函数内存地址?
- C++中有那个关键字是相当于C#的stackalloc的
- C#求: jpeg,bmp如何转换成PCX !
- *.img是什么文件?用是用什么软件可以打开?
- 问一个关于 AggregateCacheDependency 缓存的问题
- vs中vss的问题,,求教高手!
- 在北京,应聘一名.net软件工程师要价4000元/月,是不是有点高呀?根据我在这几家的求职经历……
- winform中怎样使我的所有窗体的颜色为xp风格中三里silver
- IPAddress问题(帮帮我吧谢谢)
- IPAddress问题(刚才说的不准确,大家没看懂)
先是要判断是否相切,即圆心连线是否大于,等于或小于两圆心半径。
如果不相切(大于),那就没有交点。
如果等于,
设圆心分别为x1,y1和x2,y2.那么交点就是中点即
P((x1+x2)/2,(y1+y2)/2)。
如果小于,那么有两个交点。
设:
斜率k = (y2-y1)/(x2-x1);
过中点且与(x1,y1), (x2,y2)相垂直的线是:
y = k`x + C
k` = 1/k;
所以
y=x/k + C.
带入中点P,得:
C = (y1+y2)/2 - (x1+x2)/2k
所以这条线为
y = x/k + (y1+y2)/2 - (x1+x2)/2k.
然后根据圆心算切点(于这条线距离为半径长的点,利用半径,中点到圆心的距离,可以推算)...
最近在写一些数学算法库 也发现这个问题
不过使用更加巧妙的方法实现了