レイキャストカーホイールが横にスライドしないようにするにはどうすればよいですか?


11

この記事を参考にして、非現実的な自動車物理エンジンを学習課題として書いてきました。

私は、地形に正しく衝突し、各車輪に正しいサスペンションフォースを適用する車を持っています。私の次の問題は、車輪の横方向の動きを防ぐことです。たとえば、斜面に車を落とすと、横に滑るようになり、横に滑るのを止めることはありません(いかなる摩擦もないため)。

リンクされた記事では、「サイドフォース」を適用し、フォワードフォースと組み合わせる必要があると記載されていますが、そのサイドフォースの計算方法については説明されていません。

各ホイールの衝突情報(交差法線など)と車の剛体に関する情報を考慮して、横向きの動きを防ぐために剛体に適用する適切なサイドフォースを計算するにはどうすればよいですか?

回答:


10

そのサイドフォースは、車の前進運動に対する道路の法線の水平成分です。あなたが議論しているように道路は堤防になっていて、勢いから外れコーナーに押し出されてトラックから飛ぶことなく、より高速でコーナリングを容易にします。バンクはタイヤが自由に回転しない方向に押し戻し、うまくいけば抵抗することができます。バンクが十分に急勾配であるか、重心が十分に高いか、速度が十分に遅い場合、車自体はホイールとして機能し、単に横転します。

タイヤのステアリング範囲は限られています。タイヤがそのように回転しないため、縦軸に垂直に(前から後ろに)作用する力は、部分的に抵抗されます。重力と前進速度から道路に対して横向きに作用する力を計算し、タイヤがこの摩擦の一部をこすった後の残りの力を計算できます。残りの力が車を路面に押し込む力に打ち勝つのに十分な大きさである場合、車はスライド/スキッドします。

次の図はこれを示しており、ここ で説明します(摩擦ありとなし)

   https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Banked_turn.svg/375px-Banked_turn.svg.png

ここでは、水平方向に作用する力が特に重要です。安静時の摩擦係数が非常に低い場合を除き、車が(垂直実行中の斜面を滑り降りするつもりはない、(だけでは重力によるものであるときに作用する力)例えば氷の道路)。


7

アンドンの答えは私に完全に解決を与えませんでした、しかしそれは間違いなく私を正しい軌道に乗せました!

ホイールが自分の平面上にあると考え始めたら(その法線は中心から突き出ているベクトルです。これをホイールの「法線」と呼びます)、サイドフォースは、車の速度をこの平面に「プッシュ」します。このベクトルは、ホイールの「法線」に、速度と「法線」の間の内積であるスカラーを掛けたものです。

これが私が解決したコードで、完全に機能します:

            // Now calculate the side force. Get the linear velocity
            auto vel = car->body()->linear_velocity();
            auto side_force = car->wheel_right_axis(i, closest_normal);

            // Find the length of the vector necessary to nullify the horizontal movement
            auto dot = kmVec3Dot(&vel, &side_force);

            // Scale the right vector to that length
            kmVec3Scale(&side_force, &side_force, -dot);

上記のコードでは、「closest_normal」は、ホイールが衝突した地形の法線であり、ホイールの「法線」を計算するときに「上」ベクトルとして使用されます。


2
ええ、私はそれがあなたに必要な答えを与えることになるとは本当に思っていませんでしたが、コメントを入れるには長すぎました;)
Andon M. Coleman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.