如何最高效率判断一个平面圆形和一个平面正方形相交?

tiantiangame 2010-04-15 10:45:13
我有一个圆的中心点坐标和它的半径, 还有正方形的4个角的坐标点 如何最高效率判断一个平面圆形和一个平面正方形相交?

vector3 v(0.0, 0.0, 0.0) 圆心点
radius = 5.0

正方形4个角
vector3 a1,a2,a3,a4
...全文
2198 48 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
limingqing61 2012-10-20
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 的回复:]

引用 24 楼 zhao4zhong1 的回复:

若全为负,不相交。
若全为正,再判断正方形是否包含圆的外接正方形,
包含,不相交。
不包含,相交。

以上逻辑可能还有漏洞。


什么漏洞? 举个例子!!

我一看到题目,就想到了高数里面的这个方法啊,看一个点在不在圆内,然后拓展开来,4个点都不在圆内的话,要么不相交,要么就是矩形包含圆。 你还能想出其他情况么?
[/Quote]

有的,即使四个点都在圆外,还可能会有相交的可能,比如和正方形的某条边相交于两点
xwxwxw2003 2012-10-06
  • 打赏
  • 举报
回复
不相交的充要条件:
1.正方形四个点都在圆外
2.正方形中心到圆心的距离>边长+半径

大家看看对不。
  • 举报
回复
@xwxwxw2003 应该是距离>二分之一边长+半径
FancyMouse 2012-10-06
  • 打赏
  • 举报
回复 1
[Quote=引用 46 楼 的回复:]

1. 正方形有4个顶点,分别计算4个顶点到圆心的距离,只要其中一个距离小于圆的半径,就必然相交。
2. 如果4个顶点到圆心的距离均大于圆的半径,那么如果圆心到正方形中心的距离小于圆的半径与正方形边长一半的和,则必然相交。
3. 其它情况,不相交。
[/Quote]
反例:正方形(0,0)-(1,1)。圆心(1e-5,1e-5),半径r=1e-5。显然正方形包含圆,它们边界也相交。但是正方形顶点都在圆外。圆心到正方形中心距离几乎是sqrt(2)/2,大于1/2+1e-5。
pathuang68 2012-10-06
  • 打赏
  • 举报
回复
1. 正方形有4个顶点,分别计算4个顶点到圆心的距离,只要其中一个距离小于圆的半径,就必然相交。
2. 如果4个顶点到圆心的距离均大于圆的半径,那么如果圆心到正方形中心的距离小于圆的半径与正方形边长一半的和,则必然相交。
3. 其它情况,不相交。
echoonly 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 的回复:]

正方形4个角
vector3 a1,a2,a3,a4
4个点不一定在一个平面上啊。
4四个点可以确定一个四面体。
[/Quote]
原题的坐标是在一个平面内的。。
木子十甫寸 2012-02-01
  • 打赏
  • 举报
回复
应该是不对的

[Quote=引用 37 楼 xiandaixiaotu2 的回复:]

计算出正方形四条边的方程,计算圆心到四条边的距离,如果存在小于半径的距离就相交,否则不相交。貌似比较麻烦
[/Quote]
mymtom 2011-08-24
  • 打赏
  • 举报
回复
正方形4个角
vector3 a1,a2,a3,a4
4个点不一定在一个平面上啊。
4四个点可以确定一个四面体。
mymtom 2011-08-24
  • 打赏
  • 举报
回复
vector3 v(0.0, 0.0, 0.0) 圆心点
radius = 5.0
只能确定一个球面啊。
赵4老师 2011-08-23
  • 打赏
  • 举报
回复
wRonSKy317 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 xiandaixiaotu2 的回复:]

计算出正方形四条边的方程,计算圆心到四条边的距离,如果存在小于半径的距离就相交,否则不相交。貌似比较麻烦
[/Quote]我错了,无视我吧
wRonSKy317 2011-08-23
  • 打赏
  • 举报
回复
还有,如果是3d空间的圆的话,只给出圆心和半径不能确定一个圆啊。如果限制y=0,则问题变为2d的情况,题目有点故弄玄虚呢
wRonSKy317 2011-08-23
  • 打赏
  • 举报
回复
计算出正方形四条边的方程,计算圆心到四条边的距离,如果存在小于半径的距离就相交,否则不相交。貌似比较麻烦
FrankHB1989 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 mni2005 的回复:]

去看计算机图形学
[/Quote]
不是图形学,是计算几何。
莫_问 2011-04-15
  • 打赏
  • 举报
回复
去看计算机图形学
lichong_87 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 lichong_87 的回复:]
是不是可以这样:假设圆的半径为r,正方形的边长的一半为l,正方形的外接圆半径为R,正方形中心和圆心的距离为d,那么如果d>r+R说明不相交,如果d<r+l则说明相交,如果r+l<d<r+R那么还要继续判断。判断圆心到正方形的四条边的距离,如果有小于圆的半径的,那么就说明相交。如果都是大于,那么判断圆心是在正放心内部还是外部,内部说明相交,外部说明不相交。处理的时候可以先将圆移动到原点,并对应移动正……
[/Quote]
没看清圆心就在原点,那么这样的话就可以直接计算了...
lichong_87 2011-04-15
  • 打赏
  • 举报
回复
是不是可以这样:假设圆的半径为r,正方形的边长的一半为l,正方形的外接圆半径为R,正方形中心和圆心的距离为d,那么如果d>r+R说明不相交,如果d<r+l则说明相交,如果r+l<d<r+R那么还要继续判断。判断圆心到正方形的四条边的距离,如果有小于圆的半径的,那么就说明相交。如果都是大于,那么判断圆心是在正放心内部还是外部,内部说明相交,外部说明不相交。处理的时候可以先将圆移动到原点,并对应移动正方形。然后转换坐标系,使得正方形相对坐标系为横平竖直的,这样计算原点到正方形各条边的距离就可以直接获得...(当然不转换也可以计算)
ForestDB 2010-04-18
  • 打赏
  • 举报
回复
帮顶。
knate 2010-04-18
  • 打赏
  • 举报
回复
还有一种方法是
如果多边形端点在圆外和园内都有则必然有交点.
有端点在圆上的独立考虑.
YT158828 2010-04-17
  • 打赏
  • 举报
回复
相交说明一个问题..

圆心到矩形的一条边的距离小于半径长度(或者更多...)

不知这个思路对楼主是否有帮助
aoxuehan0424 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 zhao4zhong1 的回复:]

若全为负,不相交。
若全为正,再判断正方形是否包含圆的外接正方形,
包含,不相交。
不包含,相交。

以上逻辑可能还有漏洞。
[/Quote]

什么漏洞? 举个例子!!

我一看到题目,就想到了高数里面的这个方法啊,看一个点在不在圆内,然后拓展开来,4个点都不在圆内的话,要么不相交,要么就是矩形包含圆。 你还能想出其他情况么?
加载更多回复(27)

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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