You are on page 1of 58

Bi gi ng h a my tnh (C p nh t thng 9/2009)

Gi ng vin:
ng Nguy n c Ti n V Qu c Hong L Phong

Cc

i t ng h ac s

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

Gi i thi u cc h t a
T a T a th c thi t b .

Cc

it

ng

h ac s
ng g p khc

i m o n th ng, Vng t Chu i k t

Cc thu t ton v
o n th ng Thu t ton v ng trn Cc ng cong Conics

ng

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

Hong Ki m, D ng Anh c, L nh Duy, V H i Qun, C s h a my tnh, nxb. Gio D c, ltb. 2, 2002, ch. 2, tr. 32 55.

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

ymax y Pwc(x, y) Pwc(x, y)

xmax

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

O Quy c bn tay ph i

r x Quy c bn tay tri

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

C hai cch bi u di n cc nh ny, l: Bi u di n b ng dy cc pixel. Bi u di n b ng t p cc i t ng hnh h c c s nh o n th ng hay vng t a gic, Sau , cc i t ngc s s c chuy n sang dy cc pixel t ng ng hi n th . Qu trnh chuy n cc i t ng h ac s v dycc pixel t ng ng c g i l qu trnh chuy n ib ng dng qut (scan-converting).

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

i m: (x, y, c) Thng tin: T a (x, y). Thu c tnh: Mu s c (c).

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

Thng tin: y2).

i m

