0

了解しました。世界全体に広がる放物線を作成する必要があります。(W)左上隅が(0,0)の世界でこれを作成しています

私の3つのポイントは左から右です(x、y)

(0、H)(W / 2,0)<<頂点(W、H)

これは、世界の左下隅から、世界の上部中央の頂点、世界の右下隅までです。

私はこれを必要以上に複雑にしたと確信していますが、私はそれを理解しようと頭を悩ませました。

また、これが機能する方法は、グラフィックが特定の時間にわたって放物線を移動することです。

そこで、Yを取得する関数を作成し、経過時間に応じて0からWの範囲のXを送信します。

だから私は関数を呼び出すだろう、

     GetPathY((WorldWidth*Percentage));
private int getPathY(double X) {
    int y = (int) ScreenHeight-((4 * ScreenHeight* X)/(WorldWidth^2))
    return(y);
}

これはうまくいくと思いますか?

したがって、y =(((-4 * ScreenHeight)/(WorldWidth ^ 2))(x-(WorldWidth / 2)^ 2))または:y = H-((4Hx)/(W ^ 2));

4

2 に答える 2

4

放物線の方程式は何ですか?

y(x) = c0 + c1*x + c2*x^2

あなたには3つのポイントがあります:

y(0) = c0 = H

そして別の:

y(W/2) = H + c1*(W/2) + c2*(W/2)^2 = 0

これは、c1またはc2のいずれかで解決できます。c2でやってみましょう:

c2 = -4H/W^2 - 2c1/W

次に、最後の方程式があります。

y(W) = H + c1*(W) + c2*(W^2) = H

両側からHを引くと、次のようになります。

c1*W + c2*W^2 = = 0

これを単純化してc1を取得します。

c1 = -c2*W

2番目の方程式で解いた係数をこの方程式に代入して3番目の方程式を取得すると、完了です。

それはただの代数です。

于 2012-06-26T03:24:43.643 に答える
0

私は実際にそれを行う2番目の方法を作りました。

「a」を解くために、y=a(xh)^2+k を再配置して得た最初の方法

    y=(WindowHeight/((WindowWidth/2)^2)*(x-(WindowWidth/2))^2

第 2 の方法は、2 つのパーセンタイルを作成することです。1 つは上向き、もう 1 つは横向きです。時間の経過とともに、X 軸のパーセンタイルを 0 ~ 100% に、Y 軸を 0 ~ 100% にスケールし、その後 100 ~ 0% に戻します。モディファイアを使用して、高速で開始し、100% に達すると遅くなるようにします。これにより、曲線が提供されます。

もちろん、方程式はより簡単です:)

私の答えは他の人たちとは根本的に異なっており、私の解決策は両方とも有効であり、また異なっているため、この投稿を削除しないでいただければ幸いです。私は自分の答えを得るために彼の答えを何も使用しませんでした.これらの解決策は両方とも、将来同様のことを解決しようとしている他の誰かを助けるかもしれません. また、最初の回答が説明された方法で問題を解決するのに役立たなかったという理由でも。

于 2012-06-26T16:46:18.603 に答える