旋转矩形碰撞检测

旋转矩形碰撞检测

ID:9347005

大小:276.50 KB

页数:20页

时间:2018-04-28

旋转矩形碰撞检测_第1页
旋转矩形碰撞检测_第2页
旋转矩形碰撞检测_第3页
旋转矩形碰撞检测_第4页
旋转矩形碰撞检测_第5页
资源描述:

《旋转矩形碰撞检测》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2D旋转矩形碰撞检测(极力推荐)----支持水平镜像(垂直镜像同理,可以自己编写)数学知识2010-10-0514:28:40阅读734评论0  字号:大中小 订阅最近在用FlashAS3.0写一个ACT游戏,由于要检测攻击碰撞和被攻击碰撞(没有使用像素级碰撞----没有必要),遇到矩形碰撞的问题,就是无法全部满足旋转矩形的需求。MovieClip.hitTestObject()对旋转矩形是不适用的,且非常糟糕。在此自己写了一个。对于这种2D动作游戏来说矩形碰撞是绝对满足要求的,不需要使用像素级碰撞来

2、检测碰撞。一、必知的一些概念1,SeparatingAxisTheorem(SAT)(分离轴定律)引用:http://vision.twbbs.org/~jen/?p=78   什么是STA?SAT為一種可快速偵測不規則凸多邊是否碰撞的演算法,他的概念如下:給予兩個凸多邊形物體,如果我們能找到一個軸,使得兩個在物體在該軸上的投影互不重疊,則這兩個物體之間沒有碰撞發生,該軸並稱為其SeparatingAxis。 (紅色軸線)對於2D的例子來說,可能存在的SeparatingAxis為垂直於該多邊形各個邊

3、的軸(紅色軸線)。因此,若我們要檢查兩多邊形是否碰撞,就去檢查兩多邊形在每個所有可能的軸上的投影是否重疊。如果我們找到一個軸,使得兩多邊形在該軸上的投影互不重疊,則我們就可以知道這兩個多邊沒有碰撞發生。(知道判断不重叠就可以退出了)如果是3Dcase的話,則需要考慮的可能的SaparatingAxis包括各個面的normal,還有每個面中,兩兩edge之外積所形成的向量。MetanetSoftware有一個很棒的互動式SAT教學DavidEberly也有發表一篇比較偏講解SAT理論方面的文章Inter

4、sectionofConvexObjects:TheMethodofSeparatingAxes二、旋转碰撞讲解当我着手学校的项目时,我发现必须对翻转的精灵之间实现碰撞检测,开始想到了包围盒但因为对每个像素检测是很耗时而且也没必要,经过几天的摸索,我用SAT(separatingaxistheorem)高效的实现了它,当我把我的方法结实给我的同学和实验室的技术人员时,我意识到游戏开发组织可能通过清晰而彻底解释过程中获益.此而外线性代数,向量数学是很有用的,但不影响对这篇文章的理解.SAT(Separa

5、tingAxisTheorem)SepartingAxisTheorem指出了一对不处于碰撞情况的凸多变形,有且一条相对于多变形一条边的垂直轴,并且两个多边形的投影顶点无重叠.如果我们投影这个两个多边形顶点(我们正在对每个垂直于每个多边行边的轴进行测试),然后我们检测每个多边形的重叠并且存在碰撞,即使是一个轴没有没有重叠,那么碰撞是不可能的,实质上它到底有什么意义呢.这种解决方法适用对碰撞检测的可能性,甚至是交叉碰撞. 图1,交叉碰撞我们在深入碰撞算法之前,使用这个方法得有具备一些前提.首先,虽然分离

6、轴理论可以用来在凸多边形之间检测碰撞,但矩形是在2D中通常碰撞方式,所以我们假设你使用几个矩形.此外还得假设你可以把矩形转换为带有四个向量的结构体,他们每个代表一个角,以标记或组织的方式,而知道哪个角是哪个,(具体来说,我们需要去识别哪些角是相临的---如果左上角一直转到它在矩形的低部为止,只要保持边与左上角和右下角标签相联系.方法检查两个相互旋转矩形碰撞的确是个问题,什么时候能决定他们不相撞.最简单的交叉检测使用m$的IntersesectRect()函数会检测最大/最小的矩形B的值是否在矩形A的最

7、大和最小的值内.这种对方对对称轴矩形工作得很好,但在处理旋转矩形时,我们采用更为复杂的方式图2.标准基于包围的碰撞检测正如你所见的那样.B的最小值x位于被A的最大和最小x所定义的空间中.此外,B的最小值y位于被A的最大和最小y定义的空间中的.使用简单的基于包围的碰撞检测,这将登记为碰撞,反之这不会.步骤1这个方法的第一步就是确定我们要往上投影向量的轴.分离轴理论(SAT)指出了,我们必须有一个轴,垂直于我们两个多边形的每个边    图3.八个垂直轴正如你看到的,我们以八个轴结束,你也应该马上看到使矩形

8、的优势,首先,每个边有一条对边(Oppositeedge),它共享同一个轴,我们可以利用这个来降低本检测数目,这里只需要四个轴.其次,存在矩形上任意两个相临边的角度为90度.本身而言,对于矩形的任何一个边,两个相临边垂直于它.这就说,我们可以这样计算4个轴:Axis1.x=A.UR.x-A.UL.xAxis1.y=A.UR.y-A.UL.yAxis2.x=A.UR.x-A.LR.xAxis2.y=A.UR.y-A.LR.yAxis3.x=B.UL.x-B

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。