日期:2014-05-16  浏览次数:20541 次

请教如何判断页面上两个菱形是否有重叠?

页面上的菱形实际上可以理解为是正方形旋转了45度,就是说夹角为90度,四边等长。

菱形之间的大小不一,可以取得它们的坐标,大小尺寸,请教一下有什么好的算法判断两个菱形之间是否有重叠呢?谢谢大家。

------解决方案--------------------
检查一个菱形的任意顶点 是否在另外一个菱形里面
好的算法还是去百度或者维基把上面大把的
------解决方案--------------------
1楼已经说了一个解决方法了呀。自己组合下逻辑就是了

1:先取得要判断是否重叠的两个菱形4个顶点的坐标
2:然后先以其中一个做为参照物,拿另一个的四个顶点坐标来判断,是否有一个顶点的坐标被作为参照物的那个的四个顶点坐标包裹。如果是就直接返回结果了,如果不是。交换参照物再判断。如果还不是,那就说明两个没有重叠了

大致思路应该就是这样了
------解决方案--------------------
解法1
1)菱形是4个直角三角形(菱形中心点画十字)
2)一个点必定在这4个三角形的某个象限里面
3)当这个点 
和 
相对他所在的这个区域的三角形的底边的交叉点的线段的乘积/2 
大于
交叉点所在区域三角形的面积
则 你懂的

我感觉是这样 初中的几何就可以解了


解法2 当一个菱形的任意一条边 或者 该边的2边的延长线 和另外一个菱形的任意边相交 则判定碰撞 

------解决方案--------------------
如果只要判断是否重叠而不用考虑重叠面积:两菱形中点坐标相连并向下作垂线构成三角形,两中点距离乘以上角Sin值,大于等于两菱形连长之和的二分之一则不相交,否则相交。(纯数学方法考虑的,不知道你实际场景合不合用)