计算机几何:矩形碰撞问题2010年5月2日•我的生活•9 条评论 在一个平面上已知所有矩形的位置和大小,他们的边都是和轴平行的。若矩形从A运动到B,如何求出在运动过程中,第一次和其它矩形发生碰撞的矩形以及碰撞的位置? 这几天在写一个小游戏给自己无聊的时候玩一下,昨天被这个问题困扰大半天,到最终还是没有想到完美的解决方案。 暂时记下来,以后有时间继续思考。 恳求大牛指点迷津!← 上一篇更新了CMCC无线网自动登录程序下一篇 →这三天假期的成果:A Shooting Game9 条评论to_be2010年5月2日 23:36回复我没有看出这个问题的难度在哪里啊。 to_be2010年5月2日 23:44回复碰撞的定义是,两个垂直边中的一个与另外的矩形的两个边中的一个align且接触。 Xiaoxia2010年5月2日 23:47回复嗯,是这样定义的。 如果这是数学问题,显然很容易解决。但是换到计算机代码上,就不那么容易实现了。 我想了大半天,能把发生碰撞的矩形都找出来,但是如何找出第一次碰撞的那个? to_be2010年5月2日 23:48回复当运动的运动方程给定,其他的矩形的位置、形状给定时。 运动与其他的矩形之间的aling(X,Y两个方向上)时刻与位置是可以求出来的。 接着判断align时是否接触。 Kiming2010年5月3日 12:53回复肯定是 于A下面一个先碰撞 可以判断坐标 Xiaoxia2010年5月3日 12:59回复因为给出的图的轨迹是斜向右下的,所以碰撞的面肯定是右边的或者下边的。 不知道有没有一个统一的判断公式来确定最先碰撞的究竟是哪一个。 bojone2010年5月3日 13:45回复用解析几何可以吗? Kiming2010年5月3日 20:53回复这不就是贪吃蛇吗 找个贪吃蛇源码看下就知道了 haitun2010年5月4日 17:32回复我的想法和4楼类似,分解成水平方向和竖直2个方向,吧矩形分解成线段的单方向的碰撞问题,然后比较水平方向和竖直方向的哪个先撞上就行了 发表评论Website 昵称(必填)邮箱(必填,不公开)评论内容提交评论评论会经过自动审核,链接请勿超过 3 个。
9 条评论
我没有看出这个问题的难度在哪里啊。
碰撞的定义是,两个垂直边中的一个与另外的矩形的两个边中的一个align且接触。
嗯,是这样定义的。
如果这是数学问题,显然很容易解决。但是换到计算机代码上,就不那么容易实现了。
我想了大半天,能把发生碰撞的矩形都找出来,但是如何找出第一次碰撞的那个?
当运动的运动方程给定,其他的矩形的位置、形状给定时。
运动与其他的矩形之间的aling(X,Y两个方向上)时刻与位置是可以求出来的。
接着判断align时是否接触。
肯定是 于A下面一个先碰撞
可以判断坐标
因为给出的图的轨迹是斜向右下的,所以碰撞的面肯定是右边的或者下边的。
不知道有没有一个统一的判断公式来确定最先碰撞的究竟是哪一个。
用解析几何可以吗?
这不就是贪吃蛇吗 找个贪吃蛇源码看下就知道了
我的想法和4楼类似,分解成水平方向和竖直2个方向,吧矩形分解成线段的单方向的碰撞问题,然后比较水平方向和竖直方向的哪个先撞上就行了