好吧所以我需要制作一个横跨我的世界长度的抛物线。 (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) );
答案 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%时减慢速度。这将提供曲线。
当然,等式更容易:)
如果你没有删除这篇文章,我将不胜感激,因为我的答案与其他人的根本不同,我的解决方案都是有效的,也是不同的。我没有使用他的答案来获得我自己的答案,这两种解决方案都可以帮助那些试图在未来解决类似问题的人。也是因为第一个答案无法以所描述的方式解决问题。