u (x1, y1) v i m cu i (x2,

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

10

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

11

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

12

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

13

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

14

Mu s c r ng nt v Ki u v

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

15

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

16

Cc thu c tnh: Mu s c Font ch Kch th c Kho ng cch S canh ch nh Cch hi n th tu n t

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

17

o n th ng ng trn Cc ng cong Conic

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

18

Vi t ch sau:

ng trnh b ng ngn ng C++ tnh t ng

1 1 1 S ! 1    ...  2 6 n!

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

19

S = 0; for (int i = 1; i <= n; i++) { mauSo = 1; for (int j = 1; j <= i; j++) { mauSo = mauSo * j; } S = S + 1/mauSo; }

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

20

S = 0; mauSo = 1; for (int i = 1; i <= n; i++) { mauSo = mauSo * i; S = S + 1/mauSo; }

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

21

S = 0; mauSo = 1; for (int i = 1; i <= n; i++) { mauSo = mauSo/i; S = S + mauSo; }

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

22

S = 0; mauSo = 1; for (int i = 1; i <= n; i++) { mauSo /= i; S += mauSo; }

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

23

Gi s t a cc i m nguyn sau khi x p x i t ng th c l n l t l (xi , yi ), i = 0,.... y l cc i m nguyn s c hi n th trn mn hnh. Bi ton t ra l n u bi t c (xi , yi ) l t a nguyn xc nh b c th i, i m nguyn ti p theo (xi+1 , yi+1 ) s c xc nh nh th no?

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

24

i t ng hi n th trn l i nguyn c li n nt, cc i m m (xi+1 , yi+1) c th ch n ch l m t trong tm i m c nh s t 1 n 8 trong hnh sau ( i m en chnh l (xi , yi )).Hay ni cch khc: (xi+1 , yi+1) = (xis 1, yis 1)

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

25

Xt o n th ng c h s gc 0 < m < 1 v Dx > 0. i m c n ch n (xi+1 , yi+1) b c th (i+1) s l m t trong hai tr ng h p nh hnh v sau:

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

26

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

27

N u tnh tr c ti p gi tr th c y m i b c t ph ng trnh y = mx + b th ph i c n m t php ton nhn v m t php ton c ng s th c. c i thi n t c , ng i ta tnh gi tr th c c a y m i b c theo cch sau kh php tnh nhn trn s th c: Nh n xt r ng:
ysau= mxi+1 + b = m(xi + 1) + b = mxi + b + m ytr c= mxi + b

Suy ra: ysau= ytr

c+

m.

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

28

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

29

Cho A(12, 20) v B(22, 27), ta c m = 0.7


i 0 1 2 3 4 5 6 7 8 9 10 xi 12 13 14 15 16 17 18 19 20 21 22 yi 20 21 21 22 23 24 24 25 26 26 27 y 20 20.7 21.4 22.1 22.8 23.5 24.2 24.9 25.6 26.3 27

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

30

#define Round(a) int(a+0.5) int Color = GREEN; void LineDDA (int x1, int y1, int x2, int y2) { int x = x1; float y = y1; float m = float(y2-y1)/(x2-x1); putpixel(x, Round(y), Color); for(int i=x1; i<x2; i++){ x++; y +=m; putpixel(x, Round(y), Color); } } // LineDDA
HCMUS - 2009 Bi gi ng h a my tnh ng Nguy n c Ti n - V Qu c Hong - L Phong 31

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

32

t d1 = y yi; d2= (yi + 1) y Xt pi = Dx(d1 d2) = Dx(2y 2yi 1) pi = Dx[2(m(xi + 1) + b) 2yi 1] Thay m = Dy/Dx vo ph ng trnh trn, ta pi = 2Dyxi 2Dxyi + c v i c = 2Dy + (2b 1)Dx

c:

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

33

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

34

T y ta c th suy ra cch tnh pi+1 t pi nh sau: N u pi< 0 th pi+1= pi + 2Dy, do ta ch n yi+1= yi. Ng c l i, n u pi 0, th pi+1= pi + 2Dy 2Dx, do ta ch n yi+1= yi + 1.

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

35

Gi tr p0 c tnh t i m v u tin (x0, y0) theo cng th c: p0 = 2Dyx0 2Dxy0 + c = 2Dyx0 2Dxy0 + 2Dy + (2b 1)Dx Do (x0, y0) l i m nguyn thu c v o n th ng nn ta c y0 = mx0 + b = (Dy/Dx)x0 + b. Th vo ph ng trnh trn, suy ra: p0= 2Dy Dx

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

36

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

37

V d : Cho A(12, 20) v B(22, 27), Ta c: Dx = 22 12 = 10, Dy = 27 20 = 7 Const1 = 2Dy = 14, Const2 = 2(Dy Dx) = -6 p0 = 2Dy Dx = 14 10 = 4

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

38

i 0 1 2 3 4 5 6 7 8 9 10
HCMUS - 2009 Bi gi ng h a my tnh

xi 12 13 14 15 16 17 18 19 20 21 22
ng Nguy n

yi 20 21 21 22 23 24 24 25 26 26 27
c Ti n - V Qu c Hong - L Phong

p 4 -2 12 6 0 -6 8 2 -4 10 4
39

void LineBres (int x1, int y1, int x2, int y2) { int Dx, Dy, p, Const1, Const2; int x, y; Dx = x2 - x1; Dy = y2 - y1; p = 2*Dy - Dx; // Dy <<1 - Dx Const1 = 2*Dy; // Dy <<1 Const2 = 2*(Dy-Dx); // (Dy-Dx) <<1 x = x1; y = y1; putpixel(x, y, Color); for(i=x1; i<x2; i++){ if (p<0) p += Const1; else{ p += Const2; y++; } x++; putpixel(x, y, Color); } } // LineBres

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

40

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

41

Ta c d ng t ng qut c a ph ng trnh ng th ng: Ax + By + C = 0 v i A = y2 y1, B = (x2 x1), C = x2y1 x1y2 t F(x, y) = Ax + By + C , ta c nh n xt:

Lc ny vi c ch n cc i m S, P trn c a v vi c xt d u c a pi = 2F(MidPoint) = 2F(xi + 1, yi + )


HCMUS - 2009 Bi gi ng h a my tnh ng Nguy n c Ti n - V Qu c Hong - L Phong 42

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

43

Nh v y: pi+1 = pi + 2Dy, n u pi< 0 do ta ch n yi+1 = yi pi+1 = pi + 2Dy 2Dx, n u pi 0 do ta ch n yi+1 = yi + 1 Ta tnh gi tr p0 ng v i i m ban u (x0, y0), v i nh n xt r ng (x0, y0) l i m thu c v o n th ng, t c l ta c d ng Ax + By + C = 0

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

44

0 m 1, Dx > 0

0 m 1, Dx < 0

-1 m 0

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

45

Ci t thu t ton cho tr ng h p 0 m 1, Dx < 0. Ta s d ng thu t ton v i tr ng h p 0 m 1, Dx > 0 ci t c ng thm m t s thay i sau: Thay bi u th c x = x+1 b ng x = x-1 v y = y+1 b ng y = y-1 v trong tr ng h p ny x v y u gi m d n. Nh n xt r ng khi p < 0 ta gn p = p+Const1, nh v y h ng n s cn b ng Const1 ph i l m t gi tr d ng. T ng t nh v y, khi p 0 ta gn p = p+Const2, Const2 ph i l gi tr m. T nh n xt trn, trong cc cng th c ta s thay Dx b ng abs(Dx), Dy b ng abs(Dy).

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

46

M r ng thu t ton trn v o n th ng trong tr ng h p m b t k. Tr ng h p c bi t m = g : o n th ng song song tr c tung nn r t n gi n khi v . Tr ng h p 1 m 0 : S d ng cc cng th c c a thu t ton v trong tr ng h p 0 m 1, Dx > 0 v thay i m t s i m sau: N u Dx < 0 th b c nh y c a x s thay b ng 1. T ng t n u Dy < 0, b c nh y c a y c ng s l 1. Thay Dx b ng abs(Dx), Dy = abs(Dy) trong t t c cc cng th c c ch a Dx, Dy.
HCMUS - 2009 Bi gi ng h a my tnh ng Nguy n c Ti n - V Qu c Hong - L Phong 47

Tr ng h p m -1 hay m 1: Thay i vai tr c a x v y, ngh a l thay x b ng y, y b ng x, Dx b ng Dy, Dy b ng Dx trong t t c cc cng th c. Th c hi n nguyn t c v b c nh y, thay i cng th c Dx, Dy nh trong tr ng h p 1 m 1

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

48

1. Tiu chu n ch n yi+1 c a 3 thu t ton v th ng DDA, Bresenham v MidPoint trong tr ng h p 0 m 1 v Dx > 0 l a) yi+1 = Max(y, yi+1) b) |yi+1 y| t gi tr nh nh t c) yi+1 = Ceil(y) d) yi+1 = Floor(y)

