Thử nghiệm giao cắt hộp giới hạn đối tượng 2D


9

Tôi có hai hộp giới hạn căn chỉnh đối tượng (nghĩa là không căn chỉnh trục, chúng xoay với đối tượng). Tôi muốn biết nếu hai hộp đối tượng trùng nhau. ( Chỉnh sửa: lưu ý - Tôi đang sử dụng thử nghiệm hộp giới hạn theo trục để nhanh chóng loại bỏ các đối tượng ở xa, vì vậy sẽ không có vấn đề gì nếu quy trình quad chậm hơn một chút. )

Hộp của tôi được lưu trữ dưới dạng bốn điểm x, y. Tôi đã tìm kiếm xung quanh để tìm câu trả lời, nhưng tôi không thể hiểu được tên biến và thuật toán trong các ví dụ để áp dụng chúng cho trường hợp cụ thể của mình.

Ai đó có thể giúp tôi chỉ ra cách này sẽ được thực hiện, một cách rõ ràng và đơn giản không? Cảm ơn. (Ngôn ngữ cụ thể không quan trọng, mã giả kiểu C là OK.)

Câu trả lời:


5

Nếu bạn biết nơi để tìm nó là dễ dàng. Bạn đang tìm kiếm oobb. Truy cập tại đây: http://www.realtimerendering.com/intersections.html .
Ở đó bạn tìm thấy liên kết đến trang web này http://www.geometrictools.com/LibMathatures/Intersection/Intersection.html
và ở đó tìm mã chính xác. (ctrl + f "Giao nhau của hộp (2D)")

Nó sử dụng SAT và chứa mã nguồn và bài viết.


Thuật toán được mô tả bởi geometrictools là thuật toán mà tôi đã chỉ ra.
Jari Komppa

Tôi hiểu rằng đây là 4 năm trước, nhưng luôn giải thích một downvote và tất cả những thứ đó. Điều này khá hay "Câu trả lời của bạn là ở một lâu đài khác", và bây giờ câu trả lời thậm chí không có trong trường hợp thứ hai.
Yann

2

Cách dễ dàng hơn có lẽ là kiểm tra từng đỉnh của hộp B so với mỗi bên của hộp A (tính khoảng cách đã ký). Bằng cách này, bạn có thể phân loại từng đỉnh là "phía trước" hoặc "phía sau" phân khúc.

Nếu tất cả các đỉnh của B được phân loại là "ở phía trước" của một trong các đoạn của A, thì B và A không trùng nhau; nếu không, họ làm.

Điều này có phần liên quan, do đó bạn có thể đạt được một số hiệu suất bằng cách thực hiện kiểm tra vòng tròn trước, bằng cách sử dụng các vòng tròn giới hạn của hình vuông (tầm thường để tính toán)


Lần đầu tiên tôi thực hiện kiểm tra hộp giới hạn theo trục để nhanh chóng loại bỏ các vật thể ở xa ... bạn có thêm chi tiết nào về thử nghiệm tứ giác không?
AshleyBrain

tạm thời xoay cả hai hình tứ giác với cùng một biến đổi sao cho một trong số chúng kết thúc trục thẳng hàng ... sau đó sử dụng bài kiểm tra SAT như notabebe đã đề cập. khi kết quả được tìm thấy, đảo ngược vòng quay để lấy lại chúng.
Steve H
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.