Xiaoxia[PG]

计算机几何:矩形碰撞问题

我的生活9 条评论

在一个平面上已知所有矩形的位置和大小,他们的边都是和轴平行的。若矩形从A运动到B,如何求出在运动过程中,第一次和其它矩形发生碰撞的矩形以及碰撞的位置?

这几天在写一个小游戏给自己无聊的时候玩一下,昨天被这个问题困扰大半天,到最终还是没有想到完美的解决方案。

暂时记下来,以后有时间继续思考。

恳求大牛指点迷津!

9 条评论

  1. 我没有看出这个问题的难度在哪里啊。

  2. 碰撞的定义是,两个垂直边中的一个与另外的矩形的两个边中的一个align且接触。

  3. 嗯,是这样定义的。
    如果这是数学问题,显然很容易解决。但是换到计算机代码上,就不那么容易实现了。
    我想了大半天,能把发生碰撞的矩形都找出来,但是如何找出第一次碰撞的那个?

  4. 当运动的运动方程给定,其他的矩形的位置、形状给定时。
    运动与其他的矩形之间的aling(X,Y两个方向上)时刻与位置是可以求出来的。
    接着判断align时是否接触。

  5. 肯定是 于A下面一个先碰撞

    可以判断坐标

  6. 因为给出的图的轨迹是斜向右下的,所以碰撞的面肯定是右边的或者下边的。
    不知道有没有一个统一的判断公式来确定最先碰撞的究竟是哪一个。

  7. 用解析几何可以吗?

  8. 这不就是贪吃蛇吗 找个贪吃蛇源码看下就知道了

  9. 我的想法和4楼类似,分解成水平方向和竖直2个方向,吧矩形分解成线段的单方向的碰撞问题,然后比较水平方向和竖直方向的哪个先撞上就行了

发表评论

评论会经过自动审核,链接请勿超过 3 个。