Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Ray Casting
Kiểm tra giao nhau giữa đa giác và đường thẳng
Võ Đình Phong
Khoa Công nghệ thông tin
Đại học Khoa học tự nhiên TP.HCM
Seminar lần I
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Nội dung
1
Bài toán
2
Kiến thức cơ sở
3
Thuật toán
4
Ví dụ
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Phát biểu đề bài
Trong không gian 2 cho các đa giác lồi đôi một không giao
nhau, và một điểm A nằm ngoài tất cả các đa giác.
Nối A với tất cả các đỉnh của các đa giác để tạo thành các
đoạn thẳng.
Với mỗi đoạn thẳng, xác định nó có giao với ít nhất một đa
giác hay không?
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Hình dung bài toán
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Đường thẳng, đoạn thẳng, tia
Đoạn thẳng: giới hạn bởi 2 điểm đầu mút, vô hướng.
Đường thẳng: không giới hạn, vô hướng.
Tia: có điểm gốc, hữu hướng.
A
l
B
t
A
B
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Vector pháp tuyến
Cho vector a = (ax , ay ), ta có vector a⊥ = (−ay , ax ) vuông góc
với a theo ngược chiều kim đồng hồ.
a⊥
a
−a⊥
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Phương trình đường thẳng dạng tham số
Phương trình đường thẳng L(t) có A ∈ L(t), vector chỉ phương c,
¯ được xác định
và tham số thực t. Nếu c = AB thì đoạn thẳng AB
với t ∈ [0, 1].
y
t>0
t=1
B
c
t=0
A
L(t) = A + ct
t<0
x
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Giao của hai đường thẳng
Cần tìm giá trị thit tại giao điểm?
Vị trí của giao điểm là L(thit ) = A + cthit .
Phương trình sau thỏa mãn n · (A + cthit − B) = 0.
Đáp án thit =
n·(B−A)
n·c
n
c
A
hit point
B
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Vector pháp tuyến VS. vector chỉ phương
n · c > 0: tia L(t) về cùng một phía với n.
n · c = 0: tia L(t) song song với n.
n · c < 0: tia L(t) “đối đầu” với n.
n
n
c
A
Võ Đình Phong
c
A
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Bài toán tìm giao điểm
Tia L(t) giao với đa giác P tại đâu?
Với ràng buộc P lồi, L(t) cắt P tại hai điểm với “điểm vào”
tại tin và “điểm ra” tại tout .
Áp dụng công thức tính thit cho tin và tout .
Nếu tin < tout : L(t) giao P.
Nếu tin >= tout : L(t) không giao P.
n
P0
P1
c
A
P2
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Thuật toán kiểm tra giao nhau
tin ← 0
tout ← 1
foreach Li ∈ P
thit ← GetHit(L(t), Li )
if nVi · cL(t) < 0
tin ← max(tin , thit )
elseif nVi · cL(t) > 0
tout ← max(tout , thit )
else return 0
endif
if tin > tout
return 0
endif
endfor
return 1
Võ Đình Phong
Trí tuệ nhân tạo
Bài toán
Kiến thức cơ sở
Thuật toán
Ví dụ
Ví dụ
0
L0
L5
0.2
A
0.28
0.83
L4
0.66
1
L1
C
3.4
L3
L2
Võ Đình Phong
Trí tuệ nhân tạo
−4.7