使用3个点的抛物线方程

时间:2012-06-26 03:17:56

标签: java math graphics

好吧所以我需要制作一个横跨我的世界长度的抛物线。 (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) );

2 个答案:

答案 0 :(得分:3)

抛物线的等式是什么?

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

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

这只是代数。

答案 1 :(得分:0)

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

我通过重新排列y = a(x-h)^ 2 + k获得的第一种方式来解决'a'

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

第二种方式,只需制作两个百分位,一个用于向上,一个用于水平。随着时间的推移,X轴百分位数从0-100%开始,Y轴从0-100%到达时间的中途,然后从100-0%回落,所有你不得不做的是Y轴添加到修饰符使其快速启动并在达到100%时减慢速度。这将提供曲线。

当然,等式更容易:)

如果你没有删除这篇文章,我将不胜感激,因为我的答案与其他人的根本不同,我的解决方案都是有效的,也是不同的。我没有使用他的答案来获得我自己的答案,这两种解决方案都可以帮助那些试图在未来解决类似问题的人。也是因为第一个答案无法以所描述的方式解决问题。