Java 通过点阵列的光滑2D/lwjgl曲线
我正试图改写游戏“Achtung,die Kurve”(注意,曲线) 现在,我遇到了一个问题: 如何绘制穿过N个点(x/y坐标)的曲线Java 通过点阵列的光滑2D/lwjgl曲线,java,lwjgl,slick2d,Java,Lwjgl,Slick2d,我正试图改写游戏“Achtung,die Kurve”(注意,曲线) 现在,我遇到了一个问题: 如何绘制穿过N个点(x/y坐标)的曲线 for(int i=0;i
for(int i=0;i
^这将始终创建一条新线,因此我的FPS很快达到10
有什么帮助吗?这是一个代数问题,可以用线性方程组来解决 通常,通过N个点的曲线是(N-1)次多项式。因此,如果你想找到一个通过3个点的多项式(例如,
(-1,1)、(0,3)、(1,-1)
),你需要这样一个二次方程:ax^2+bx+c=y
要找到a、b和c的值,需要插入x和y坐标,然后求解方程组
a(-1)^2+b(-1)+c=1a(0)^2+b(0)+c=3
a(1)^2+b(1)+c=-1 这就简化了 a-b+c=1
c=3
a+b+c=-1 很好,我们已经有了c=3。通过结合第一个方程和第二个方程,我们可以得到 2a+2c=0 因为我们知道c=3,这就变成了 2a+3=0 因此
a=-1.5
从这里我们可以把这些a和c的值放到最后一个方程中,得到这个
-1.5+b+3=-1
它给出了ab=-3.5
。将这些a、b和c的值重新插入二次方程中,可以得到以下结果
-1.5x^2-3.5x+3=y
我没有仔细检查我的数学,但如果我做得正确,这将给出一条通过三个点的二次曲线
毫无疑问,已经有一个图书馆在做这件事,但我很抱歉地说,我不知道那将是什么。希望了解问题背后的数学知识能帮助你找到答案
for(int i = 0;i < xList.size();i++)
{
path.lineTo(player1.getShape().getCenterX(),player1.getShape().getCenterY());
}