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

slide chương 4: hiển thị đối tượng hai chiều

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 (299.29 KB, 45 trang )

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


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



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ị để



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ị



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ể



cửa sổ

xén có

thể




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

)


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



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ả 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ổ




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




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à


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
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



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.

×