`
kangkang203
  • 浏览: 13387 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

矩形相交

阅读更多
checkAxisAligned : function (rect)   
        {  
            this.tthis.x = this.left;  
            this.tthis.y = this.top;  
                      
            this.trect.x = rect.left;  
            this.trect.y = rect.top;  
              
            return (this.tthis.x < this.trect.x + rect.width &&  
                      this.trect.x < this.tthis.x + this.width &&  
                      this.tthis.y < this.trect.y + rect.height &&  
                      this.trect.y < this.tthis.y + this.height);  
        } 
来自melon游戏引擎,它的意思就是如果两个矩形是相交的,那么r1的lx必定小于r2的lr,且r2的lx必定小于r1的rx,这样就必定抽象出来的两条线段有一个交集。当y方向的也这样,那么就说明两个矩形相交了。

(2) 对于这个问题,假设两个矩形相交,设相交之后的矩形为C,且矩形C的左上角坐标为(Xc1,Yc1),右下角坐标为(Xc2,Yc2),经过观察上图,很 显然可以得到:
Xc1 = max(Xa1,Xb1)
Yc1 = max(Ya1,Yb1)
Xc2 = min(Xa2,Xb2)
Yc2 = min(Ya2,Yb2)
这样就求出了矩形的相交区域。
另外,注意到在不假设矩形相交的前提下,定义(Xc1,Yc1),(Xc2,Yc2),且Xc1,Yc1,Xc2,Yc2的值由上面四个式子得出。这样, 可以依据Xc1,Yc1,Xc2,Yc2的值来判断矩形相交。
Xc1,Yc1,Xc2,Yc2只要同时满足下面两个式子,就可以说明两个矩形相交。
3) Xc1 <= Xc2
4) Yc1 <= Yc2
即:
max(Xa1,Xb1) <= min(Xa2,Xb2)
max(Ya1,Yb1) <= min(Ya2,Yb2)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics