Tìm điểm va chạm


8

Tôi đang viết một mô phỏng cơ thể cứng nhắc 2D. Các đối tượng được mô phỏng là đa giác lồi. Câu hỏi của tôi liên quan đến cách quyết định "điểm" va chạm, để khi tôi áp dụng lực phản ứng, tôi cũng có thể tính toán mô-men xoắn.

Trong 2D, phương pháp phổ biến phát hiện va chạm hẹp có vẻ là Định lý trục tách. Tuy nhiên, trong khi điều này mang lại cho bạn "họ đang va chạm?" cũng như "bao nhiêu?", nó KHÔNG cung cấp cho bạn một điểm tham chiếu (mà tôi biết) để áp dụng lực phản ứng (và do đó tính toán mô-men xoắn) *.

Phương pháp khác (cũng khiến tôi quan tâm hơn, bởi vì nó được sử dụng trong 3D, là bước tiếp theo hợp lý) là tính toán sự khác biệt của Minkowski của hai đa giác và quyết định rằng chúng va chạm nếu (0,0) là chứa trong đa giác kết quả. Nhưng, làm thế nào để bạn sử dụng điều này để quyết định điểm tương đối để áp dụng lực phản ứng? Giả thuyết của tôi là, vì mỗi mặt của sự khác biệt này tương ứng với một mặt của một trong các đa giác, khoảng cách phân tách là khoảng cách ngắn nhất từ ​​(0,0) đến MD và bạn áp dụng mặt này cho mặt tương ứng trên đa giác .

Là một phần thưởng, làm thế nào để làm điều này trong 3D?

* Khi tôi viết bài này, tôi mới nhận ra rằng, khi sử dụng SAT, tôi chỉ có thể theo dõi những điểm nào đang chồng chéo và áp dụng lực ở mức "trung bình" của những điểm đó. Nhưng tôi sẽ phải quyết định xem một trong số các trục không tách rời để thực hiện thủ thuật nhỏ này ...

Câu trả lời:


6

Các từ khóa bạn đang tìm kiếm là "điểm hỗ trợ""đa tạp" .

Erin Catto đã viết một công cụ vật lý 2D tuyệt vời. Anh thường xuyên trình bày tại GDC. Bạn sẽ có thể tìm thấy một số slide của anh ấy, nơi anh ấy giải thích các đa tạp va chạm. Phiên bản đầu tiên của động cơ vật lý của anh ta chỉ hỗ trợ các hình dạng hộp để tính toán các điểm hỗ trợ. Đó là nơi động cơ có tên Box2D .

Câu trả lời quá phức tạp để mô tả đầy đủ ở đây nhưng tổng quan là bạn cần chọn tổng cộng 2 điểm từ hai hình. Sau đó áp dụng lực lượng bồi thường như nhau cho mỗi. Bạn cũng sẽ phải đối phó với một trường hợp góc, trong đó tốt hơn là chỉ sử dụng một điểm hỗ trợ.

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.