2012-04-25 10 views
1

オブジェクトを指定した位置で円滑に停止させたいです。私はオブジェクトの最初の速度、V0、終了速度(0に設定されている)、V1、および目的地に到達するために必要な距離dを持っています。 V1およびV0はフレームごとのラジアンで測定され、dもラジアンで測定されます。私は、次の式を使用してみました位置でオブジェクトを停止させるには一定の減速度が必要です

は:

a = (V0*V0 - V1*V1)/(2.0 * d); 

しかし、常にその目標をオーバーシュートしているようです。

編集: 本質的に、私はV0の初期速度で回転を開始するホイールを持っています。ホイールは特定の場所で停止する前に一定数のスピンを行わなければなりません。距離dは、指定されたスピン量を行い、指定された位置で停止するのに必要なラジアン量です。速度は1フレームあたりのラジアン数です。

+0

[一定の速度で一定速度に達するのに必要な減速度を計算する方法は?](http://stackoverflow.com/questions/1088088/how特に[Martellibot's answer](http://stackoverflow.com/a/1088114/139010) –

+1

のように、計算上の減速に必要な速度に達するためには、数式は正しいですが、単位がうまくいくようにラジアンからピクセルに変換する必要があります。 – Beta

+0

ラジアンは、距離ではなく角度の測度であるため、これに使用する奇妙な単位です。 –

答えて

3

教育的な推測には十分な情報があります。

この式は正しいですが、理想的な場合にのみ、反復時間の長さが非常に短い場合のみです。私の推測では、あなたのループでは速度の前に位置を更新しているので、その時間の間、車輪は減少していない速度で進み、あなたはオーバーシュートします。 (あなたが位置する前に速度を更新した場合、あなたはアンダーシュートでしょう。)

をあなたはオーバーシュートがそれほど深刻になりますこれは、あなたのフレームを短くするか、またはあなたがそれを排除するための式を変更することができます。

=( V * V )/(2.0 * D - V * tのデルタ)。

ここで、t デルタは、単一フレームの時間の長さです。 (私はV = 0と仮定しています)

+0

それはうまくいきました、ありがとう! – Benzino

関連する問題