2

ホイールを 5 つの角度のうちの 1 つに落とす必要があり、その角度になったときにぐらつきます。ユーザーがホイールを回転させた後、回転速度に 0.98 を掛けて速度を落とします。私は、最も近い角度を見つけて、その方向に小さな値を速度に追加することで、それを機能させています。ただし、これは非現実的に見え、不具合が発生する可能性があります。

減衰正弦波を実装することを考えていましたが、どうすればよいかわかりません。

現在の擬似コード:

var rotation, rotationVelocity, stoppingPoints[5];
update(deltaT) {
    velocity -= rotationVelocity * 0.5 * dt;
    closestAngle = findClosestAngle().angle;
    rotationVelocity += (closestAngle - rotation) / 36 * dt;
    rotation += rotationVelocity; 
}

編集:

Teeter: 不安定な動きやバランス。前後に揺れる:

4

3 に答える 3

3

ゼロに達するまで、反復ごとに速度から一定量を減算します

これは、摩擦が実際にどのように機能するかを実際に表しているだけでなく、より簡単でもあります。


スプリングに接続されているかのように動かしたい場合:

ばねに関するフックの法則はF = -kxkが定数であり、x が原点からの距離であり、ばねに乗っているかのように前後に揺れるようにしたい場合です。原点からの回転を追跡し、原点からの回転距離 (または角度) を追加-kxします。x

ここで、摩擦とフックの法則の両方をばねに適用すると、見た目がリアルになります。

于 2012-11-12T22:16:44.367 に答える
1

あなたが望む最も近い角度は、停止する場所に最も近いと思います。どこで終了するか、終了までにかかる時間をシミュレートし、それを使用して、必要な追加の (または少ない) 速度を決定できます。

正確にぐらつくとはどういう意味かわかりません。

于 2012-11-12T22:20:48.390 に答える
0

おもりを に取り付けたホイールをモデル化したいようですねstoppingPoints。つまり、物理学の観点から。既存の回転速度、次に摩擦による減速、およびそれらのポイントでの重力の影響による未知の加速/減速があります (ウェイトの位置に基づいて回転速度に変換されます)。とにかく、それは私の解釈であり、おそらく(重力をモデル化するための)私のアプローチになるでしょう。

おもりによる加速度が既存の回転速度を超えると、おっしゃるぐらつきが発生すると思います。

于 2012-11-12T22:22:07.943 に答える