在一个平面上已知所有矩形的位置和大小,他们的边都是和轴平行的。若矩形从A运动到B,如何求出在运动过程中,第一次和其它矩形发生碰撞的矩形以及碰撞的位置?
这几天在写一个小游戏给自己无聊的时候玩一下,昨天被这个问题困扰大半天,到最终还是没有想到完美的解决方案。
暂时记下来,以后有时间继续思考。
恳求大牛指点迷津!
在一个平面上已知所有矩形的位置和大小,他们的边都是和轴平行的。若矩形从A运动到B,如何求出在运动过程中,第一次和其它矩形发生碰撞的矩形以及碰撞的位置?
这几天在写一个小游戏给自己无聊的时候玩一下,昨天被这个问题困扰大半天,到最终还是没有想到完美的解决方案。
暂时记下来,以后有时间继续思考。
恳求大牛指点迷津!
我没有看出这个问题的难度在哪里啊。
碰撞的定义是,两个垂直边中的一个与另外的矩形的两个边中的一个align且接触。
嗯,是这样定义的。
如果这是数学问题,显然很容易解决。但是换到计算机代码上,就不那么容易实现了。
我想了大半天,能把发生碰撞的矩形都找出来,但是如何找出第一次碰撞的那个?
当运动的运动方程给定,其他的矩形的位置、形状给定时。
运动与其他的矩形之间的aling(X,Y两个方向上)时刻与位置是可以求出来的。
接着判断align时是否接触。
肯定是 于A下面一个先碰撞
可以判断坐标
因为给出的图的轨迹是斜向右下的,所以碰撞的面肯定是右边的或者下边的。
不知道有没有一个统一的判断公式来确定最先碰撞的究竟是哪一个。
用解析几何可以吗?
这不就是贪吃蛇吗 找个贪吃蛇源码看下就知道了
我的想法和4楼类似,分解成水平方向和竖直2个方向,吧矩形分解成线段的单方向的碰撞问题,然后比较水平方向和竖直方向的哪个先撞上就行了