【问题标题】:How to calculate ball next direction如何计算球的下一个方向
【发布时间】:2014-12-16 21:29:19
【问题描述】:

我不知道如何计算球碰到墙壁时的下一个方向。

例如,球在移动 X +5 和 Y +3,但是当它接触到墙壁后,方向应该会像现实生活中一样改变。 (像台球一样)

http://i.stack.imgur.com/Y5AOZ.png

【问题讨论】:

  • 基本的简单物理学:入射角 = 反射角。如果一个球相对于墙壁以 30 度角进入,它会以 30 度角弹开。
  • 问题 - 所有的墙壁都是垂直的还是水平的?还是其中一些有一定的角度?

标签: java android


【解决方案1】:

最简单的模拟机制是:如果你撞到侧壁,将 x 速度乘以 -1。如果你撞到了顶墙或底墙,将 y 速度乘以 -1。

假设您的轨道是由平行于坐标系的 x 轴或 y 轴的线组成的矩形(即直线),那么这将满足入射角 = 反射角约束。如果没有,那么你必须做一些涉及角度的数学运算。

您可能还需要考虑墙壁的impulse 和球与桌子表面之间的friction,以计算球在碰撞后和随着时间的推移移动的速度。否则你的球不会停止移动。这两者(很可能)都是一个简单的常数,以相同的方式影响速度的 x 和 y 分量(即,将两者乘以相同的常数,例如摩擦力为 0.99 等)。这应该会给你一个相当准确的模拟,并进行一些调整。

【讨论】:

    【解决方案2】:

    现实生活中的物理学具有等于反射角的入射角。 换句话说,如果球以 30 度角进入,它会以 30 度角弹出。

    您需要两个点(在球的路径上)来计算它撞到墙上的角度。 使用与“反射角”相同的角度。 确保您根据需要进行调整,以便对所有内容使用相同的参考框架。

    计算球下一个位置的例程负责将球保持在这条轨道上。

    基本代数和三角函数为您提供您求解的方程以获得所需的值。 例如,直线的斜率(角度)由 y = m x + c 给出。 (y,x 是坐标,m 是斜率,c 是常数)。 这很简单——它只是基本的代数。

    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多