好吧,所以我需要制作一条横跨我的世界长度的抛物线。 (W) 我在左上角为 (0,0) 的世界中创建这个
我的 3 个点是从左到右,(x,y)
(0,H) (W/2,0) << 顶点 (宽,高)
这将从世界的左下角,到世界顶部中心的顶点,再到世界的右下角。
我确信我让这件事变得比它需要的复杂得多,但我绞尽脑汁试图弄清楚它。
另外,我想要一个图形在给定的时间内沿抛物线行进。
所以我会创建一个函数来获取 Y,然后将 X 发送给它,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) );
最佳答案
抛物线的方程是什么?
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
将您在第二个方程中解出的系数代入这个方程以获得第三个方程,然后就完成了。
这只是代数。
关于java - 使用 3 点的抛物线方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11200346/