Tải bản đầy đủ (.pdf) (12 trang)

Raycasting kiểm tra giao nhau giữa đa giác và đường thẳng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (181.48 KB, 12 trang )

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



×