Bài giảng Đồ họa máy tính - Tuần 8: Phương pháp xén hình - Lý Quốc Ngọc
Đồ họa máy tính
Tuần 8: Phương pháp XÉN HÌNH
Nội dung
8.1. Xén đoạn thẳng vào hình chữ nhật
8.2. Xén đa giác vào hình chữ nhật
8.3. Xén đa giác vào đa giác lồi
2
TS. Lý Quốc Ngọc
3/24/2014
8.1. Xén đoạn thẳng vào HCN
8.1.1. Phát biểu bài toán
Đặc tả miền trong của HCN là:
D
(x, y)R2 | xmin x xmax, ymin y ymax
Đoạn thẳng L qua (x1,y1), (x2,y2) có dạng:
x x1 (x2 x1).t
y y1 (y2 y1).t
t [0,1]
3
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.1. Phát biểu bài toán
Phần giao DL là nghiệm của hệ phương trình:
xmin x1 (x2 x1).t xmax
y min y1 (y2 y1).t y max (1)
0 t 1
4
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.1. Phát biểu bài toán
Gọi T là tập nghiệm của hệ phương trình (1),
DL
T [t1,t2 ],
T
T
Nếu
Nếu
thì
thì
2
(x, y) R , x x1 (x2 x1).t,
D L
y y1 (y2 y1).t,
t1 t t2
5
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.2. Phương pháp Cohen-Sutherland
- Xét vị trí tương quan giữa L và D:
x1, x2 xmin
x1, x2 xmax
y1, y2 y min
y1, y2 y max
(1)
L nằm ngoài D
6
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.2. Phương pháp Cohen-Sutherland
- Xét vị trí tương quan giữa L và D:
xmin x1, x2 xmax
y min y1, y2 y max
(2)
L nằm trong D
L cắt D nếu 2 đầu mút không thỏa (1) và (2)
7
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.2. Phương pháp Cohen-Sutherland
Để xét vị trí tương quan giữa L và D, Cohen-
Sutherland để xuất sử dụng mã vùng.
Mã vùng của một điểm P là Code(P) gồm 4
bits: Left(P), Right(P), Below(P), Above(P)
được xác định như sau:
8
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.2. Phương pháp Cohen-Sutherland
1 x xmin
1 x xmax
Left(P)
Right(P)
0 x xmin
0 x xmax
1 y y min
1 y y max
Below(P)
Above(P)
0 y ymin
0 y ymax
9
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.2. Phương pháp Cohen-Sutherland
Nếu L cắt D, giả sử
(A ở ngoài HCN).
Code(A) 0000
Ta thực hiện lặp quá trình sau cho đến khi đoạn thẳng
tạo sinh nằm ngoài hoặc nằm trong D.
- Nếu Left(A)=1: cập nhật A bởi nghiệm của hệ
phương trình
x xmin
yB y
y yA
A (x xA )
xB xA
10
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.2. Phương pháp Cohen-Sutherland
- Nếu Right(A)=1: cập nhật A bởi nghiệm của hệ
phương trình
x xmax
yB y
y yA
A (x xA )
xB xA
11
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.2. Phương pháp Cohen-Sutherland
- Nếu Below(A)=1: cập nhật A bởi nghiệm của hệ
phương trình
y y min
xB xA
x xA
(y yA )
yB yA
12
TS. Lý Quốc Ngọc
8.1. Xén đoạn thẳng vào HCN
8.1.2. Phương pháp Cohen-Sutherland
- Nếu Above(A)=1: cập nhật A bởi nghiệm của hệ
phương trình
y y max
xB xA
x xA
(y yA )
yB yA
13
TS. Lý Quốc Ngọc
8.2. Xén đa giác vào HCN
8.2.1. Phát biểu bài toán
Đặc tả miền trong của HCN là:
D
(x, y)R2 | xmin x xmax, ymin y ymax
Đa giác P có các đỉnh P1(x1,y1),…, Pn(xn,yn) gồm
các đoạn thẳng có Pi Pi+1modn dạng:
x x (x x ).t
i
i1modn
i
i
ti [0,1]; i[1,n]
y yi (yi1modn yi ).ti
14
TS. Lý Quốc Ngọc
8.2. Xén đa giác vào HCN
8.2.1. Phát biểu bài toán
DP
Phần giao
là miền trong được tạo bởi tập các
đỉnh của D thuộc đa giác P và tập điểm là nghiệm của
các hệ phương trình sau
xmin x (x x ).t xmax
i
i1modn
i
i
y min y (y y ).t y max i[1,n]
i
i1mod
i
i
0 ti 1
15
TS. Lý Quốc Ngọc
8.2. Xén đa giác vào HCN
8.2.2. Phương pháp Sutherland-Hodgeman
Giai đoạn 1. Xác định tập điểm ứng viên tạo nên
DP
phần giao
-Nếu tất cả các đỉnh của P đều nằm trên D (hoặc trong D)
thì kết quả chính là đa giác.
-Nếu ngược lại (tồn tại ít nhất 1 điểm của P nằm ngoài D)
. Duyệt lần lượt các cạnh của P khởi đầu từ đỉnh (x1,y1).
. Với mỗi cạnh của P, ta có các trường hợp sau:
. Nếu cả 2 đỉnh đều nằm ngoài HCN thì
. Nếu cạnh nằm ngoài HCN thì không lưu đỉnh.
. Nếu cạnh cắt HCN thì lưu 2 giao điểm.
16
TS. Lý Quốc Ngọc
8.2. Xén đa giác vào HCN
8.2.2. Phương pháp Sutherland-Hodgeman
. Với mỗi cạnh của P, ta có các trường hợp sau:
. Nếu Pi nằm ngoài, Pi+1modn nằm trong: lưu giao điểm I
và Pi+1modn
. Cả hai đỉnh nằm trong D: lưu Pi và Pi+1modn
.
. Nếu Pi nằm trong, Pi+1modn nằm ngoài: lưu Pi và I
17
TS. Lý Quốc Ngọc
8.2. Xén đa giác vào HCN
8.2.2. Phương pháp Sutherland-Hodgeman
Giai đoạn 2. Bổ sung tập điểm ứng viên tạo nên
phần giao
DP
Sau khi duyệt qua tất cả các cạnh của P, ta có một dãy
các đỉnh mới phát sinh {Q}, (giải sử {Q} )
i[1,m]
i
i
Nếu trong dãy các đỉnh mới này, có hai đỉnh liên tiếp
không nằm trên cùng một cạnh của D. giả sử là Qi
và Qi+1 . Đi dọc theo các cạnh của D từ Qi đến Qi+1
để tìm tất cả các đỉnh của D nằm trong P rồi bổ
sung chúng vào giữa Qi và Qi+1 .
18
TS. Lý Quốc Ngọc
8.2. Xén đa giác vào HCN
8.2.2. Phương pháp Sutherland-Hodgeman
Giai đoạn 2. Bổ sung tập điểm ứng viên tạo nên phần
giao
DP
Tập điểm được bổ sung cấu thành nên phần giao
DP
Nếu tậo điểm này rỗng:
. Nếu tồn tại một đỉnh D nằm trong P thì kết quả D.
. Ngược lại kết quả là rỗng
19
TS. Lý Quốc Ngọc
8.3. Xén đa giác vào đa giác lồi
8.3.1. Phát biểu bài toán
Cho trước đa giác lồi Pconvex.
Đa giác bị cắt P có các đỉnh P1(x1,y1),…, Pn(xn,yn)
gồm các đoạn thẳng có Pi Pi+1modn dạng:
x x (x x ).t
i
i1modn
i
i
ti [0,1]; i[1,n]
y yi (yi1modn yi ).ti
20
TS. Lý Quốc Ngọc
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Đồ họa máy tính - Tuần 8: Phương pháp xén hình - Lý Quốc Ngọc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- bai_giang_do_hoa_may_tinh_tuan_8_phuong_phap_xen_hinh_ly_quo.pdf