ng

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

49

2. T i sao trong tr ng h p 0 m 1 v Dx > 0 th xi+1 = xi+1 m khng ph i l yi+1 = yi+1 a) V l hm y = mx + b nn d v h n b) S i m c v nhi u h n nn nhn p h n c) S i m c v t h n nn t c cao h n d) V y l quy nh c a t ch c IEEE

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

50

3. Thu t ton Bresenham v MidPoint c i m v t tr i so v i thu t ton DDA l a) D hi u h n b) D ci t h n c) Khng c n tnh ton trn s th c d) S d ng t bi n ph h n

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

51

4. Cho i m A(xA,yA), B(xB,yB), trong tr ng h p no sau y th yi+1 = yi+1 v xi c tnh theo yi a) xA = 1, yA = 3, xB = 21, yB = 13 b) xA = 10, yA = 1, xB = 1, yB = 8 c) xA = -9, yA = 11, xB = -20, yB = 3 d) xA = 1, yA = 1, xB = 8, yB = 10

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

52

5. Trong cc tr ng h p c a m trn, cn m t tr ng h p n a ch a c xt l khi m khng xc nh ( o n th ng suy bi n thnh 1 i m), khi thu t ton no sau y ph i xem xt ring tr ng h p ny (khng c g p vo m t trong nh ng tr ng h p c li t k trn) a) DDA b) Bresenham c) MidPoint d) Khng c thu t ton no e) C 3 thu t ton trn
HCMUS - 2009 Bi gi ng h a my tnh ng Nguy n c Ti n - V Qu c Hong - L Phong 53

1. [2.2] Trong ph n trnh by thu t ton Bresenham v ng th ng, hy cho bi t v i cch t d1 v d2 nh trn, c khi no d1 hay d2 m hay khng ? Cho v d minh h a. 2. [2.3] T i sao ph i so snh pi v i gi tr 0 trong cc thu t ton Bresenham, MidPoint. B n ch t c a vi c so snh ny l g?

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

54

3. Vi t ch ng trnh th c hi n thao tc v o n th ng thng qua 2 i m cho tr c v i cc thu t ton: S d ng cch g i ph ng trnh ng th ng thng qua ph ng trnh y = ax + b. Trong x l cc gi tr nguyn d ng, y l cc gi tr th c. S d ng nh cch lm cu a, nh ng gi tr y c lm trn ln thnh cc gi tr nguyn d ng. S d ng ph ng php DDA. S d ng ph ng php Bresenham. S d ng ph ng php MidPoint.

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

55

Sau , th c hi n cc cng vi c sau: So snh sai bi t gi a cc ph ng php cc thu t ton b, c, d, v e trn v i thu t ton a. Gi tr c n tr v l gi tr sai s trung bnh v l ch chu n c a cc ph ng php ny so v i ph ng php a. Ti n hnh th nghi m kho ng 10 l n v i cc o n th ng c h s gc khc nhau. Th c hi n cc thu t ton trn nhi u l n (trn 100.000 l n) v ti n hnh o th i gian so snh t c th c thi cc ph ng php (tnh theo miligiy).

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

56

Bo co k t qu th nghi m, bao g m: C u hnh my tnh th c thi. Cc Input/Output c a 5 k t qu th nghi m u tin trong yu c u i. B ng k t qu sai s trung bnh v l ch chu n c a cc ph ng php. B ng k t qu th i gian th c thi v s l n th c hi n c a cc ph ng php nh yu c u ii. Khuy n khch v th so snh.

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

57

HCMUS - 2009

Bi gi ng

h a my tnh

ng Nguy n

c Ti n - V Qu c Hong - L Phong

58

You might also like