1. Trang chủ
  2. » Công Nghệ Thông Tin

DHTM Thuật toán cơ sở

178 748 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Các Thuật Toán Cơ Sở
Người hướng dẫn GV: Vũ Đức Huy
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Đồ họa máy tính
Thể loại Bài giảng
Định dạng
Số trang 178
Dung lượng 3,93 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đồ họa máy tính và các thuật toán cơ sở

Trang 1

BÀI GIẢNG

ĐỒ HỌA MÁY TÍNH

GV: Vũ Đức Huy SĐT: 0912316373

Bộ môn: HTTT-ĐHCNHN EMail: huyhaui@gmail.com

Trang 3

Tài liệu tham khảo

 [1] James D.Foley, Andrie van Dam, Steven K.Feiner, Jonhn F Hughes, Computer Graphics Principles and Practice, Addison Wesley, 1994.

 [2] Hoàng Kiếm, Dương Anh Đức, Lê Đình Duy, Vũ Hải Quân Giáo trình cơ sở Đồ hoạ Máy tính, NXB Giáo dục, 2000.

 [3] Lê Tấn Hùng, Huỳnh Quyết Thắng Kỹ thuật đồ hoạ máy tính, NXB khoa học và kỹ thuật, 2002.

 [4] Học viện công nghệ bưu chính viễn thông Kỹ thuật đồ họa (lưu hành nội bộ)

 [5] Lương Chi Mai Nhập môn Đồ họa máy tính, NXB Khoa học và

Trang 4

CHƯƠNG 2 CÁC THUẬT TOÁN CƠ SỞ

Trang 5

2.1 CÁC THUẬT TOÁN VẼ ĐƯỜNG THẲNG

Trang 6

2.1.1 Một số khái niệm

hệ tọa độ Đối với hệ tọa độ hai chiều mỗi điểm được xác định bởi cặp tọa độ (x, y)

màu sắc

Trang 7

2.1.1 Một số khái niệm

Q(x2,y2):

(y-y1)/( x-x1) = ( y2-y1)/( x2-x1) (y-y 1 )(x 2 -x 1 )=(x-x 1 )(y 2 -y 1 )

Trang 9

Tổng quát: Ax + By + C = 0 Với:

A = (y2-y1)

B = -(x2-x1 )

C = x2y1 - x1y2

Trang 11

2.1.2 Giải thuật làm tròn

Trang 17

2.1.3 Giải thuật DDA

thẳng d: y = mx+b

m = (y2-y1)/(x2-x1)

Trang 18

2.1.3 Giải thuật DDA

 Giả sử vẽ được (xi,yi)

 Tiếp theo, chọn yi+1 là yi

hay yi+1 dựa vào phương

trình của đường thẳng d

Trang 19

2.1.3 Giải thuật DDA

 Thay xi+1 vào phương

trình đường thẳng d:

y i+1 = y i + m

Trang 20

2.1.3 Giải thuật DDA

Trang 21

2.1.3 Giải thuật DDA

Trang 22

chệch hướng với đường thẳng thực khi đường thẳng dài.

Trang 23

2.1.4 Giải thuật Bresenham

toán

Trang 24

2.1.4 Giải thuật Bresenham

Trang 25

2.1.4 Giải thuật Bresenham

Trang 26

2.1.4 Giải thuật Bresenham

Trang 27

2.1.4 Giải thuật Bresenham

R

Trang 28

R

Trang 29

2.1.4 Giải thuật Bresenham

Trang 31

2.1.4 Giải thuật Bresenham

 Đặt Pi = dx(d1-d2)

 Pi là tham số quyết định để chọn điểm tiếp theo

là P hay S dựa vào dấu của nó.

Trang 32

2.1.4 Giải thuật Bresenham

Pi = dx((m(xi+1)+b-yi)-(yi+1-m(xi+1)-b))

Pi = dx(2(m(xi+1)+b)-2yi+1) (*)

Thay m = dy/dx vào phương trình (*)

Pi =2dyxi – 2dxyi + 2dy + (2b-1)dx

Trang 33

