0

モノゲームを使用して、ユーザーのタッチ入力を受け取り、描画したパスに沿ってスプライトを移動するゲームを作成しています。画面上の特定のポイント(正方形など)から線を引き、その線を画面上の任意の方向に引き、滑らかにして(ベジエ曲線)、その線にキャラクターを従わせたいと考えています。

monogame が xna 4.0 の曲線クラスをサポートしているかどうかは誰にもわかりませんか? 私の数学は良くないので、ユーザーのタッチ入力から上記の手法を使用して線を描画および平滑化することからどこから始めればよいかわかりません。

誰かがこれを以前に行ったことがありますか?私を正しい方向に向けてもよろしいですか? 役立つと思われるスニペットや記事があれば、投稿してください。私が見つけたすべての記事は、ユーザーのタッチ入力ではなく、ベジエを使用して平滑化された事前に決定されたパスを使用しています。

乾杯

4

2 に答える 2

3

ベジェ曲線は、曲線上にない制御点を設定する必要があるため、一連の点に自動的に曲線をフィットさせるのが困難です。

Catmull-Rom スプラインまたは制御点を通過するその他のスプラインを使用することをお勧めします。既製の実装を見つけるのに苦労するかもしれませんが、始めるのを手伝うことができます。Catmull-Rom スプラインは、区分的に定義されたパラメトリック関数です。ポイント p のセットは、タッチ座標です。4 つの点 p0、p1、p2、p3 が与えられた場合、p1 と p2 の間のセグメントは、そのページの方程式を使用して定義されます。次のように、多くの b-スプラインを作成することにより、より多くのセグメントを使用してスプラインを指定できます。

スプライン 0 = p0、p0、p1、p2 (スプラインが p1 ではなく p0 で開始するように p0 が繰り返されます)
スプライン 1 = p0、p1、p2、p3
スプライン 2 = p1、p2、p3、p4
スプライン 3 = p2 、p3、p4、p5
...
スプライン (n-1) = p(n-2)、p(n-1)、p(n)、p(n)

スプラインを描画するには、一定の間隔でスプライトを使用する (t=0、t=0.1、t=0.2... でスプライトを描画する) か、ライン ストリップまたはトライアングル ストリップを使用することができます。

于 2012-08-19T00:19:14.920 に答える