帮个忙!!!急

wei125706526 2009-03-30 10:19:10
4.在某平方内有两个大小平一的圆A和B,他们的中心点坐标为(x1,y1)和(x2,y2),半径为(r1,r2)如何通过一个函数来判断这个两个圆是否内含。
...全文
52 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
愤怒的大闸蟹 2009-03-31
  • 打赏
  • 举报
回复
楼上的写的太抽象,以下是我给做个实例解说:

这是参考:

若设两圆的半径分别为R、r (R>r),圆心距为d,则有: (1)d>R+r 两圆外离 两圆仅有4条公切线; (2)d=R+r 两圆外切 两圆仅有3条公切线; (3)d=R-r 两圆内切 两圆仅有1条公切线; (4)R-r<d<R+r 两圆相交 两圆仅有2条公切线; (5)d<R-r 两圆内含 两圆没有公切线。

这里看5.

int R = Math.max(r1,r2) ;
int r = Math.min(r1,r2 ;

至于圆心距的问题,在这里已经被简化了很多,因为两个圆的x位置和y位置是已知的,除去两种特殊情况(同水平面和同垂直面,前者直接用两个x位置的差值取正既是,后者直接用y位置差值取正),当位置不是两种特殊情况时,圆心距可以通过勾股定理来取的,既圆心距的平方 = 两个圆x差值的平方 + 两个圆y差值的平方。对圆心距的平方进行开发处理就可以得到圆心距(Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) ),然后判断:d < R - r,如果成立,内含。

另外,如果楼主使用的是J2ME,Math的结果会与实际结果有所偏差,这点也要考虑到,所以,最好的方式是将一些常用的数值做到程序里,然后取值计算,而不是使用系统提供的Math类库。
brant_yan 2009-03-31
  • 打赏
  • 举报
回复
楼主你数学可以的。。。中考怎么个过的。。
cccloveyf 2009-03-30
  • 打赏
  • 举报
回复
应该这样判断
if (Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) < Math.abs(r1 - r2)) {
//内含
}

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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