Đỗ Năng Toàn và Đtg<br />
<br />
Tạp chí KHOA HỌC & CÔNG NGHỆ<br />
<br />
120(06): 161 – 169<br />
<br />
TÍNH TOÁN VA CHẠM SỬ DỤNG KỸ THUẬT HỘP BAO THEO HƢỚNG VÀ<br />
ỨNG DỤNG TRONG TUYÊN TRUYỀN GIAO THÔNG<br />
Đỗ Năng Toàn1, Nông Minh Ngọc2*<br />
1<br />
<br />
Viện Công nghệ thông tin, 2Đại học Thái Nguyên<br />
<br />
TÓM TẮT<br />
Va chạm là vấn đề không thể thiếu trong bất kỳ một hệ thống thực tại ảo nào (VR). Do đó, nghiên<br />
cứu các phƣơng pháp phát hiện va chạm là một mục tiêu hàng đầu mà các hệ thống thực tại ảo<br />
quan tâm. Bài báo này trình bày một kỹ thuật phát hiện va chạm dựa trên việc tính toán các hộp<br />
bao theo hƣớng (Oriented Bounding Boxes) và có cải tiến để phát hiện va chạm.<br />
Kỹ thuật nghiên cứu đã đƣợc áp dụng vào hệ thống “Giúp bạn đi an toàn” - một hệ thống thực tại<br />
ảo mô phỏng giao thông. Hệ thống có thể trợ giúp con ngƣời biết cách đi nhƣ thế nào để an toàn<br />
khi tham gia giao thông.<br />
Từ khóa: Phát hiện va chạm, OBBs, AABB, Thực tại ảo.<br />
<br />
GIỚI THIỆU*<br />
Phát hiện va chạm là một trong những vấn đề<br />
trọng tâm của mỗi hệ thống thực tại ảo. Các<br />
đối tƣợng trong mỗi hệ thống đồ hoạ có<br />
những chuyển động riêng của nó, trong khi<br />
chuyển động đó có thể va chạm với đối tƣợng<br />
khác, hoặc có thể va chạm với môi trƣờng,<br />
chƣớng ngại vật,...<br />
Đối với phƣơng pháp phát hiện va chạm theo<br />
các hộp bao thì ta có hai kỹ thuật khác nhau<br />
đó là sử dụng hộp bao có các cạnh song song<br />
với các trục toạ độ (axis-aligned bounding<br />
boxes - AABBs) hoặc là hộp bao theo hƣớng<br />
của đối tƣợng (Oriented Bounding Boxe OBBs ). Việc phát hiện va chạm giữa các hộp<br />
bao AABBs đƣợc thực hiện nhanh chóng<br />
nhƣng sai số lớn, trong khi đó phát hiện va<br />
chạm giữa các hộp bao OBBs tuy phức tạp<br />
hơn nhƣng lại cho sai số nhỏ hơn nhiều.<br />
Bài báo này sẽ trình bày kỹ thuật phát hiện va<br />
chạm dựa vào các hộp bao OBBs và đƣa ra<br />
một cải tiến để giảm thời gian xử lý các hộp<br />
bao. Cuối cùng, chúng tôi đã áp dụng kỹ thuật<br />
trên vào hệ thống “Giúp bạn đi an toàn khi<br />
tham giao thông ” - một hệ thống thực tại ảo mô<br />
phỏng các tình huống giao thông nhằm tuyên<br />
truyền, trợ giúp ngƣời dùng biết cách đi nhƣ thế<br />
nào để an toàn nhất khi tham gia giao thông.<br />
*<br />
<br />
Tel: 0968 595888<br />
<br />
KỸ THUẬT HỘP BAO THEO HƢỚNG<br />
(ORIENTED BOUNDING BOXES)<br />
Định nghĩa hộp bao theo hƣớng (Oriented<br />
Bounding Boxes-OBBs)<br />
Trong phần này, tất cả các vectors đƣợc hiểu<br />
là trong không gian R3.<br />
Một hình hộp OBB bao gồm một tâm C, ba<br />
<br />
<br />
<br />
<br />
<br />
vector A0 , A1 , A2 chỉ hƣớng của hình hộp và<br />
3 hệ số độ dài tƣơng ứng với kích thƣớc của<br />
hình hộp là a0 >0, a1>0, a2>0. Khi đó, 8 đỉnh<br />
của hình hộp sẽ đƣợc xác định nhƣ sau:<br />
2<br />
<br />
C<br />
<br />
<br />
si ai * Ai<br />
<br />
| si | 1, i<br />
<br />
0,1,2.<br />
<br />
(1)<br />
<br />
i 0<br />
<br />
Kỹ thuật phát hiện hộp bao theo hƣớng đƣợc<br />
chia làm hai mức. Mức một là kiểm tra<br />
“nhanh” xem có va chạm nào xảy ra không?<br />
Nếu không có va chạm nào xảy ra thì hệ<br />
thống vẫn làm việc bình thƣờng, có ít nhất<br />
một va chạm xảy ra thì sẽ chuyển sang mức<br />
hai là tìm chính xác điểm va chạm của các<br />
hộp bao.<br />
Định lý: Việc kiểm tra hai khối đa diện lồi<br />
không giao nhau nếu có thể cô lập đƣợc<br />
chúng bằng một mặt phẳng P thoả mãn một<br />
trong hai điều kiện sau:<br />
- P song song với một mặt nào đó của một<br />
trong hai khối đa diện.<br />
- Hoặc là P chứa một cạnh thuộc đa diện thứ<br />
nhất và một đỉnh thuộc đa diện thứ hai.<br />
161<br />
<br />
Đỗ Năng Toàn và Đtg<br />
<br />
Tạp chí KHOA HỌC & CÔNG NGHỆ<br />
<br />
Từ định lý trên, ta rút ra nhận xét sau cho<br />
phép kiểm tra nhanh sự giao nhau của hai hai<br />
khối đa diện lồi: Điều kiện cần và đủ để kiểm<br />
tra hai khối đa diện lồi có giao nhau hay<br />
không là kiểm tra giao nhau giữa các hình<br />
chiếu của chúng lên đƣờng thẳng vuông góc<br />
với mặt phẳng P ở trên, đƣờng thẳng này<br />
đƣợc gọi là trục cô lập. Ta thấy rằng các hộp<br />
bao OBBs là những khối đa diện lồi, bởi vậy<br />
ta hoàn toàn có thể áp dụng định lý trên để<br />
kiểm tra va chạm giữa chúng.<br />
Phƣơng pháp kiểm tra va chạm giữa hai<br />
hộp bao OBBs<br />
Cho hai hình bao OBBs xác định bởi các<br />
thông<br />
số<br />
[C0,A0,A1,A2,a0,a1,a2]<br />
và<br />
[C1,B0,B1,B2,b0,b1,b2]. Ta thấy rằng các tình<br />
huống mà hai OBBs tiếp xúc với nhau (không<br />
cắt nhau) chỉ có thể là một trong 6 trƣờng hợp<br />
sau đây: mặt - mặt, mặt - cạnh, mặt - đỉnh,<br />
cạnh - cạnh, cạnh - đỉnh, đỉnh - đỉnh. Do vậy,<br />
tập ứng cử viên các trục cô lập chỉ tối đa là 15<br />
trục sau:<br />
<br />
120(06): 161 – 169<br />
<br />
P<br />
d<br />
H<br />
C0<br />
Hình 1. Hình chiếu của P lên đường thẳng d<br />
<br />
Nhƣ vậy, khi chiếu 8 đỉnh của hộp bao thứ<br />
nhất lên trục cô lập d với gốc C0 thì sẽ thu<br />
đƣợc 4 cặp đoạn thẳng có độ dài bằng nhau<br />
nằm về hai phía so với C0 (hình 2), độ dài của<br />
mỗi đoạn thẳng đƣợc xác định nhƣ sau :<br />
<br />
<br />
si * ai * Ai ) * V<br />
0<br />
<br />
|<br />
|V |<br />
<br />
2<br />
<br />
<br />
hc(C0<br />
<br />
2<br />
<br />
<br />
si * ai * Ai , d ) |<br />
<br />
i 0<br />
<br />
(<br />
i<br />
<br />
(2)<br />
<br />
<br />
<br />
- 3 trục chỉ hƣớng của hộp bao thứ nhất ( Ai )<br />
<br />
<br />
<br />
- 3 trục chỉ hƣớng của hộp bao thứ hai ( B j )<br />
- 9 trục tạo bởi tích có hƣớng của một trục<br />
thuộc hộp bao thứ nhất và một trục thuộc hộp<br />
<br />
<br />
<br />
bao thứ hai ( Ai<br />
<br />
<br />
B j ).<br />
<br />
Mặt khác, ta biết rằng nếu một trục là trục cô<br />
lập thì khi tịnh tiến đến vị trí nào, nó vẫn là<br />
trục cô lập. Bởi vậy, không mất tính tổng quát<br />
ta sẽ gọi trục cô lập có vector chỉ phƣơng là V<br />
và đi qua tâm C0 của hộp bao thứ nhất, do vậy<br />
nó có phƣơng trình nhƣ sau:<br />
<br />
<br />
<br />
d = C 0 + t* V<br />
<br />
<br />
<br />
<br />
Trong đó: t là tham số. V là Ai hoặc B j<br />
hoặc Ai B j với i, j = 0,1,2.<br />
Gọi P là một điểm bất kỳ, hình chiếu của P<br />
lên đƣờng thẳng d với gốc C0 sẽ là đoạn thẳng<br />
C0H xác định nhƣ sau :<br />
<br />
hc( P, d )<br />
162<br />
<br />
<br />
<br />
( P C0 ) *V<br />
<br />
|V |<br />
<br />
Hình 2. Chiếu 8 đỉnh của hình hộp lên trục cô lập d<br />
<br />
Nhƣ vậy, khoảng cách nhỏ nhất chứa 8 đoạng<br />
thẳng (2) sẽ có tâm có tâm là C0 và bán kính<br />
r0 đƣợc xác định nhƣ sau :<br />
<br />
<br />
<br />
si * ai * Ai ) * V<br />
0<br />
<br />
|}<br />
|V |<br />
<br />
2<br />
<br />
(<br />
r0 = max { |<br />
<br />
i<br />
<br />
Với mọi |si| = 1.<br />
<br />
(3)<br />
<br />
<br />
Đặt R0 = r0* | V | , ta có:<br />
<br />
<br />
R0 = max{| a0* A0 * V + a1* A1 * V +<br />
<br />
a2* A2 *V |<br />
<br />
<br />
<br />
| a0* A0 * V + a1* A1 * V - a2* A2 *V |<br />
<br />
Đỗ Năng Toàn và Đtg<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Tạp chí KHOA HỌC & CÔNG NGHỆ<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Giải cụ thể các phƣơng trình trên. Với mỗi<br />
<br />
| a0* A0 * V - a1* A1 * V + a2* A2 *V |<br />
<br />
<br />
<br />
<br />
| a0* A0 * V - a1* A1 * V - a2* A2 *V |<br />
<br />
<br />
<br />
|-a0* A0 * V + a1* A1 * V + a2* A2 *V |<br />
<br />
<br />
<br />
|-a0* A0 * V + a1* A1 * V - a2* A2 *V |<br />
<br />
<br />
<br />
|-a0* A0 * V - a1* A1 * V + a2* A2 *V |<br />
<br />
<br />
<br />
|-a0* A0 * V - a1* A1 * V - a2* A2 *V |}<br />
<br />
<br />
<br />
= a0*| A0 * V | + a1*| A1 * V | + a2*| A2 *V |<br />
<br />
<br />
<br />
Với D<br />
<br />
Đặt :<br />
<br />
|si| = 1.<br />
<br />
i<br />
<br />
<br />
ci 0 B0<br />
<br />
AT*B = C<br />
<br />
<br />
ci1 B1<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
c i 2 B2<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
= Ai<br />
<br />
<br />
<br />
<br />
B j , các trƣờng hợp còn lại đƣợc tính<br />
<br />
toán tƣơng tự.<br />
<br />
<br />
- Xét trƣờng hợp V = A0 :<br />
<br />
+ R0 = a0*| A0 * V | + a1*| A1 * V | +<br />
a2*| A2 *V | = a0.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
b0*| B0 * V | + b1*| B1 * V | +<br />
<br />
<br />
<br />
b2*| B2 *V | = b0*|c00| + b1*|c01| + b2*|c02|.<br />
<br />
+ R = A0 * D<br />
<br />
<br />
<br />
- Xét trƣờng hợp V = A0 B0 :<br />
<br />
Hai khoảng cách trên sẽ không giao nhau nếu:<br />
<br />
<br />
<br />
| V | *C0C1 > | V | *r0 +<br />
<br />
<br />
<br />
(5)<br />
<br />
Trong đó: R = C0C1* | V | .<br />
<br />
d<br />
<br />
<br />
<br />
<br />
B0 |<br />
<br />
<br />
<br />
<br />
a1*| A1 * A0 B0 | + a2*| A2 * A0 B0 |<br />
<br />
<br />
<br />
A0 B0<br />
Mặt<br />
khác :<br />
=<br />
V<br />
<br />
<br />
<br />
<br />
A0 (c00 A0 c10 A1 c20 A2 )<br />
<br />
<br />
c10 A2 c 20 A1<br />
+<br />
<br />
R0<br />
<br />
=<br />
<br />
a0*| A0 * A0<br />
<br />
R0 = a1*|c20| + a2*|c10|<br />
<br />
<br />
<br />
Hình 3. Kết quả chiếu 2 hình hộp lên trục cô lập d<br />
<br />
<br />
<br />
minh họa cho hai trƣờng hợp V = Ai và V<br />
<br />
<br />
<br />
R0 C0<br />
<br />
(7)<br />
<br />
toán các hệ số R0, R1, R ở trên thì ta sẽ làm<br />
<br />
+ R1 =<br />
<br />
C1 R1<br />
<br />
C =<br />
<br />
<br />
B j }với i, j = 0,1,2. Để tính<br />
<br />
= { Ai , B j , Ai<br />
<br />
<br />
<br />
<br />
<br />
c 21 c 22<br />
<br />
Nhƣ trong tập các trục cô lập ứng cử viên V<br />
<br />
<br />
<br />
R > R0 + R1<br />
<br />
c 20<br />
<br />
(6)<br />
<br />
chính là tích vô hƣớng của hai vector Ai, Bj.<br />
Mặt khác, từ B = C*A A = CT*B <br />
<br />
b2*| B2 *V |.<br />
<br />
<br />
| V | *r1<br />
<br />
c11 c12<br />
<br />
A2 B0 A2 B1 A2 B2<br />
<br />
Từ (6) và (7) suy ra: cij Ai * B j , hay cij<br />
<br />
<br />
<br />
si * bi * Bi ) * V<br />
0<br />
<br />
| } Với mọi<br />
|V |<br />
<br />
C0C1 > r0+r1<br />
<br />
c10<br />
<br />
A2<br />
<br />
R1 = b0*| B0 * V | + b1*| B1 * V | +<br />
<br />
<br />
<br />
viết<br />
<br />
A0 B0 A0 B1 A0 B2<br />
<br />
<br />
Ai<br />
<br />
<br />
<br />
thể<br />
<br />
<br />
c 2i A2 với i =<br />
<br />
A1 * B0 B1 B2 = A1 B0 A1 B1 A1 B2<br />
<br />
(4)<br />
<br />
<br />
<br />
c01 c02<br />
<br />
A0<br />
<br />
Đặt R1 = r1* | V | , tƣơng tự nhƣ trên ta suy ra :<br />
<br />
<br />
<br />
c00<br />
<br />
B = C*A<br />
<br />
2<br />
<br />
r1 = max { |<br />
<br />
có<br />
<br />
A = (A0, A1, A2) và B= (B0, B1, B2)<br />
<br />
C<br />
<br />
Chú ý rằng, 8 đoạn thẳng này đƣợc nhóm<br />
thành 4 cặp đối xứng nhau qua C1. Do vậy,<br />
khoảng cách nhỏ nhất chứa 8 đoạng thẳng (4)<br />
sẽ có tâm là C1 và bán kính R1 đƣợc xác định<br />
nhƣ sau :<br />
<br />
(<br />
<br />
<br />
c1i A1<br />
<br />
0,1,2.<br />
<br />
<br />
<br />
<br />
(<br />
s<br />
*<br />
b<br />
*<br />
B<br />
) *V<br />
2<br />
<br />
V *D i 0 i i i<br />
|<br />
<br />
si * bi * Bi , d )<br />
|<br />
|V |<br />
|V |<br />
i 0<br />
<br />
C0<br />
<br />
ta<br />
<br />
<br />
c0i A0<br />
<br />
<br />
thành: Bi<br />
<br />
2<br />
<br />
<br />
C1<br />
<br />
<br />
Bi<br />
<br />
vector<br />
<br />
Tƣơng tự, ta xác định hình chiếu 8 đỉnh của<br />
hộp bao thứ hai lên d với gốc C0 nhƣ sau.<br />
<br />
<br />
hc(C1<br />
<br />
120(06): 161 – 169<br />
<br />
<br />
<br />
<br />
<br />
+ R = V * D = (c10 A2<br />
<br />
+<br />
<br />
=<br />
=<br />
<br />
<br />
<br />
c 20 A1 ) * D<br />
163<br />
<br />
Đỗ Năng Toàn và Đtg<br />
<br />
<br />
<br />
<br />
<br />
Tạp chí KHOA HỌC & CÔNG NGHỆ<br />
<br />
<br />
<br />
<br />
<br />
+ R1 = b0*| B0 * V | + b1*| B1 * V | +<br />
<br />
<br />
b2*| B2 *V |.<br />
<br />
<br />
<br />
Ta có viết lại V dƣới dạng:<br />
<br />
<br />
<br />
<br />
V = A0 B0 =<br />
<br />
<br />
<br />
<br />
(c00 B0 c01B1 c02 B2 ) B0 = <br />
<br />
c01B2 c02 B1<br />
<br />
<br />
<br />
<br />
B0 * V = B0 * ( c01B2 c02 B1 ) = 0<br />
<br />
<br />
<br />
B1 * V = B1 * ( c01B2 c02 B1 ) = c02<br />
<br />
<br />
<br />
<br />
B2 *V = B2 * ( c01B2 c02 B1 ) = -c01<br />
R1 = b1*|c02|+ b2*|c01|<br />
Tiếp tục, ta xây dựng đƣợc bảng các giá trị<br />
cho R, R0, R1 nhƣ thể hiện tại bảng 1.<br />
Tính toán điểm va chạm giữa hai OBBs<br />
Khi có va chạm giữa các OBBs xảy ra, ta sẽ<br />
thực hiện việc tìm chính xác điểm va chạm.<br />
<br />
Đối với hai hộp bao, nếu chúng va chạm với<br />
nhau ở dạng đỉnh - đỉnh, đỉnh - cạnh, cạnh cạnh, đỉnh - mặt thì điểm tiếp xúc là duy nhất.<br />
Nhƣng nếu chúng va chạm với nhau ở dạng<br />
mặt - mặt, cạnh - mặt thì sẽ có vô số điểm<br />
tiếp xúc, khi đó chúng ta chỉ cần đƣa ra một<br />
điểm bất kỳ là đƣợc.<br />
Ý tưởng để tìm thời điểm va chạm như sau:<br />
Mỗi khi ta thực hiện công việc kiểm nhanh va<br />
chạm ở mức thứ nhất, nếu tìm đƣợc một trục<br />
cô lập thì ta sẽ ghi lại nhãn thời gian cho trục<br />
cô lập đó. Nếu không tìm đƣợc một trục cô<br />
lập nào thì có nghĩa là hai hộp bao đã va<br />
chạm với nhau, khi đó nhãn thời gian đƣợc<br />
gán cho trục cô lập ở lần kiểm tra liền trƣớc<br />
sẽ là thời điểm đầu tiên mà hai hộp bao va<br />
chạm nhau, gọi T là nhãn thời gian đó. Khi<br />
đó, ta có thế coi nhƣ R = R0+R1(thời điểm hai<br />
hình hộp tiếp xúc nhau).<br />
<br />
Bảng 1. Các giá trị R, R0, R1<br />
<br />
164<br />
<br />
120(06): 161 – 169<br />
<br />
Đỗ Năng Toàn và Đtg<br />
<br />
Tạp chí KHOA HỌC & CÔNG NGHỆ<br />
<br />
Gọi P là điểm tiếp xúc của hai hộp bao thì suy<br />
ra tồn tại một vector x = {x0, x1, x2} và y =<br />
{y0, y1, y2} sao cho:<br />
<br />
<br />
xi * Ai<br />
<br />
2<br />
<br />
<br />
D<br />
<br />
2<br />
<br />
i 0<br />
<br />
bj và i,j = 0,1,2.<br />
<br />
(8)<br />
<br />
Việc tìm điểm va chạm sẽ phụ thuộc vào trục<br />
cô lập V ở thời điểm T là trục nào trong số<br />
15 trục cô lập ứng cử viên. Ta xét 3 trƣờng<br />
hợp sau.<br />
<br />
<br />
<br />
<br />
V là vector Ai :Nhân hai vế của (8) với Ai<br />
<br />
ta thu đƣợc:<br />
<br />
<br />
<br />
2<br />
<br />
<br />
y j * Ai B j =<br />
<br />
<br />
<br />
Sign( Ai * D )*(R0+R1) +<br />
<br />
<br />
<br />
bj nên ta có:<br />
<br />
Do vậy, ta chỉ cần chọn một giá trị yj thuộc<br />
đoạn trên.<br />
<br />
<br />
<br />
V là vector Bi :Tƣơng tự nhƣ trƣờng hợp<br />
<br />
trên, ta tính đƣợc.<br />
0<br />
<br />
* bi<br />
<br />
xj<br />
<br />
0,1,2.<br />
<br />
Nếu cji = 0, nhân hai vế của (6) với Ai ta có:<br />
<br />
2<br />
<br />
<br />
<br />
x k * c kj<br />
<br />
Mặt khác, vì |yj|<br />
<br />
yi<br />
<br />
j 0<br />
<br />
<br />
<br />
2<br />
k 0<br />
<br />
Nếu cji<br />
<br />
xi = Ai * D<br />
<br />
<br />
<br />
yj = - B j * D<br />
<br />
<br />
y j * B j với |xi| ai, |yj|<br />
<br />
j 0<br />
<br />
<br />
<br />
<br />
<br />
120(06): 161 – 169<br />
<br />
y j * cij<br />
<br />
* Sign(c ji ) * a j<br />
<br />
j<br />
<br />
j 0<br />
<br />
= Sign( Ai * D ) xi = *(R0+R1) +<br />
<br />
Đặt<br />
2<br />
<br />
y j * cij . Thay giá trị các R0, R1 tại bảng 1:<br />
<br />
Tƣơng tự nhƣ trên, ta có:<br />
<br />
j 0<br />
<br />
2<br />
<br />
b j * | ci j | ) +<br />
<br />
xi = *(ai +<br />
j 0<br />
<br />
cả hai vế với<br />
<br />
2<br />
<br />
y j * cij Nhân<br />
j 0<br />
<br />
ta đƣợc.<br />
2<br />
<br />
2<br />
<br />
b j * | ci j | +<br />
<br />
(ai- *xi) +<br />
j 0<br />
<br />
y j * cij = 0<br />
j 0<br />
<br />
<br />
<br />
hợp V<br />
<br />
2<br />
<br />
| cij | *(b j<br />
<br />
* Sign(cij ) * y j ) = 0 (9)<br />
<br />
j 0<br />
<br />
Ta<br />
<br />
thấy:<br />
<br />
(b j<br />
<br />
<br />
(ai- *xi)<br />
<br />
0<br />
<br />
và<br />
<br />
<br />
B j : Để dễ trình bày,<br />
<br />
ai<br />
<br />
* xi<br />
<br />
bj<br />
<br />
* Sign(cij ) * y j<br />
0<br />
<br />
xi<br />
<br />
* ai<br />
<br />
0<br />
<br />
* Sign(cij ) * bj<br />
<br />
<br />
c01B2<br />
<br />
=<br />
<br />
<br />
<br />
<br />
<br />
A0 B0 = c10 A2 c 20 A1 =<br />
<br />
c02 B1 , các trƣờng hợp khác sẽ<br />
<br />
đƣợc tính tƣơng tự.<br />
<br />
<br />
B0 ta đƣợc:<br />
<br />
<br />
<br />
x2*c10 - x1*c20 = ( A0 B0 ) * D +<br />
2<br />
<br />
<br />
<br />
y j * B j * ( c01B2 c02 B1 )<br />
j 0<br />
<br />
<br />
<br />
x2*c10 - x1*c20 = ( A0 B0 ) * D + y1*c02 <br />
<br />
Nhân hai vế (8) với A0<br />
<br />
* Sign(cij ) * y j ) 0<br />
<br />
Nếu cij<br />
<br />
yj<br />
<br />
<br />
<br />
V là vector Ai<br />
<br />
chúng ta sẽ làm minh hoạ cho một trƣờng<br />
<br />
(ai- *xi)<br />
+<br />
<br />
Khi đó, chọn xj thuộc đoạn sau làm điểm tiếp<br />
xúc:<br />
<br />
0<br />
<br />
y2*c01<br />
<br />
j 0,1,2.<br />
<br />
Nếu cij = 0 (ứng với trƣờng hợp cạnh va chạm<br />
mặt, mặt va chạm mặt). Khi đó, nhân hai vế<br />
của (8) với B j ta đƣợc:<br />
<br />
(10)<br />
<br />
Chú ý rằng, theo hàng 7 trong bảng 1 thì:<br />
<br />
<br />
| R | | ( A0<br />
<br />
<br />
<br />
B0 ) * D | R0<br />
<br />
R1<br />
<br />
a1* | c20 | a2 * | c10 | b1* | c02 | b2 * | c01 |<br />
165<br />
<br />