【问题标题】:Slick2d/lwjgl Curve through Array of Points通过点阵列的 Slick2d/lwjgl 曲线
【发布时间】:2013-02-13 11:35:12
【问题描述】:

我正在尝试重写游戏“Achtung, die Kurve”(注意,曲线)

现在,我遇到了问题: 我如何绘制一条通过 N 点(x/y 坐标)的曲线

for(int i = 0;i < xList.size();i++)
    {
        path.lineTo(player1.getShape().getCenterX(),player1.getShape().getCenterY());
    }

^这总是会创建一条新线,所以我的 FPS 很快就达到了 10

有什么帮助吗?

【问题讨论】:

    标签: java lwjgl slick2d


    【解决方案1】:

    这是一个可以用线性方程组解决的代数问题。 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
    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

    这给出了b=-3.5。将 a、b 和 c 的这些值代入二次方程得到这个

    -1.5x^2-3.5x+3=y

    我没有仔细检查我的数学,但如果我做对了,这将给出一条通过三个点的二次曲线。

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

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      相关资源
      最近更新 更多