比如有两个lable A 和 B
当A 移动到B 跟B接触时(或者说相撞) ,怎么判断这个接触的事件?
------解决思路----------------------
locationchanged或者move事件里判断A的4个顶点坐标是否在B的4个顶点内
------解决思路----------------------
假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形
rect1{(minx1, miny1)(maxx1, maxy1)}
rect2{(minx2, miny2)(maxx2, maxy2)}
相交的结果一定是个矩形,构成这个相交矩形rect{(minx, miny) (maxx, maxy)}的点对坐标是:
minx = max(minx1, minx2)
miny = max(miny1, miny2)
maxx = min(maxx1, maxx2)
maxy = min(maxy1, maxy2)
如果两个矩形不相交,那么计算得到的点对坐标必然满足:
( minx > maxx ) 或者 ( miny > maxy )
判定是否相交,以及相交矩形是什么都可以用这个方法一体计算完成。
从这个算法的结果上,我们还可以简单的生成出下面的两个内容:
㈠ 相交矩形: (minx, miny) (maxx, maxy)
㈡ 面积: 面积的计算可以和判定一起进行
if ( minx>maxx ) return 0;
if ( miny>maxy ) return 0;
return (maxx-minx)*(maxy-miny)
要判断 A 是否进入了 B 的白色区域,要分两步走
1、判断 A、B是否相交,如相交则进行2
2、判断 A 与 B 的白色区域是否相交
也可以一步完成,但如果 A 要从 B 的上方进入呢?(肯定是不允许的)