曲線をたどるように回転を考慮してオブジェクトを移動する方法を知りたい
例:http : //www.youtube.com/watch?v=iPpO24FeAX4を参照してください。
特に私は疑問に思います:
- ポイントを保存する方法、そのような滑らかなラインのために保存するポイントの数
- 曲線を補間する方法
- オブジェクトと線に沿った最初の「ウェイポイント」の間を補間する方法
曲線をたどるように回転を考慮してオブジェクトを移動する方法を知りたい
例:http : //www.youtube.com/watch?v=iPpO24FeAX4を参照してください。
特に私は疑問に思います:
回答:
見てベジェ曲線とエルミート曲線あなたはスプラインに構成することができますどちらも、。どちらも通常、0〜1の時間を入力するパラメトリック方程式の形式をとりt
ます。時間0はスプラインの開始、時間1は終了です。
回転は、カーブの接線を計算することです。
この種類のスプラインでは、最初のセグメントに4つの制御点があり、その後に追加のセグメントごとに3つの追加点があるのが一般的ですが、タイプによってはより多くの点が必要な場合もあります。
パラメトリックスプラインを使用すると、時間ではなく距離の関数としてスプライン上の位置を計算することが困難になることが多いので、「X距離を移動しました。曲線に沿ってどこに移動しますか」という質問に答える場合は、いくつかの統合のためにやり直してください。同様に、瞬間速度は、制御点の密度と位置によって異なります。
私はこれをLine-Drawing Game Starterkitに実装し、過度に設計されたソリューションの使用を避けました。おそらく10ピクセルの距離ごとにポイントが必要になるため、多くのメモリを使用したり、呼び出しを描画したりせずに、かなり滑らかなラインを取得できます。次に、オブジェクトをポイントAからBに移動するだけです。パスに沿ってスムーズに移動しているように見せるためには、単にオブジェクトを動きの方向に回転させます。これは時間の経過とともに瞬時に行われるわけではないため、ベジェ曲線などを使用する必要なく、曲線の動きに沿ってスムーズになります。
ポイントは、OpenGLを使用してパスを描画する方法も知っているPathクラス内の単純な配列に格納されます。パスポイントの数はいくつでもかまいませんが、デバイスと必要な滑らかさに応じて50〜300に制限します。
ラインを補間するには、マクマスターのスライド平均アルゴリズム(理論)を調べる必要があります。
オブジェクトが乱暴に回転しないように、ユーザーが少なくとも2つのポイントを描画したときにのみ、オブジェクトは最初のポイントに移動します。最初のポイントに移動すると、2番目、3番目、4番目などに移動するのと同じコードになります。