0

好的,所以我需要制作一条横跨我的世界长度的抛物线。(W) 我在左上角为 (0,0) 的世界中创建这个

我的 3 个点是从左到右,(x,y)

(0,H) (W/2,0) << 顶点 (W,H)

这将从世界的左下角,到世界顶部中心的顶点,再到世界的右下角。

我确信我把它弄得比它需要的复杂得多,但我绞尽脑汁想弄明白。

另外,这将起作用的方式是我希望图形在给定的时间内通过抛物线。

所以我会创建一个函数来获取 Y,然后我会将 X 发送给它,范围从 0 到 W,具体取决于经过的时间。

所以我会调用这个函数,

     GetPathY((WorldWidth*Percentage));
private int getPathY(double X) {
    int y = (int) ScreenHeight-((4 * ScreenHeight* X)/(WorldWidth^2))
    return(y);
}

我认为这行得通吗?

所以:y=(((-4*ScreenHeight)/(WorldWidth^2))(x-(WorldWidth/2)^2)) 或:y = H-((4Hx)/(W^2));

4

2 回答 2

4

抛物线的方程是什么?

y(x) = c0 + c1*x + c2*x^2

你有三点:

y(0) = c0 = H

还有一个:

y(W/2) = H + c1*(W/2) + c2*(W/2)^2 = 0

您可以为 c1 或 c2 解决此问题。让我们为 c2 做:

c2 = -4H/W^2 - 2c1/W

然后是最后一个等式:

y(W) = H + c1*(W) + c2*(W^2) = H

从两边减去 H 得到:

c1*W + c2*W^2 = = 0

简化这个得到 c1:

c1 = -c2*W

将你在第二个方程中求解的系数代入这个方程得到第三个,你就完成了。

这只是代数。

于 2012-06-26T03:24:43.643 回答
0

我实际上做了第二种方法。

我通过重新排列 y=a(xh)^2+k 得到的第一种方法来解决“a”

    y=(WindowHeight/((WindowWidth/2)^2)*(x-(WindowWidth/2))^2

第二种方式,只需制作两个百分位数,一个用于向上,一个用于水平。随着时间的推移,X 轴百分位数从 0-100% 和 Y 轴从 0-100% 到一半时间,然后从 100-0% 回落,您所要做的就是为 Y 轴添加一个修改器,使其开始快速并在达到 100% 时减速。这将提供曲线。

当然,等式更容易:)

如果您不删除此帖子,我将不胜感激,因为我的回答与其他人根本不同,而且我的解决方案都是有效的,而且也不同。我没有使用他的答案来获得我自己的答案,这两种解决方案都可以帮助将来尝试解决类似问题的其他人。也是因为第一个答案无助于以描述的方式解决问题。

于 2012-06-26T16:46:18.603 回答