Tôi nghĩ rằng bạn có thể đang cố gắn một phím vuông vào một lỗ tròn bằng cách áp dụng SAT theo cách của bạn, ở đây. Rõ ràng, nó không được thiết kế cho các va chạm lõm, và mặc dù tôi khen ngợi nỗ lực của bạn để điều chỉnh nó cho mục đích đó, có những cân nhắc khiến điều này khó có thể hoạt động.
Chủ nghĩa hiện thực
Góc xung và hiệu ứng kích thích là tên của trò chơi ở đây.
Thứ tự của các điểm tiếp xúc rất quan trọng đối với độ phân giải va chạm thực tế. Trong thế giới thực, một trong những điểm đó sẽ luôn tấn công trước một điểm khác. Và chỉ khi mô phỏng thứ tự liên hệ đó và kết quả của từng "phân nhóm" được đại diện bởi điều đó, bạn có thể mong đợi nhận được kết quả thực tế trong mô phỏng. Đây là một trong những lý do tại sao bạn phá vỡ phần lõm của mình thành lồi, ngay từ đầu - nó cho phép phát hiện từng phần của phần nào đã xảy ra trước. Tất nhiên, điều này cũng có thể được mô phỏng theo nhận xét của tôi dưới tiêu đề "Ít hiện thực".
Đồ đạc lồi của bạn kết hợp để cung cấp cho đối tượng cả phác thảo và tâm của nó (và tất nhiên trong các mô phỏng phức tạp hơn, mỗi vật cố cũng có thể ảnh hưởng đến mật độ khác nhau). Lý do tôi đề cập đến điều này là vì trong việc giải quyết các va chạm một cách thực tế, bạn sẽ phải tính toán không chỉ xung tuyến tính mà còn cả xung góc, sau mỗi "va chạm phụ" của các điểm tiếp xúc của bạn. Nó không đơn giản như "đẩy xa" cơ bản mà bạn áp dụng với SAT.
Điều này sau đó thay đổi hoàn toàn bản chất của vấn đề của bạn, bởi vì như bạn có thể thấy, việc sử dụng 2 điểm liên lạc trở lên là vô nghĩa , bởi vì thực sự đó chỉ là vấn đề đầu tiên. Khi bạn đã giải quyết được đầu tiên về xung lực tuyến tính và góc, bạn sẽ cần tính toán lại cho các va chạm tiếp theo, bởi vì các hướng của từng đối tượng sẽ thay đổi. Ngoài ra, việc phát hiện từng liên hệ riêng lẻ trong bước sau đó có thể hoặc không cần phải được thực hiện trong cùng bước đó - tùy thuộc vào thời gian giữa các liên hệ khi điểm tiếp xúc đầu tiên của đối tượng chạm vào, xung lực tuyến tính và góc tiếp theo được áp dụng, lần thứ hai điểm tiếp xúc chạm, và như vậy.
Ít hiện thực
Tất nhiên, giả sử bạn hoàn toàn không quan tâm đến việc giải quyết xung lực góc cạnh, thì điều tốt nhất bạn có thể làm với SAT về cơ bản chính xác là những gì bạn sẽ làm nếu bạn bọc các đa giác này bằng cách sử dụng một cái gì đó như Quét của Graham: Đẩy ra bằng cách tách rời vectơ. Nói cách khác, thật vô nghĩa khi cố gắng giải quyết ba vectơ song song, như bạn đã chứng minh. Đó là lớn nhất trong số đó.
EDIT để trả lời câu hỏi của bạn
Những gì bạn cần làm nếu bạn muốn một cách tiếp cận đơn giản như sau:
Xác định hướng dịch chuyển chính xác . Điều này được thực hiện dễ dàng nhất bằng cách lồi từng cái và xác định các giá trị chuẩn cho trục tách.
Bây giờ bạn cần xác định cường độ dịch chuyển . Tại sao chúng ta không thể sử dụng cường độ như được đưa ra bởi SAT? Bởi vì nếu bạn nghĩ về nó, độ sâu xen kẽ sẽ có khả năng lớn hơn đối với thân lồi, hơn là đối với thân tàu lõm phù hợp của chúng - hãy nghĩ về hai chữ E với răng của chúng! Như bạn đã làm ở trên, tìm tất cả các điểm tiếp xúc cho một bước nhất định, nhưng tìm chúng song song với các quy tắc trục, bởi vì đây là hướng dịch chuyển chính xác. Bây giờ xác định một trong những vectơ chồng chéo song song này là dài nhất. Từ bỏ cái đó, loại bỏ phần còn lại và chuyển sang bước vật lý tiếp theo.