【问题标题】:Need equations for a parametric parabola + the angle of the tangent at any given time需要参数抛物线的方程 + 在任何给定时间的切线角度
【发布时间】:2011-01-08 03:32:19
【问题描述】:

这可能很明显,但数学并不是我在学校的强项。我已经用头撞墙很久了,我终于想到我会问。

我正在尝试为从 A 点到 B 点沿 2D 抛物线路径移动的精灵设置动画。两个点都在相同的 y 坐标上。还给出了从开始/结束 y 坐标到抛物线的所需高度(或者,如果您愿意,还给出所需的速度)。目前在我的代码中,我有一个高频触发的计时器。我想根据经过的时间来计算球的新位置。所以参数抛物线方程应该可以很好地工作。

我发现this answer from GameDev 足够了,直到我的需求增加(尽管我不确定它是否真的是一条抛物线路径......我无法遵循那里提供的最终方程的推导)。现在我想在抛物线路径的不同点挤压/拉伸精灵。但是为了让效果正常工作,我需要旋转精灵,使其主轴与路径相切。所以我需要能够在任何给定的位置/时间推导出切线的角度。

我可以为这些要求中的每一个找到各种方程(参数抛物线、一点切线等),但我就是不知道如何统一它们。具有更多数学技能的人可以帮助其他编码人员并提供一组可行的方程式吗?非常感谢。

【问题讨论】:

  • 您希望精灵以恒定的速度移动,还是具有恒定的水平速度分量?
  • 恒定水平速度。就像扔球一样。

标签: math


【解决方案1】:

你缺少的是这个:

Slope = TAN(angle)       // in radians

什么是斜率?这是你移动多少向上/向下移动多少(dy/dx 在其他一些答案上)。对你来说它实际上是(dy/dt)/(dx/dt),因为xy 都是时间的函数。

所以对于轨迹x(t)=Vx*ty(t)=Vy*t-1/2*g*t^2,斜率为Slope=(Vy-g*t)/Vx,其中Vx 是初始水平速度,Vy 是初始垂直速度。 g 是重力(垂直加速度向下)。所以你的旋转度数应该是

angle = ATAN( (Vy-g*t)/Vx ) * 180/PI

基本上斜率等于垂直速度与水平速度的比值。

【讨论】:

  • 我试过这样做,但它没有让精灵从 A 点移动到 B 点。我必须计算正确的轨迹才能做到这一点。不过,这是一个很好的答案,它提供了对角度和坡度 (dydx) 之间关系的一些必要理解,所以 +1。
【解决方案2】:

X 是 A 到 B 的距离,Y 是抛物线的期望高度,V 是水平速度。

x = Vt

y = Y - (4Y/X^2) (X/2-Vt)^2

tangent dy/dx = (8Y/X^2) (X/2-Vt)

【讨论】:

    猜你喜欢
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多