質問: オブジェクトを座標Aから座標Bへ、以下の条件に基づいて移動させようとしています。 ・座標Aでの速度は定数Va ・座標Bでの速度は定数Vb ・AからBまで移動するのにかかる時間は定数T ・AからBまでの距離は定数D この条件下で、速度をVaからVbへスムーズに変化させながら移動させたいのですが、どうすれば特定時刻での速度を求めることができるでしょうか? (座標Bに到着する前に速度がVbに達していても構いません)
回答: 「スムース」の条件は何ですか? 単に「速度が連続であれば良い」なら折れ線で良いので比較的簡単です。 下図において、影の面積が距離Dになります。 !速度のグラフ Va <= Vb, T・Va <= D <= T・Vb もしくは Va > Vb, T・Va >= D >= T・Vb の場合は、 D = T・Va + T1・(Vb - Va)/2 + (T - T1)・(Vb - Va) を満たすT1を求めて、 ``` V(t) = Va + (Vb - Va)t (t < T1) Vb (t >= T1) ``` とします。 上の条件にあてはまらない場合は、Hidekiさんのコメントにあるように、一旦min(Va, Vb)より遅くしてからまた速くする、あるいはmax(Va, Vb)より速くしてからまた減速する、といった操作が必要になりますが、計算は基本的に三角形と長方形の面積の組み合わせですので丁寧に場合分けしてゆけば同様に求まります。 (「スムース」の条件が「加速度が連続」だと曲線で囲まれた面積になるのでうんとややこしくなりますが、どうですか? 例えば加速度が折れ線なら、速度のグラフは二次曲線と直線を つなげたものになります)