【问题标题】:Bounce a ball from one point to another - Vector and Acceleration将球从一个点反弹到另一个点 - 矢量和加速度
【发布时间】:2015-06-13 15:36:49
【问题描述】:

我有一个球落到一个点,它应该从这个点反弹并到达另一个点。

我的球从第一个点开始加速,击中该点并弹回左侧。我想要的是在击中第一个点后应用于球的速度和加速度,因此它既具有弹跳效果,又能到达目的地(不会越位,就像明亮的轨迹一样)。

我有点之间的线性向量、点的坐标和它们之间的角度。

【问题讨论】:

标签: javascript math physics game-physics


【解决方案1】:

首先我们通过求解t来计算从高点到低点需要多长时间:

at2 + viyt = dy

然后我们将t 用于我们的横向速度:

vx = dx / t

获得横向速度后,只需将时间切分到任意细,然后将球依次移动到每个计算点。

【讨论】:

  • 你能补充一些关于数学的细节吗?我不明白 at² 中的 a 和 v 上的指数是什么意思。我想试试。
  • @stacker a.t^2+v(iy)=dy是反弹运动的y轴方程a是局部力场(重力)加速度(通常是-9.81m.s^-2),v(iy)是撞击后y轴的入射速度第一次落地,t 是第一次反弹的时间,dy 是 y 轴上的地线大小,只有 a,v,dy 是已知的 t 是未知的,您需要求解该二次方程和得到的正数 @ 987654331@是球需要击中第二个反弹点的时间。其余的应该是清楚的......
【解决方案2】:

如果您不想要完整的物理模拟,您可以通过从起点到终点的线性插值 (lerp) 来伪造它。

请参阅Moving object from vector A to B in 2d environment with in increments of percents 了解 java 脚本中的 lerp。

根据您使用的坐标系更改指向上方的坐标(y 或 z)。 虽然 t 从 0..1 开始动画:

 var relativeHeight = Math.Sin( t * Math.PI ) * curveAmplitude;
 posy = orgPosy + relativeHeight;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-03
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多