Làm thế nào để tôi ngăn chặn bánh xe raycast trượt sang một bên?


11

Tôi đã viết một động cơ vật lý xe hơi không thực tế như một bài tập học tập, sử dụng bài viết này làm tài liệu tham khảo.

Tôi có một chiếc xe va chạm chính xác với địa hình và áp dụng lực treo chính xác cho mỗi bánh xe. Vấn đề tiếp theo của tôi là ngăn chặn chuyển động bên của các bánh xe. Ví dụ, nếu tôi thả xe của mình xuống dốc, nó sẽ trượt sang bên dốc và sau đó không bao giờ dừng trượt sang một bên (vì không có ma sát dưới bất kỳ hình thức nào).

Bài báo được liên kết nói rằng một "lực bên" phải được áp dụng, kết hợp với lực chuyển tiếp, nhưng nó làm sáng tỏ cách tính lực bên đó.

Đưa ra thông tin va chạm cho từng bánh xe (giao lộ bình thường, v.v.) và thông tin về thân xe cứng nhắc của xe, làm cách nào tôi có thể tính toán lực bên thích hợp để tác dụng lên thân cứng để tránh chuyển động ngang?

Câu trả lời:


10

Lực bên đó là thành phần nằm ngang của đường thông thường đối với chuyển động về phía trước của xe. Các con đường bị vùi dập như bạn đang thảo luận để tạo điều kiện vào cua ở tốc độ cao hơn mà không bay khỏi đường đua từ đà đẩy chúng ra góc bên ngoài. Ngân hàng đẩy lùi theo hướng lốp xe không tự do xoay và có thể hy vọng chống lại; Nếu ngân hàng đủ dốc, trọng tâm đủ cao hoặc tốc độ đủ chậm, bản thân chiếc xe sẽ hoạt động như một bánh xe và chỉ cần lăn qua.

Lốp có phạm vi lái hạn chế. Các lực tác động vuông góc với trục dọc (trước ra sau) được chống lại một phần vì lốp xe sẽ không quay theo cách đó. Bạn có thể tính toán lực tác dụng sang một bên so với đường từ trọng lực và vận tốc về phía trước và sau đó tính toán lực còn lại sau khi lốp xe loại bỏ một số ma sát này. Nếu lực còn lại đủ lớn để vượt qua lực đẩy xe vào đường, xe sẽ trượt / trượt.

Sau đây minh họa điều này và được thảo luận ở đây (có và không có ma sát) :

   https://upload.wik hè.org/wikipedia/commons/thumb/5/5b/Boped_turn.svg/375px-Boped_turn.svg.png

Các lực hành động theo chiều ngang được quan tâm đặc biệt ở đây. Ở trạng thái nghỉ (chỉ có lực tác dụng lên nó là do trọng lực), chiếc xe sẽ không trượt xuống dốc chạy vuông góc trừ khi hệ số ma sát đặc biệt thấp ( ví dụ: đường băng giá).


7

Câu trả lời của Andon hoàn toàn không cho tôi giải pháp, nhưng nó chắc chắn đưa tôi đi đúng hướng!

Khi tôi bắt đầu nghĩ về các bánh xe đang ở trên mặt phẳng của chúng (bình thường là vectơ nhô ra khỏi trung tâm - tôi sẽ gọi đây là "bình thường" của bánh xe), tôi nhận ra lực bên chỉ là vectơ cần thiết 'đẩy' vận tốc của xe lên mặt phẳng này. Vectơ này chỉ đơn giản là "bình thường" của bánh xe được nhân với một vô hướng là sản phẩm chấm giữa vận tốc và "bình thường".

Đây là mã mà tôi đã giải quyết trên đó hoạt động hoàn hảo:

            // 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);

Trong đoạn mã trên, "near_n normal" là bình thường của địa hình mà bánh xe va chạm với nhau được sử dụng như một vectơ 'lên' khi tính toán "bình thường" của bánh xe.


2
Vâng, tôi không thực sự nghĩ rằng điều đó sẽ cho bạn câu trả lời bạn cần, nhưng quá lâu để đưa ra nhận xét;)
Andon M. Coleman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.