各位大侠,想问一下,矩形碰撞检测,有什么好算法?

天轶_1 2020-08-02 07:30:44
各位大侠,想问一下,矩形碰撞检测,有什么好算法?谢谢。
...全文
131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果碰撞检测的物体不是很多的话,用图形学方法,比如windows API的CombineRgn,可以对任意复杂的多边形(可以是凹多边形甚至有空洞的多边形)求交集、差集等等,碰撞检测可以很精确。
另外,我在#2居然把and写成amd了, 看来确实是年纪大了,注意力不集中~~~
天轶_1 2020-08-04
  • 打赏
  • 举报
回复
又打错分了。真是不好意思。。本想每人给10分的。
ooolinux 2020-08-03
  • 打赏
  • 举报
回复
百度一下应该有,纯矩形不难。
ooolinux 2020-08-03
  • 打赏
  • 举报
回复
引用 4 楼 天轶_1的回复:
那顺便问下圆形检测呢?有类似办法么?
两圆心距离小于二者半径之和。
天轶_1 2020-08-03
  • 打赏
  • 举报
回复
那顺便问下圆形检测呢?有类似办法么?
  • 打赏
  • 举报
回复
windows的话,可以直接用API IntersectRect,Delphi的TRect有Intersect、IntersectWith之类的方法
  • 打赏
  • 举报
回复
如果矩形不旋转,都保持四条边平行于X轴/Y轴,则非常简单,假设一个矩形坐标是(x1, y1)-(x2, y2),另一个是(x3, y3)-(x4, y4),则:
if ((x3 >= x1) amd (x3 <= x2) or (x4 >= x1) amd (x4 <= x2)) and
(y3 >= y1) and (y3 <= y2) or (y4 >= y1) and (y4 <= y2)) then // 两个矩形有交集

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