如何判断两个矩形是否交叉?

itboy3000 2004-10-10 10:16:52
矩形ABCD A(X1,Y1)-C(X2,Y2)
矩形MNOP M(X3,Y3)-O(X4,Y4)

function IsCross(X1,Y1,X2,Y2,X3,Y3,X4,Y4){
//return true
//return false
}
...全文
143 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cxz7531 2004-10-11
  • 打赏
  • 举报
回复
to cybernaute(思客)

在计算机图形学中,一般考虑任意形状的四边形,而且可以任意摆放。必须采用矢量变换、微分几何的办法。这个例子很简单,只判断顶点就完事了
cxz7531 2004-10-11
  • 打赏
  • 举报
回复
刚才的程序有点小错,正确的如下
function IsCross(x1,y1,x2,y2,x3,y3,x4,y4){
if(
(isbet(x1,x3,x4) && isbet(y1,y3,y4)) ||
(isbet(x2,x3,x4) && isbet(y1,y3,y4)) ||
(isbet(x1,x3,x4) && isbet(y2,y3,y4)) ||
(isbet(x2,x3,x4) && isbet(y2,y3,y4))
)
{
return true;
}else
{
return false;
}
}
function isbet(a,b,c){
if((a<c ) && (a>b)){
return true;
}else{
return false;
}


}
cybernaute 2004-10-11
  • 打赏
  • 举报
回复
计算机图形学里也是用的这种方法,没错的。
直接判断顶点吧!
cxz7531 2004-10-11
  • 打赏
  • 举报
回复
function IsCross(X1,Y1,X2,Y2,X3,Y3,X4,Y4){
if(
((x3<x1<x4) && (y3<y1<y4)) ||
((x3<x2<x4) && (y3<y1<y4)) ||
((x3<x1<x4) && (y3<y2<y4)) ||
((x3<x2<x4) && (y3<y2<y4))
)
{
return true;
}else
{
return false;
}
}
风斧 2004-10-11
  • 打赏
  • 举报
回复
看来楼主对纲领性的意见不感兴趣。
gaofaq 2004-10-11
  • 打赏
  • 举报
回复
一个包含于另一个算交叉不?
  • 打赏
  • 举报
回复
如果x1<x2 and x3<x4 and y1<y2 and y3<y4 ,我那天写的就是对的
如果不是的话可以交换一下再判断
风斧 2004-10-11
  • 打赏
  • 举报
回复
最笨的方法:直接根据顶点坐标,写上一堆|| &&
好的方法:我想不出来。
是是非非 2004-10-11
  • 打赏
  • 举报
回复
function IsCross(x1,y1,x2,y2,x3,y3,x4,y4){
return ((isbet(x1,x3,x4) && isbet(y1,y3,y4)) ||
(isbet(x2,x3,x4) && isbet(y1,y3,y4)) ||
(isbet(x1,x3,x4) && isbet(y2,y3,y4)) ||
(isbet(x2,x3,x4) && isbet(y2,y3,y4)));
}
function isbet(a,b,c){return ((a<c ) && (a>b));}
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2004-10-10 10:16
社区公告
暂无公告