2.1.4 Giải thuật Bresenham

được Pi+1.

 Tính Pi+1:

Pi+1 = 2dyxi+1 – 2dxyi+1 + c

P i+1 = 2dy(xi+1) – 2dxyi+1 + c

 Xét mối liên hệ giữa Pi+1 và Pi

P i+1 -P i = 2dy–2dx(y i+1 -y i )

Trang 35

2.1.4 Giải thuật Bresenham

 Tính P1: Thay điểm (x1,y1) vào Pi

với c = 2dy + (2b-1)dx

b = y1- mx1

m = dy/dx

P 1 =2dy - dx

Trang 36

2.1.4 Giải thuật Bresenham

Trang 37

2.1.4 Giải thuật Bresenham

Trang 38

2.1.4 Giải thuật Bresenham

Trang 39

2.1.5 Giải thuật MidPoint

 Cho hai điểm (x1,y1) và

 Đặt F(x,y) = Ax + By + C

Trang 40

2.1.5 Giải thuật MidPoint

Midpoint đưa ra cách chọn

điểm yp+1 là yp hay yp+1 dựa

vào so sánh điểm thực

Q(xp+1,y) với trung điểm

M(xp+1,yp+1/2) của ENE.

Trang 41

2.1.5 Giải thuật MidPoint

<0 nếu (x,y) nằm phía trên đường thẳng

>0 nếu (x,y) nằm phía dưới đường thẳng

Trang 42

2.1.5 Giải thuật MidPoint

 Cách thực hiện: Đặt Pp = F(M) = F(xp+1,yp+1/2)

chọn NE

 Pp gọi là tham số quyết

định Dấu của nó sẽ quyết

định lựa chọn điểm tiếp

theo.

Trang 43

2.1.5 Giải thuật MidPoint

 Tính Pp:

P old = A(x p +1)+B(y p +1/2)+C

 Nếu chọn E thì trung điểm mới:Mnew(xp+2,yp+1/2)

P = P + dy (vì A= dy)

Trang 44

2.1.5 Giải thuật MidPoint

 Nếu chọn NE thì trung điểm mới:Mnew(xp+2,yp+3/2)

 PnewNE = A(xp+2)+B(yp+3/2)+C

 PnewNE = A(xp+1)+B(yp+1/2)+C + A + B

P newNE = P old + dy – dx (vì A= dy, B = -dx)

Trang 45

2.1.5 Giải thuật MidPoint

Trang 46

2.1.5 Giải thuật MidPoint

Trang 47

2.1.5 Giải thuật MidPoint

Trang 48

2.1.5 Giải thuật MidPoint

Trang 49

2.2 THUẬT TOÁN VẼ ĐƯỜNG TRÒN

Trang 50

2.2.1 Một số vấn đề

Trang 51

2

2 x r

y  

Trang 52

2.2.2 Thuật toán làm tròn

Trang 53

2.2.2 Thuật toán làm tròn

Trang 55

2.2.3 Thuật toán lượng giác

Trang 57

2.2.3 Thuật toán lượng giác

Trang 58

2.2.3 Thuật toán lượng giác

Trang 59

2.2.3 Thuật toán lượng giác

Trang 61

2.2.4 Thuật toán MidPoint

 Giả sử đã vẽ được điểm (xp,yp)

là E hay SE

Trang 62

<0 nếu (x,y) nằm trong đường tròn

>0 nếu (x,y) nằm ngoài đường tròn

Trang 63

2.2.4 Thuật toán MidPoint

Trang 64

2.2.4 Thuật toán MidPoint

 Điểm khởi tạo (0,r), M(1,r-1/2)

p1 = 12 +(r-1/2)2-r2

p1 =5/4 - r

Vì chỉ xét dấu, đặt h = d1 – ¼

h=1-r

Trang 65

2.2.4 Thuật toán MidPoint

Trang 66

2.2.4 Thuật toán MidPoint

Trang 67

2.2.4 Thuật toán MidPoint

 Tốc độ cao, tiết kiệm bộ nhớ

Trang 69

