永发信息网

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

答案:5  悬赏:0  手机版
解决时间 2021-02-25 22:48
  • 提问者网友:却不属于对方
  • 2021-02-25 12:59
计算两个矩形是否有相交部分,求C或C++源代码算法
最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-02-25 13:40



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



上面的边比较,应该比较长边(远一点的点的边)
追问怎么判断a最右边的线,b最左边的线?a最右边的线为什么不是上面那根短的d啊?追答b的左边的点的y值,没有超过a最右边点的y值,肯定就和a上面的短线没有交集!!


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

全部回答
  • 1楼网友:人间朝暮
  • 2021-02-25 16:28
把矩形a 和b 的每条边都分开来。通过查看a的4边和b的4边是否有相交来判定2个矩形是否相交
  • 2楼网友:旧脸谱
  • 2021-02-25 15:01
可以想象定住矩形的中心让矩形旋转,最极端的情况是两个矩形刚好中心距离和等于各自对角线和的一半
  • 3楼网友:渊鱼
  • 2021-02-25 14:11
非要写代码吗 不想写
四个点令成A B C D
就先求到A和B中到直线CD距离较小的一个 令成L
还是要判断夹角 用斜率求个α
就判断L和d(1+sinα)哪个大,L大就不相交
不是很浪费时间 就有个开根(求距离)、还要转换个tan→sin
不难写啊 自己动手吧追问α是哪个角度?追答就是它的d边和另一个长方形的边的夹角嘛 倒角公式求个就行追问这个算法好像不对啊,如果两个矩形是A,B,C,D在一条直线上,你的判断还对么?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