计算两个矩形是否有相交部分,求C或C++源代码算法

已知如图两个矩形,他们的d(短边)是一样的,坐标点是d的中点。判断他们两者是否有相交部分,要考虑各种极端情况以确保算法正确。请各位大神费心想想吧,最好就用到已有的这些条件... 已知如图两个矩形,他们的d(短边)是一样的,坐标点是d的中点。判断他们两者是否有相交部分,要考虑各种极端情况以确保算法正确。

请各位大神费心想想吧,最好就用到已有的这些条件,不要用大量的sin啊cos函数,越简单越好,我这个判断在整个程序里要反复调用的,多了会效率很慢。
好算法加分,拜托了啊!
不计算矩形的顶点坐标,算法复杂度要低,尽量运用我上面给出的这些条件不要另外计算获得条件。
展开
 我来答
百度网友5c1778d
2012-09-24 · 超过22用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:22万
展开全部


先判断他两的相互位置(比较两个矩形的中心点)比如,xb>xa,矩形a在矩形b左边,那就用a的最右边的线比较b最左边的线,有交点就说明矩形有相交了(这样就只需算一条线相交了!还可以先以中心点为圆心,以最远的点为半径,比较他两相距有没有太远,太远就连相交都不用算了,反复调用的话,就更实用了) 


上面的边比较,应该比较长边(远一点的点的边)

追问
怎么判断a最右边的线,b最左边的线?a最右边的线为什么不是上面那根短的d啊?
追答

b的左边的点的y值,没有超过a最右边点的y值,肯定就和a上面的短线没有交集!!


可以看这么几个图,先比中心点,在比最远的点!

破空大巫师
推荐于2018-04-02 · 超过16用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:38.2万
展开全部
非要写代码吗 不想写

四个点令成A B C D
就先求到A和B中到直线CD距离较小的一个 令成L
还是要判断夹角 用斜率求个α
就判断L和d(1+sinα)哪个大,L大就不相交

不是很浪费时间 就有个开根(求距离)、还要转换个tan→sin
不难写啊 自己动手吧
更多追问追答
追问
α是哪个角度?
追答
就是它的d边和另一个长方形的边的夹角嘛 倒角公式求个就行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d580670
2012-09-28 · TA获得超过1983个赞
知道大有可为答主
回答量:2054
采纳率:82%
帮助的人:705万
展开全部
可以想象定住矩形的中心让矩形旋转,最极端的情况是两个矩形刚好中心距离和等于各自对角线和的一半
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
下海啦漫画
2012-09-24
知道答主
回答量:23
采纳率:0%
帮助的人:7.5万
展开全部
把矩形a 和b 的每条边都分开来。通过查看a的4边和b的4边是否有相交来判定2个矩形是否相交
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
借风而行
2012-09-22 · 超过17用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:49.1万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式