Kiểm tra nhanh va chạm giữa hai hộp OBBs

Một phần của tài liệu Sử dụng thực tại ảo mô phỏng điểm đen giao thông trên địa bàn tỉnh Thái Nguyên (Trang 26 - 32)

Hình 2.5. Hộp bao hướng - OBB

Cho hai hình bao OBBs xác định bởi các thông số [C0,A0,A1,A2,a0,a1,a2] và [C1,B0,B1,B2,b0,b1,b2]. Thấy rằng các tình huống mà hai OBBs tiếp xúc với nhau nhưng không cắt nhau chỉ có thể là một trong 6 trường hợp sau đây: mặt - mặt, mặt - cạnh, mặt - đỉnh, cạnh - cạnh, cạnh - đỉnh, đỉnh - đỉnh. Do vậy, tập ứng cử viên các trục cô lập chỉ tối đa là 15 trục sau:

- 3 trục chỉ hướng của hộp bao thứ nhất - 3 trục chỉ hướng của hộp bao thứ hai

- 9 trục tạo bởi tích có hướng của một trục thuộc hộp bao thứ nhất và một trục thuộc hộp bao thứ hai

Mặt khác ta biết rằng, nếu một trục là cô lập thì khi tịnh tiến đến vị trí nào, nó vẫn cô lập. Do vậy, không mất tính tổng tổng quát ta sẽ gọi trục cô lập có vector chỉ phương là V và đi qua tâm C0 của hộp bao thứ nhất và có phương trình như sau:

d= 0 + t*

Trong đó:t – là tham số; có thể là i, j hoặc có thể là i, j trong đó i,j=0,1,2.

Gọi P là một điểm bất kỳ, hình chiếu của P lên đường thẳng d với gốc C0 sẽ là đoạn thẳng C0H xác định như sau (hình 2.6).

Hình 2.6. Hình chiếu của P lên đường thẳng d

Như vậy, khi chiếu 8 đỉnh của hộp bao thứ nhất lên trục cô lập d với gốc C0 thì sẽ thu được 4 cặp đoạn thẳng có độ dài bằng nhau nằm về hai phía so với C0 (hình 16), độ dài của mỗi đoạn thẳng được xác định như sau:

Hình 2.711. Chiếu 8 đỉnh của hình hộp lên trục d

Như vậy, khoảng cách nhỏ nhất chứa 8 đoạng thẳng (2.4.2) sẽ có tâm là C0 và bán kính r0 được xác định như sau:

Tương tự, ta xác định hình chiếu 8 đỉnh của hộp bao thứ hai lên d với gốc C0 như sau.

Với = 1- 0

Chú ý rằng, 8 đoạn thẳng này được nhóm thành 4 cặp đối xứng nhau qua C1. Do vậy, khoảng cách nhỏ nhất chứa 8 đoạng thẳng (2.4.3) sẽ có tâm là C1 và bán kính R1 được xác định như sau:

Đặt R1= r* , tương tự như trên ta suy ra

Hai khoảng cách trên sẽ không giao nhau nếu:

Trong đó: R= C0C1*

Hình 2.8. Kết quả chiếu hai hình hộp lên trục cô lập d

Giải cụ thể các phương trình trên, với mỗi vector i ta có thể viết thành: i=C0i 0 + C1i 1 + C2i 2, với i=0,1,2.

Đặt: A=(A0, A1, A2); B=(B0, B1,B2).

(2.4.5)

(2.4.5)

Từ (2.4) và (2.5) => cij= i * j, hay cij là tích vô hướng của vector i, j. Mặt khác: từ B=C*A => A=CT*B i=ci0 0 + ci1 1 + ci2 2, với i=0,1,2.

Như ta đã biết, tập các trục cô lập ứng cử viên i= { i, j, i, j }, với i, j = 0,1,2. Để tính toán các hệ số R0, R1 ở trên. ta minh họa cho hai trường hợp = i và

= i, j, các trường hợp còn lại tương tự. Xét trường hợp: = 0

Xét trường hợp: = 0, 0

Mặt khác:

Viết lại dưới dạng:

Tiếp tục làm cho các trường hợp còn lại, ta xây dựng được bảng các giá trị cho R, R0, R1 như sau :

Bảng 1. Bảng các giá trị R, R0, R1 được tính toán trước

Một phần của tài liệu Sử dụng thực tại ảo mô phỏng điểm đen giao thông trên địa bàn tỉnh Thái Nguyên (Trang 26 - 32)

Tải bản đầy đủ (PDF)

(72 trang)