Slick2d / lwjgl通过点阵数曲线

时间:2013-02-13 11:35:13

标签: java lwjgl slick2d

我正试图重写游戏“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

任何帮助?

1 个答案:

答案 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

我没有仔细检查过我的数学,但如果我做得正确,这将会产生一条通过三点的二次曲线。

毫无疑问,已经有一个图书馆可以做到这一点,但我很遗憾地说我不知道​​那会是什么。希望了解问题背后的数学知识可以帮助您找到答案。