对于节目,星星出现在屏幕底部或顶部的随机、预先计算的位置。星星移动到它们预定的目的地,即字母的顶部或底部(取决于星星是起源于字母上方还是下方)。目前恒星的运动主要是线性的,一些自制方程式有一点曲线。我想要一个固体抛物线方程,其中星星以大致垂直(± 20 度左右)的角度到达目的地字母的顶部/底部。我调用 calc 3,所以我不知道如何为这个问题实现抛物线。我也乐于采用一种完全不同的方式来为这些对象设置动画。帮助表示赞赏。谢谢!
无关信息:星星的源位置永远不会直接在它们要碰撞的字母的上方或下方,并且对于底部起源的星星,它的距离绝不会超过屏幕宽度的一半或屏幕宽度的 1/3远离顶级起源的明星。
最佳答案
因此,我们需要一条已知顶点的抛物线,以及其他一些任意点。
首先,考虑顶点。在抛物线的顶点,y 位置的一阶导数为零; d/dx(ax^2 + bx + c) = 2ax + b
,所以当 2ax + b = 0
时求解 x
我们有2ax = -b => x = -b/2a
。所以 X_a = -b/2a
。
现在,我们可以用它来求解 a
或 b
。所以,a = -b/2X_a
。
我们还知道顶点的 y 坐标:Y_a = (-b/2X_a)X_a^2 + bX_a + c
; Y_a = -bX_a/2 + bX_a + c
; Y_a = bX_a/2 + c
;求解 c
:c = Y_a - bX_a/2
。
现在将其代入另一个已知点的方程式:y = (-b/2X_2)x^2 + bx + Y_a - bX_a/2
; y = -bX_a/2 + bx + Y_a - bX_a/2
; y = -bX_a + bx + Y_a
;求解 b:bx - bX_a = y - Y_a
; b(x - X_a) = y - Y_a
; b = (y - Y_a)/(x - X_a)
。
现在你有了二次函数的三个参数的公式(a
和 c
依赖于 b
),所以你可以轻松获得参数形式。
关于java - 在给定源坐标和目标坐标的情况下推导参数抛物线方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486227/