2.2.5 Thuật toán Bresenham

Trang 71

2.2.5 Thuật toán Bresenham

 Đặt Pi = d1 - d2

 Pi là tham số quyết định chọn S1 hoặc S2 dựa

vào dấu của nó

Pi = (yi)2 -(R2- (xi + 1)2 )-((R2- (xi + 1)2)-(yi - 1))2

Pi = (yi)2 -R2+ (xi + 1)2-R2+ (xi + 1)2+(yi - 1)2

Pi = (yi)2 -2R2+ 2(xi + 1)2+(yi - 1)2

Trang 72

2.2.5 Thuật toán Bresenham

 Tính Pi+1 - Pi

P i+1 = (yi+1)2 -2R2+ 2(xi+1 + 1)2+(yi+1 - 1)2

P i+1 = 2(yi+1)2 -2R2+ 2(xi)2+8xi+8 -2yi+1 + 1

Trang 73

2.2.5 Thuật toán Bresenham

 Nếu chọn S1 yi+1 = yi

Pi+1 = Pi + 4xi+6

 Nếu chọn S2 yi+1 = yi-1

Pi+1 = Pi + 4(xi-yi)+10

Trang 74

2.2.5 Thuật toán Bresenham

 Điểm đầu tiên (0,R)

P1 = (R)2 -2R2+ 2(0 + 1)2 +(R - 1)2

P1 = R2 -2R2+ 2 + R2 -2R +1

Trang 75

2.2.5 Thuật toán Bresenham

Trang 76

2.2.5 Thuật toán Bresenham

Trang 77

2.2.5 Thuật toán Bresenham

Trang 78

2.2.6 Thuật toán xấp xỉ

 Sinh viên tự tìm hiểu

Trang 79

2.3 THUẬT TOÁN VẼ ELIPSE

Trang 80

2

21

a

x b

y  

Trang 82

2.3.1 Thuật toán làm tròn

Trang 83

2.3.1 Thuật toán làm tròn

Trang 86

2.3.2 Thuật toán lượng giác

Trang 87

2.3.2 Thuật toán lượng giác

Trang 89

2.3.3 Thuật toán Vanaken

 Phương trình elip có tâm tại gốc tọa độ

F(x,y)=b2x2 + a2y2 - a2b2=0

Trang 90

2.3.3 Thuật toán Vanaken

 Tìm ranh giới giữa hai miền trong ¼ elip

 Vecto vuông góc với tiếp tuyến tại tiếp điểm -> gradient

 Tại P các thành phần i và j của vecto gradient có cùng độ lớn

j y a i

x b j

i y

