Chương 4:
HIỂN THỊ
ĐỐI TƯỢNG HAI CHIỀU
ThS.GVC Tô Oai Hùng
2
Nội Dung
1.
Quy trình hiển thị đối tượng hai chiều
•
Một số
khái niệm.
•
Hệ
tọa độ
quan sát và
hệ
tọa độ
thiết
bị
chuẩn.
•
Chuyển đổi từ
cửa sổ
sang vùng
quan sát.
•
Các thuật toán xén hình.
2. Các thuật toán xén điểm, đọan thẳng
•
Thuật toán Cohen –
Sutherland.
•
Thuật toán Liang –
Barsky.
3.
Thuật toán xén đa giác.
ThS.GVC Tô Oai Hùng
3
Một Số
Khái Niệm
•
Cửa sổ
(window) là
một vùng được
chọn để
hiển thị
trong hệ
tọa độ
thế
giới
thực.
•
Vùng quan sát (viewport) là
vùng được
chọn trên thiết bị
hiển thị để
các đối
tượng ở
trong cửa sổ
ánh xạ
vào.
•
Cửa sổ
xác định cái gì được thấy trên
thiết bị
hiển thị, còn vùng quan sát xác
định nơinào nó
sẽ được hiển thị.
•
Quá
trình ánh xạ
một vùng định nghĩa
trong hệ
tọa độ
thế
giới thực vào một
vùng trong hệ
tọa độ
thiết bị được gọi
là
phép biến đổi hệ
quan sát (viewing
transformation).
ThS.GVC Tô Oai Hùng
4
Một Số
Khái Niệm
ThS.GVC Tô Oai Hùng
5
Quy Trình Hiển Thị
Đối Tượng Hai Chiều
- Hệ
tọa độ
cục bộ
(modeling coordinate -
MC ).
- Hệ
tọa độ
thế
giới thực (world coordinate -
WC).
- Hệ
tọa độ
quan sát (viewing coordinate -
VC).
- Hệ
tọa độ
thiết bị
chuẩn (normalized device
coordinate -
NDC).
- Hệ
tọa độ
thiết bị
(device coordinate -
DC).
ThS.GVC Tô Oai Hùng
6
Hệ
Tọa Độ
Quan Sát
•
Thiết lập hệ
tọa độ
quan sát:
- Chọn điểm P
0
(x
0
, y
0
) trong hệ
tọa độ
thế
giới thực làm gốc tọa độ.
- Dùng vector V mô tả hướng quan sát
để định hướng cho trục tung y
v
của
hệ
tọa độ. Vector V được gọi là
view-
up vector.
- Từ
V tính được các vector đơn vị
v(v
x
, v
y
) và
u(u
x
,u
y
) tương ứng cho
các trục tung y
0
và
trục hoành x
0
của
hệ
tọa độ.
ThS.GVC Tô Oai Hùng
7
Hệ
Tọa Độ
Quan Sát
ThS.GVC Tô Oai Hùng
8
Hệ
Tọa Độ
Quan Sát
•
Phép biến đổi hệ
tọa độ
quan sát sang
hệ
tọa độ
thế
giới thực
- Các vector đơn vị
tạo thành hai dòng
đầu tiên của ma trận quay M
r
để đưa
các trục x
v
, y
v
trùng với các trục x
w
,y
w
của hệ
trục tọa độ
thế
giới thực.
ThS.GVC Tô Oai Hùng
9
Hệ
Tọa Độ
Quan Sát
•
Ma trận của phép chuyển một điểm
trong hệ
tọa độ
thế
giới thực sang hệ
tọa độ
quan sát là
tích của hai ma trận
của các phép biến đổi:
- Phép tịnh tiến gốc tọa độ
hệ
quan sát
về
gốc tọa độ
hệ
tọa độ
thế
giới thực.
- Phép quay đưa các trục của hệ
tọa
độ
quan sát trùng với các trục của hệ
tọa độ
thế
giới thực.
RTVCWC,
MMM
=
ThS.GVC Tô Oai Hùng
10
Hệ
Tọa Độ
Thiết Bị
Chuẩn
•
Do cách định nghĩa của các hệ
tọa độ
thiết bị
khác nhau, nên một hình ảnh
hiển thị được trên thiết bị
này chưa
chắc hiển thị
chính xác trên thiết bị
kia.
•
Chính vì
vậy cần phải xây dựng hệ
tọa
độ
thiết bị
chuẩn đại diện chung cho
các thiết bị để
có
thể
mô tả
các hình ảnh
của thế
giới thực mà
không phụ
thuộc
vào bất cứ
thiết bị
nào.
•
Trong hệ
tọa độ
này, các tọa độ
x, y sẽ
được gán các giá
trị
trong khoảng từ 0
đến 1. Như vậy, vùng không gian của hệ
tọa độ
thiết bị
chuẩn chính là
hình
ThS.GVC Tô Oai Hùng
11
Hệ
Tọa Độ
Thiết Bị
Chuẩn
vuông đơn vị
có
góc trái dưới là
(0,0) và
góc phải trên (1,1).
ThS.GVC Tô Oai Hùng
12
Chuyển Đổi Từ
Cửa Sổ
Sang
Vùng Quan Sát
•
Phép chuyển đổi từ
cửa sổ
sang vùng
quan sát bao gồm 3 phép biến đổi:
- Phép tịnh tiến để
dịch chuyển góc
trái dưới về
gốc tọa độ:
ThS.GVC Tô Oai Hùng
13
Chuyển Đổi Từ
Cửa Sổ
Sang
Vùng Quan Sát
- Phép biến đổi tỉ
lệ để
chỉnh kích
thước của cửa sổ
về
cùng kích thước
của vùng quan sát:
ThS.GVC Tô Oai Hùng
14
Chuyển Đổi Từ
Cửa Sổ
Sang
Vùng Quan Sát
- Cuối cùng là
phép tịnh tiến dịch
chuyển về
góc trái dưới của vùng
quan sát:
ThS.GVC Tô Oai Hùng
15
Chuyển Đổi Từ
Cửa Sổ
Sang
Vùng Quan Sát
•
Ma trận của phép biến đổi:
(
)
()
minminTV
minmax
minmax
minmax
minmax
S
minminTWWV
v,uM
yy
vv
,
xx
uu
M
y,xMM
×
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
−
−
−
−
×
−
−
=
ThS.GVC Tô Oai Hùng
16
Các Thuật Toán Xén Hình
•
Thao tác loại bỏ
các phần hình ảnh nằm
ngoài một vùng cho trước được gọi là
xén hình (clipping). Vùng được dùng để
xén hình gọi là
cửa sổ
xén (clip
window).
•
Tùy thuộc vào từng ứng dụng cụ
thể
mà
cửa sổ
xén có
thể
có
dạng là đa giác
hay là đường cong khép kín. Trong
phần này chúng ta sẽ
khảo sát các
thuật toán xén hình vào cửa sổ
xén là
hình chữ
nhật trước, sau đósẽ
khảo sát
các cửa sổ
xén có
dạng khác. Để đơn
giản, trong các thuật toán xén hình, cửa
sổ
xén được gọi là
cửa sổ.
ThS.GVC Tô Oai Hùng
17
Các Thuật Toán Xén Điểm,
Đoạn Thẳng
•
Giả
sử
cửa sổ
xén là
cửa sổ
hình chữ
nhật có
tọa độ
của các điểm dưới bên
trái và điểm trên bên phải lần lượt là
(x
min
, y
min
) và
(x
max
, y
max
).
•
Một điểm P(x, y) được coi là
nằm bên
trong cửa sổ
nếu thỏa hệ
bất phương
trình:
x
min
≤
x ≤
x
max
y
min
≤
y ≤
y
max
•
Bây giờ, ta sẽ
xét bài toán xén đoạn
thẳng được cho bởi hai điểm P
1
(x
1
, y
1
)
và
P
2
(x
2
, y
2
) vào cửa sổ
HCN trên.
ThS.GVC Tô Oai Hùng
18
Xén Điểm, Đoạn Thẳng
•
Ý tưởng chung của các thuật toán xén
đoạn thẳng đólà:
- Loại bỏ
phép toán tìm giao điểm giữa
đoạn thẳng với biên của cửa sổ
một
cách nhanh nhất đối với các đoạn
thẳng đặc biệt như nằm hoàn toàn
ThS.GVC Tô Oai Hùng
19
Xén Điểm, Đoạn Thẳng
bên trong hoặc hoàn toàn bên ngoài
cửa sổ
(ví
dụ như đoạn P
1
P
2
và
P
3
P
4
).
- Đối với các đoạn thẳng có
khả năng
cắt cửa sổ, cần phải đưa ra cách tìm
giao điểm thật nhanh.
•
Nhận xét:
- Các đoạn thẳng mà
có
cả hai điểm
nằm hoàn toàn trong cửa sổ
thì
cả
đoạn thẳng đónằm trong cửa sổ, đây
cũng là
kết quả
sau khi xén (ví
dụ,
P
1
P
2
).
- Các đoạn thẳng mà
có hai điểm nằm
về
cùng một phía của cửa sổ
thì
luôn
ThS.GVC Tô Oai Hùng
20
Xén Điểm, Đoạn Thẳng
nằm ngoài cửa sổ
và
sẽ
bị
mất sau
khi xén (ví
dụ, P
3
P
4
).
- Các đoạn thẳng có
khả năng cắt cửa
sổ
(ví
dụ, P
5
P
6
và
P
7
P
8
) để
việc tìm
giao điểm nhanh cần rút gọn việc tìm
giao điểm với những biên cửa sổ
không cần thiết để
xác định phần
giao nếu có
của đoạn thẳng và
cửa
sổ.
- Người ta thường sử
dụng phương
trình tham số
của đường thẳng trong
việc tìm giao điểm giữa đoạn thẳng
với cửa sổ:
ThS.GVC Tô Oai Hùng
21
Xén Điểm, Đoạn Thẳng
- Trong đó, 0 ≤
t ≤
1. Nếu giao điểm ứng
với giá
trị
t nằm ngoài đoạn [0,1] thì
giao điểm đósẽ
không thuộc về
cửa
sổ.
•
Nhắc lại: Phương trình tham số
của
đường thẳng:
()
()
⎩
⎨
⎧
+−=
+−=
21
21
tyyt1y
txxt1x
1t0 ),yy(Dy tDyy)yt(yyy
)xx(Dx tDxx)xt(xxx
121121
121121
≤≤−=+=−+=
−
=
+
=
−
+=
ThS.GVC Tô Oai Hùng
22
Thuật Toán Cohen-Sutherland
•
Đây là
một trong những thuật toán ra
đời sớm nhất và
thông dụng nhất.
•
Khái niệm mã vùng:
- Một con số
4 bit nhị
phân gọi là
mã
vùng sẽ được gán cho mỗi vùng để
mô tả
vị
trí tương đối của vùng đóso
với cửa sổ.
- Bằng cách đánh số
từ 1 đến 4 theo
thứ
tự
từ
phải qua trái, các bit của
mã vùng được dùng theo quy ước
như sau để
chỉ
một trong bốn vị
trí
tương đối của vùng so với cửa sổ
bao gồm: Trái (bit 1), phải (bit 2), trên
(bit 3), dưới (bit 4):
ThS.GVC Tô Oai Hùng
23
Thuật Toán Cohen-Sutherland
•
Thuật toán: Gán mã vùng tương ứng
cho các điểm đầu cuối của đoạn thẳng
cần xén lần lượt là
c
1
, c
2
. Ta có
nhận
xét :
- Các đoạn thẳng nằm hoàn toàn bên
trong cửa sổ
sẽ
có
c
1
= c
2
= 0000.
ThS.GVC Tô Oai Hùng
24
Thuật Toán Cohen-Sutherland
- Nếu tồn tại k ∈
{1, , 4}, sao cho với
bit thứ
k của c
1
, c
2
đều có
giá
trị
1,
lúc này đoạn thẳng sẽ
nằm về
cùng
phía ứng với bit k so với cửa sổ, do
đónằm hoàn toàn ngoài cửa sổ.
Đoạn này sẽ
bị
loại bỏ
sau khi xén.
• Ví
dụ, nếu c
1
= 1001 và
c
2
= 0101,
rõ ràng bit 1 của chúng đều bằng 1
(ứng với biên trái), do đó đoạn
thẳng nằm hoàn toàn về
biên trái
của cửa sổ.
- Nếu c
1
, c
2
không thuộc về hai trường
hợp trên, đoạn thẳng có
thể
cắt hoặc
không cắt ngang cửa sổ
(ví
dụ đoạn
ThS.GVC Tô Oai Hùng
25
Thuật Toán Cohen-Sutherland
- P
5
P
6
, P
7
P
8
) chắc chắn sẽ
tồn tại một
điểm nằm ngoài cửa sổ, giả
sử điểm
đólàP
1
.
- Bằng cách xét mã vùng của P
1
là
C
1
,
ta có
thể
xác định được các biên mà
đoạn thẳng có
thể
cắt để
từ đóchọn
một biên và
tiến hành tìm giao điểm
P’
1
của đoạn thẳng với biên đó. Lúc
này, đoạn thẳng ban đầu được xén
thành P
1
P’
1
. Tới đây chúng ta lại lặp
lại thao tác đã xét cho đoạn thẳng
mới P
1
P’
1
cho tới khi xác định được
phần nằm trong hoặc loại bỏ
toàn bộ
đoạn thẳng.