我正试图重写游戏“Achtung,die Kurve”(注意,曲线)
现在,我遇到了问题: 我如何绘制曲线,通过N点(x / y Coords)
for(int i = 0;i < xList.size();i++)
{
path.lineTo(player1.getShape().getCenterX(),player1.getShape().getCenterY());
}
^这将始终创建一个新的Line,因此我的FPS很快就会达到10
任何帮助?
答案 0 :(得分:0)
这是一个可以用线性方程组求解的代数问题。 http://en.wikipedia.org/wiki/System_of_linear_equations
通常,通过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 = 1
A(0)^ 2 + B(0)+ C = 3
一(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
这给出了b=-3.5
。将a,b和c的这些值插回到二次方程中会得到这个
-1.5x ^ 2-3.5x + 3 = Y
我没有仔细检查过我的数学,但如果我做得正确,这将会产生一条通过三点的二次曲线。
毫无疑问,已经有一个图书馆可以做到这一点,但我很遗憾地说我不知道那会是什么。希望了解问题背后的数学知识可以帮助您找到答案。