(     2  2

Trang 91

2.3.3 Thuật toán Vanaken

Trang 93

2.3.3 Thuật toán Vanaken

p i = b 2 (x i +1) 2 + a 2 (y i -1/2) 2 -a 2 b 2

pi+1 = b 2 (x i+1 +1) 2 + a 2 (y i+1 -1/2) 2 -a 2 b 2

 Tính pi+1 - pi

pi+1 - pi = b2((xi+1+1)2 - (xi+1)2 )+ a2((yi+1-1/2)2 - (yi-1/2)2 )

p i+1 = p i + 2b 2 x i+1 + b 2 + a 2 ((y i+1 -1/2) 2 - (y i -1/2) 2 )

Trang 95

2.3.3 Thuật toán Vanaken

Trang 97

2.3.3 Thuật toán Vanaken

trị ban đầu cho phần 2

S(xj,yj-1) hoặcSE(xj+1, yj-1)

Trang 99

2.3.3 Thuật toán Vanaken

Trang 101

2.3.3 Thuật toán Vanaken

q 1 = b 2 (x k +1/2) 2 + a 2 (y k -1) 2 -a 2 b 2

Trang 102

2.3.3 Thuật toán Vanaken

Trang 103

2.3.3 Thuật toán Vanaken

Trang 104

2.3.3 Thuật toán Vanaken

Trang 105

2.3.3 Thuật toán Bresenham

 Sinh viên tự tìm hiểu

Trang 106

2.4 Giải thuật sinh đa giác

Trang 107

2.4 Thuật toán sinh đa giác

Trang 108

2.4 Thuật toán sinh đa giác

 Các loại đa giác

 Là đa giác có đường thẳng nối bất ký 2 điểm bên trong nào của đa giác đều nằm trọn trong đa giác

 Là đa giác không lồi

Trang 109

2.4 Thuật toán sinh đa giác

 Xác định đa giác cần biết

Trang 111

2.5 Thuật toán xén hình

(clipping)

Trang 113

2.5.1 Một số khái niệm

Trang 115

2.5.1 Một số khái niệm

x1,x2>xmax; y1,y2>ymax

x1,x2<xmin; y1,y2<ymin

trường hợp trên

Trang 116

2.5.1 Một số khái niệm

Trang 117

2.5.2 Thuật toán CohenSutherland

cắt

mỗi phần ứng với mã số 4 bit

Trang 118

2.5.2 Thuật toán CohenSutherland

 Giả sử có điểm P(x,y) P ứng với mã số 4 bit gọi

Trang 119

2.5.2 Thuật toán CohenSutherland

b1 là dấu của x-xmin

b2 là dấu của xmax-x

b3 là dấu của y-ymin

Trang 120

2.5.2 Thuật toán CohenSutherland

Kod(P) =0000

 Cho P1P2, các trường hợp xảy ra

(Kod(P2<>0000))

Trang 121

2.5.2 Thuật toán CohenSutherland

cửa sổ sau đó bỏ phần không thuộc cửa sổ

 Cho cửa sổ V(xmin,ymin,xmax,ymax), P1(x1,y1), P2(x2,y2)

Nhảy tới B5

ngoài V  Nhảy tới B6

Trang 122

2.5.2 Thuật toán CohenSutherland

 B4.1: Nếu Kod(P1) = 0000 thì hoán vị P1 với P2 để Kod(P1)<>0000 Đặt b1b2b3b4 = Kod(P1)

 Nếu b 1 =1 thì y 1new = y 1 +(x min -x 1 )*(y 2 -y 1 )/(x 2 -x 1 )

Trang 123

2.5.2 Thuật toán CohenSutherland

Trang 124

2.5.2 Thuật toán CohenSutherland

Trang 125

2.5.2 Thuật toán CohenSutherland

Trang 127

2.5.3 Thuật toán Liang-Basky

 Cho P1(x1,y1), P2(x2,y2)

x = x1 + tdx y= y1+tdy

Trang 129

2.5.3 Thuật toán Liang-Basky

Trang 130

2.5.3 Thuật toán Liang-Basky

 Từ (*) suy ra

song với cạnh cửa sổ cắt

t2 = Min{1,Min(qk/pk)} với các pk>0

Trang 131

2.5.3 Thuật toán Liang-Basky

Trang 132

2.5.3 Thuật toán Liang-Basky

Trang 133

2.5.3 Thuật toán Liang-Basky

Trang 134

2.5.3 Thuật toán Liang-Basky

Trang 135

2.5.3 Thuật toán Liang-Basky

Trang 137

2.5.4 Thuật toán chia nhỏ trung điểm

Trang 138

1(vẽ) hoặc loại 2 (hủy bỏ)

Trang 139

2.5.4 Thuật toán chia nhỏ trung điểm

 Số lần chia

Trang 141

2.5.5 Thuật toán xén vùng

 Duyệt lần lượt (theo chiều kim đồng hồ) các cạnh đa giác

 Nếu đỉnh duyệt xuất phát từ trong cửa sổ theo cạnh đa giác đi ra ngoài cửa sổ: lưu trữ giao của cạnh đa giác với biên cửa sổ

 Nếu đường đi từ ngoài vào trong cửa sổ: lưu trữ đỉnh đa giác và giao điểm

 Ví dụ xét hai đỉnh đa giác S và P:

Trang 142

2.6 Thuật toán tô màu

Trang 143

2.6.1 Một số khái niệm

nếu chúng kề nhau theo đường thẳng

đứng hoặc nằm ngang

nếu chúng kề nhau theo đường thẳng

đứng, ngang và đường chéo

Trang 144

2.6.2 Thuật toán tô màu loang

Cb.Tô kín V bằng mầu tô Ct

 Cho điểm P(x,y) Є V

P nếu không phải là biên và

chưa được tô

hết V

Trang 145

2.6.2 Thuật toán tô màu loang

Trang 147

2.6.2 Thuật toán tô màu loang

 Cải tiến

để quyết định số lần gọi đệ quy

Trang 148

2.6.3 Thuật toán tô màu biên

 Cho miền kín V có mầu biên Cb.Tô kín V bằng mầu tô Ct

 Cho điểm P(x,y) Є V

Trang 149

2.6.3 Thuật toán tô màu biên

và lặp lại quá trình trên cho

nửa thứ nhất

và lặp lại quá trình trên cho

nửa thứ hai

Trang 151

2.6.3 Thuật toán tô màu biên

Trang 152

2.6.4 Tô màu đường tròn

 Xác định điểm trên bên trái (xc-r, yc-r)

 Xác định điểm dưới bên phải (xc+r, yc+r)

Trang 153

2.6.4 Tô màu đường tròn

Cho j đi từ yc-r đến yc+r

 Tính khoảng cách d giữa hai điểm (i,j) và tâm (xc,yc)

 Nếu d<r thì tô điểm (i,j) với màu muốn tô

Trang 154

2.6.4 Tô màu đường tròn

Trang 155

2.6.4 Tô màu hình thang cơ bản

Trang 157

2.6.4 Tô màu hình thang cơ bản

Trang 158

2.6.5 Tô màu đa giác

song với hai trục tọa độ chứa đa giác cần tô dựa

các đỉnh của đa giác

các đỉnh của đa giác

Trang 159

2.6.5 Tô màu đa giác

Xét điểm P(x,y) có thuộc đa giác không ?Nếu đúng thì tô với màu cần tô

Trang 160

2.6.5 Tô màu đa giác

phát từ điểm đó cắt biên của đa giác phải là một

số lẻ lần

một giao điểm phải được tính 2 lần

chọn tia qua phải

Trang 161

2.6.5 Tô màu đa giác

Cho đa giác W và P là điểm bất kỳ

Thuật toán1

hướng sang phải

các cạnh của đa giác

nằm ngoài đa giác

Trang 162

2.6.5 Tô màu đa giác

max(xi,xi+1)<x0

min(xi,xi+1)>x0(y-y0)(yi+1-y0)<0

Trang 163

2.6.5 Tô màu đa giác

của đa giác

giác

Thuật toán này không phải là thuật toán tổng quát để xác định điểm P nằm trong hay ngoài đa giác

Trang 164

2.6.5 Tô màu đa giác

Thuật toán 2

góc theo thứ tự ngược chiều kim đồng hồ

đo

 Nếu tổng các góc bằng 0 thì P nằm ngoài đa giác

 Nếu tổng các góc bằng 360 o thì P nằm trong đa giác

Trang 165

2.6.5 Tô màu đa giác

Thuật toán 2

Trang 166

2.6.5 Tô màu đa giác

Trang 167

2.6.5 Tô màu đa giác

 P i y < Min ( P i+1 y, P i-1 y) P i là đỉnh cực trị (cực tiểu)

 Pi.y > Max ( Pi+1.y, Pi-1.y) P i là đỉnh cực trị (cực đại )

 Pi-1.y < Pi.y < Pi+1.y hay Pi-1 > Pi.y > Pi+1.y

Trang 168

2.6.5 Tô màu đa giác

Tư tưởng

qui ước như sau: nếu là đỉnh cực trị hay đoạn cực trị thì đánh số 0 Nếu là đỉnh đơn điệu hay đoạn đơn điệu thì đánh dấu 1

cần xét với biên của đa giác Nếu số giao điểm là chẵn thì kết luận điểm không thụôc đa giác Ngược lại, số giao điểm là lẻ thì điểm thuộc đa giác

Trang 169

2.6.6 Tô màu dòng quét

quét để nhận ra pixel có trong đa giác?

Trang 170

2.6.6 Tô màu dòng quét

điểm vào hay điểm ra đa giác

màu C

Trang 171

2.6.6 Tô màu dòng quét

Trang 172

2.6.6 Tô màu dòng quét

có giao nhau

i i+1

xi+1

Trang 173

2.6.6 Tô màu dòng quét

và chỉ khi tọa độ y thấp hơn của đoạn thẳng

Trang 174

2.6.6 Tô màu dòng quét

 Tọa độ y lớn hơn của cạnh (đường quét lớn nhất còn cắt cạnh)

 Tọa độ x của điểm thấp hơn (tọa độ x của điểm ymin)

 Số gia của x (tăng theo đường quét liền nhau)

 Con trỏ trỏ tới phần tử tiếp theo (nếu cần)

Trang 175

2.6.6 Tô màu dòng quét

sẽ được đưa vào trong danh sách cạnh kích hoạt, cạnh không còn cắt sẽ bị loại bỏ (có thể cần sắp xếp)

được sắp theo chiều tăng x

Trang 176

2.6.6 Tô màu dòng quét

 Begin

 Xây dựng danh sách các cạnh (EL)

 Danh sách cạnh kích hoạt AEL = null

 For y:=y min to y max do

 Hòa nhập EL[y] vào AEL và sắp xếp theo giá trị x

 Tô màu đoạn nằm giữa cặp x trong AEL

 For each edge trong AEL

 If edge.ymax = y then

 Loại edge khỏi AET

 Else

 Edge.x=edge.x + dx/dy

 Sắp xếp AET theo giá trị x

 End;

Trang 177

2.6.6 Tô màu dòng quét

Trang 178

Xin chân thành cảm ơn!

Ngày đăng: 28/08/2012, 11:09

HÌNH ẢNH LIÊN QUAN

 Sự hình thành - DHTM Thuật toán cơ sở
h ình thành (Trang 50)
2.5. Thuật toán xén hình (clipping)(clipping) - DHTM Thuật toán cơ sở
2.5. Thuật toán xén hình (clipping)(clipping) (Trang 111)
 Biểu diễn một phần hình ảnh của đối tượng - DHTM Thuật toán cơ sở
i ểu diễn một phần hình ảnh của đối tượng (Trang 112)
 Là cửa sổ hình chữ nhật có tọa độ (xmin,ymin,xmax,y max) - DHTM Thuật toán cơ sở
c ửa sổ hình chữ nhật có tọa độ (xmin,ymin,xmax,y max) (Trang 113)
 Tô được miền có hình dạng bất - DHTM Thuật toán cơ sở
c miền có hình dạng bất (Trang 146)
1462.6.2. Thuật toán tô màu loang - DHTM Thuật toán cơ sở
1462.6.2. Thuật toán tô màu loang (Trang 146)
 Tìm hình vuông nhỏ nhất ngoại tiếp đường tròn - DHTM Thuật toán cơ sở
m hình vuông nhỏ nhất ngoại tiếp đường tròn (Trang 152)
2.6.4. Tô màu hình thang cơ bản - DHTM Thuật toán cơ sở
2.6.4. Tô màu hình thang cơ bản (Trang 155)
2.6.4. Tô màu hình thang cơ bản - DHTM Thuật toán cơ sở
2.6.4. Tô màu hình thang cơ bản (Trang 156)
 Tìm hình chữ nhật nhỏ nhất có các cạnh song song với hai trục tọa độ chứa đa giác cần tô dựa  vào hai tọa độ (x min, ymin), (xmax, ymax) - DHTM Thuật toán cơ sở
m hình chữ nhật nhỏ nhất có các cạnh song song với hai trục tọa độ chứa đa giác cần tô dựa vào hai tọa độ (x min, ymin), (xmax, ymax) (Trang 158)
1582.6.5. Tô màu đa giác - DHTM Thuật toán cơ sở
1582.6.5. Tô màu đa giác (Trang 158)

TỪ KHÓA LIÊN QUAN

w