algorithm - 4 墙目标算法之间的弹跳球

标签 algorithm animation collision

我正在尝试实现一个球在 4 个垂直墙之间弹跳的动画,球的速度是恒定的。问题是,我使用的框架要求我在球每次与墙壁碰撞时告诉它的起点和终点。

在碰撞的那一刻,我可以访问球与墙壁接触的当前位置和之前的位置。给定墙壁的坐标 x_min、x_max、y_min 和 y_max,以及球的这两个位置,计算其下一个位置的最简单方法是什么?

我想到的所有算法都遵循某种蛮力方法,带有许多 if-else 语句...我想知道是否有一些优雅的方法来处理这个问题。

最佳答案

[抱歉,这是不完整的——我会把它作为评论发布,但它太大了并且涉及 ascii 艺术。我可能稍后会删除它。]

如果您想要一种紧凑、优雅的方法,可能更容易将球想象成一条直线,穿过重复的矩形图案。

+------+------+--*---+
|      |      | *    |
|      |      |*     |
+------+------*------+
|      |     *|      |
|      |    * |      |
+------+---*--+------+
|      |  *   |      |
|      | *    |      |
+------+*-----+------+
|      *      |      |
|     *|      |      |
+----*-+------+------+
|   *  |      |      |
|  *   |      |      |
+-*----+------+------+

(您需要反射矩形,然后“免费”获得反弹)。

我很确定您可以使用类似于 bresenham's algorithm 的东西 计算交点。

[感谢您的投票,但我不得不说,我认为这可能是一个需要纠正的痛苦世界。跟踪反射,特别是如果恰好碰到一个角落,将会很棘手......有时更容易忍受丑陋的代码!]

关于algorithm - 4 墙目标算法之间的弹跳球,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19472050/

相关文章:

java - 从文件中查找访问次数最多的 URL

ios - 尝试使用以编程方式创建的图像为 UIImageView 设置动画时抛出错误

algorithm - 我寻找圆线碰撞解决方案的功能可能有什么问题?

java - Java 2D 中的碰撞检测无法正常工作

java - 圆-圆碰撞预测(后续)

python - Python 中的洪水填充

algorithm - 使用 Bellman-Ford 算法的简单图遍历

java - 学习回溯算法

css - GPU如何加速CSS变换?

ios - Swift - 以触觉、流畅的方式为按钮设置动画的最佳方式?向下滑动菜单按钮?