0

ゲーム「Achtung, die Kurve」(Attention, the Curve) を書き直そうとしています。

今、私は問題で立ち往生しています: N ポイント (x/y 座標) を通過する曲線をどのように描画できますか?

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

^これにより常に新しいラインが作成されるため、私の FPS はすぐに 10 になります。

ヘルプはありますか?

4

1 に答える 1

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
a(1)^2+b(1)+c=-1

単純化する

a-b+c=1
c=3
a+b+c=-1

うまくいけば、すでにc=3があります。最初の式と 2 番目の式を組み合わせると、

2a+2c=0

c=3 とわかっているので、これは次のようになります。

2a+3=0

だからa=-1.5

ここから、a と c のこれらの値を最後の式に入れ、これを取得できます。

-1.5+b+3=-1

を与えますb=-3.5。これらの a、b、および c の値を 2 次方程式に戻すと、次の結果が得られます。

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

数学を再確認していませんが、正しく計算すると、3 つの点を通る 2 次曲線が得られます。

間違いなく、これを行うためのライブラリが既に存在しますが、それが何であるかはわかりません。問題の背後にある数学を知ることが、答えを見つけるのに役立つことを願っています。

于 2013-03-05T09:44:33.927 に答える