Giáo trình Kỹ thuật đồ họa

Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Li nói đầu  
Đồ ha máy tính được ra đời bi skết hp ca 2 lĩnh vc thông tin và truyn  
hình. Đầu tiên kthut đồ ha được phát trin bi các nhóm ksư sdng máy tính ln.  
Trong giai đon đầu ca sphát trin người ta phi tn nhiu tin cho vic trang bcác  
thiết bphn cng. Ngày nay, nhvào stiến bca vi xlý, giá thành ca máy tính  
càng lúc càng phù hp vi túi tin ca người sdng trong khi các kthut ng dng đồ  
ha ca nó ngày càng cao hơn nên có nhiu người quan tâm nghiên cu đến lĩnh vc này.  
Chúng ta có thvra nhng hình nh không chnh tĩnh mà còn có thbiến đổi thành  
nhng hình nh sinh động qua các phép quay, tnh tiến... Do vy, đồ ha máy tính trở  
thành mt lĩnh vc lý thú và có nhiu ng dng trong thc tế.  
Tuy nhiên, vic dy và hc kthut đồ ha thì không là đơn gin do chủ đề này có  
nhiu phc tp. Kthut đồ ha liên quan đến tin hc và toán hc bi vì hu hết các gii  
thut v, tô cùng các phép biến hình đều được xây dng da trên nn tng ca hình hc  
không gian hai chiu và ba chiu.  
Hin nay, Kthut đồ ha là mt môn hc được ging dy cho sinh viên chuyên  
ngành Tin hc vi 45 tiết lý thuyết và 15 tiết thc tp. Ni dung ca giáo trình kthut  
đồ ha này tp trung vào 2 vn đề chính như sau :  
- Trình bày các thut toán vvà tô các đường cơ bn như đường thng, đa giác,  
đường tròn, ellipse và các đường conic. Các thut toán này giúp cho sinh viên có thtự  
mình thiết kế để vvà tô mt hình nào đó ( chương 1 và 2).  
- Ni dung thhai đề cp đến đồ ha hai chiu và đồ ha ba chiu bao gm các  
phép biến đổi Affine, windowing và clipping, quan sát nh ba chiu qua các phép chiếu,  
khcác mt khut và đường khut, thiết kế đường cong và mt cong (tchương 3 đến  
chương 7).  
Giáo trình kthut đồ ha này được sa đổi và cp nht da trên kinh nghim  
ging dy đã qua và được xây dng da trên tài liu tham kho chính là :  
Donald Hearn, M. Pauline Baker; Computer Graphics; Prentice-Hall, Inc.,  
Englewood Cliffs, New Jersey , 1986.  
Sau cùng, chúng tôi hy vng rng giáo trình này sẽ đóng góp tích cc trong vic  
ci tiến shiu biết ca sinh viên vlĩnh vc đồ ha và mong nhn được sgóp ý ca  
các đồng nghip và sinh viên để công vic biên son ngày càng được tt hơn.  
Trang 1  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Mc lc  
Trang 2  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Trang 3  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
PHN TNG QUAN  
1. Mc đích yêu cu  
Sau khi hc xong môn này, sinh viên cn đạt được các yêu cu sau:  
- Hiu thế nào là đồ ha trên máy tính.  
- Thiết kế và cài đặt được các thut toán vcác đường cơ bn như đường thng,  
đường tròn,...  
- Thiết kế và cài đặt được các thut toán tô mt hình.  
- Sdng được các phép biến hình trong không gian 2 chiu, 3 chiu để làm thay  
đổi mt hình nh đã có sn.  
- Có thto mt ca sổ để ct - dán mt hình.  
- Hiu khái nim vcác tiếp cn để mô phng được mt hình nh trong không  
gian 3 chiu trên máy tính.  
2. Đối tượng sdng  
Môn kthut đồ ha được ging dy cho sinh viên năm thtư ca các khoa sau:  
- Chuyên ngành công nghthông tin.  
- Chuyên ngành đin t(vin thông, tự động hóa,...)  
- Chuyên ngành sư phm (Toán tin, Lý tin )  
3. Ni dung ct lõi  
Giáo trình Kthut đồ ha bao gm 7 chương.  
- Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
- Chương 2: Các thut toán tô màu  
- Chương 3: Phép biến đổi trong đồ ha 2 chiu  
- Chương 4: To ca svà ct hình  
- Chương 5: Đồ ha 3 chiu  
- Chương 6: Quan sát nh 3 chiu  
- Chương 7: Khcác mt khut và đường khut  
4. Kiến thc tiên quyết  
- Kiến thc vhình hc không gian và hình gii tích  
- Kiến thc lp trình căn bn, lp trình đồ ha  
- Kiến thc vcu trúc dliu, lp trình đệ qui  
Trang 4  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
5. Danh mc tài liu tham kho  
- Donald Hearn, M. Pauline Baker; Computer Graphics; Prentice-Hall, Inc.,  
Englewood Cliffs, New Jersey , 1986.  
- F.S.Hill; Computer graphics ; 1990  
- Vũ Mnh Tường, Dương Anh Đức, Trn Đan Thư, Lý Quc Ngc. Giáo trình Nhp  
môn đồ ha & xnh.1995.  
- VERA B.ANAND, người dch TS Nguyn Hu Lc. Đồ ha máy tính và Mô hình hóa  
hình hc. Nhà xut bn Thành PhHChí Minh - 2000.  
- Foley, Van Darn, Feiner, Hughes, Phillips. Introduction à L'Infographie. 1995.  
- Lê Tn Hùng, Hunh Quyết Thng. Kthut đồ ha. Nhà xut bn khoa hc và kỹ  
thut, Hà ni - 2000.  
Trang 5  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Chương 1: GII THIU THUT TOÁN VVÀ TÔ  
CÁC ĐƯỜNG CƠ BN  
1.1 Tng quan  
Mc tiêu ca chương 1  
Hc xong chương này, sinh viên phi nm bt được các vn đề sau:  
- Thế nào là hệ đồ ha  
- Thiết kế và cài đặt được các thtc vvà tô các đường cơ bn như đường thng,  
đường tròn, elip, và các đường cong khác.  
Kiến thc cơ bn cn thiết  
Các kiến thc cơ bn cn thiết để hc chương này bao gm :  
- Các khái nim toán hc về đường thng như : đường thng là gì : dng tng quát  
phương trình đường thng, hsgóc, tung độ dc.  
- Hiu rõ hình dáng ca đường thng phthuc vào hsgóc như thế nào.  
- Phương trình tng quát ca đường tròn, ellippse ( không có tham svà có tham  
s).  
- Kĩ thut lp trình: thiết lp thtc, hàm (lưu ý truyn qui chiếu và truyn giá  
tr).  
Tài liu tham kho  
Donald Hearn, M. Pauline Baker. Computer Graphics . Prentice-Hall, Inc.,  
Englewood Cliffs, New Jersey , 1986 (chapters 3, 55-76).  
Ni dung ct lõi  
Thiết lp thtc v:  
- Đường thng bng gii thut DDA  
- Đường thng bng gii thut Bresenham  
- Đường tròn bng gii thut đối xng  
- Đường tròn bng gii thut Bresenham  
- Đường tròn bng gii thut MidPoint  
- Ellippse  
- Đa giác  
Trang 6  
 
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
1.2. Hta độ thế gii thc, hta độ thiết bvà hta độ chun  
Mt hmm đồ ha được mô tbao gm 3 min như sau :  
- Min điu khin : bao bc toàn bhthng.  
- Min thc : nm trong min điu khin. Khi mt snào đó thâm nhp vào min  
thc, nó sẽ được chuyn thành sthc du phy động, và khi có mt sri khi min này  
thì nó sẽ được chuyn thành snguyên có du 16 bits.  
- Min hin th: nm trong min điu khin nhưng phân bit vi min thc. Chcó  
snguyên 16 bits mi nm trong min hin th.  
Trong lĩnh vc kthut đồ ha, chúng ta phi hiu được rng thc cht ca đồ ha  
là làm thế nào để có thmô tvà biến đổi được các đối tượng trong thế gii thc trên  
máy tính. Bi vì, các đối tượng trong thế gii thc được mô tbng ta độ thc. Trong  
khi đó, hta độ thiết bli sdng hta độ nguyên để hin thcác hình nh. Đây  
chính là vn đề cơ bn cn gii quyết. Ngoài ra, còn có mt khó khăn khác na là vi các  
thiết bkhác nhau thì có các định nghĩa khác nhau. Do đó, cn có mt phương pháp  
chuyn đổi tương ng gia các hta độ đối tượng phi được định nghĩa bi các thành  
phn đơn gin như thế nào để có thmô tgn đúng vi hình nh thc bên ngoài.  
Hai mô hình cơ bn ca ng dng đồ ha là da trên mu shóa và da trên đặc  
trưng hình hc. Trong ng dng đồ ha da trên mu shóa thì các đối tượng đồ ha  
được to ra bi lưới các pixel ri rc. Các pixel này có thể đuc to ra bng các chương  
trình v, máy quét, ... Các pixel này mô tta độ xác định vtrí và giá trmu. Thun li  
ca ng dng này là ddàng thay đổi nh bng cách thay đổi màu sc hay vtrí ca các  
pixel, hoc di chuyn vùng nh tnơi này sang nơi khác. Tuy nhiên, điu bt li là không  
thxem xét đối tượng tcác góc nhìn khác nhau. ng dng đồ ha da trên đặc trưng  
hình hc bao gm các đối tượng đồ ha cơ snhư đon thng, đa giác,.... Chúng được  
lưu trbng các mô hình và các thuc tính. Ví d: đon thng được mô hình bng hai  
đim đầu và cui, có thuc tính như màu sc, độ dày. Người sdng không thao tác trc  
tiếp trên các pixel mà thao tác trên các thành phn hình hc ca đối tượng.  
a. Hta độ thế gii thc:  
Mt trong nhng hta độ thc thường được dùng để mô tcác đối tượng trong  
thế gii thc là hta độ Descartes. Vi hta độ này, mi đim P được biu din bng  
mt cp ta độ (xp,yp) vi xp, yp R (xem hình 1.1).  
Trang 7  
 
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Y
P(xp,yp)  
yp  
O
xp  
X
Hình 1.1 : Hta độ thc.  
. Ox : gi là trc hoành.  
. Oy : gi là trc tung.  
. xp : hoành độ đim P.  
. yp : tung độ đim P.  
b. Hta độ thiết bị  
Hta độ thiết b(device coordinates) được dùng cho mt thiết bxut cthnào  
đó, ví dnhư máy in, màn hình,..  
Trong hta độ thiết bthì các đim cũng được mô tbi cp ta độ (x,y). Tuy  
nhiên, khác vi hta độ thc là x, y N. Điu này có nghĩa là các đim trong hta độ  
thc được định nghĩa liên tc, còn các đim trong hta độ thiết blà ri rc. Ngoài ra,  
các ta độ x, y ca hta độ thiết bchbiu din được trong mt gii hn nào đó ca N.  
Ví d: Độ phân gii ca màn hình trong chế độ đồ ha là 640x480. Khi đó, x(0,640)  
và y(0,480) (xem hình 1.2).  
(0,0)  
(640,0)  
(0, 480)  
(640,480)  
Hình 1.2 : Hta độ trên màn hình.  
Trang 8  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
c. Hta độ thiết bchun (Normalized device coordinates)  
Do cách định nghĩa các hta độ thiết bkhác nhau nên mt hình nh hin thị  
được trên thiết bnày là chính xác thì chưa chc hin thchính xác trên thíết bkhác.  
Người ta xây dng mt hta độ thiết bchun đại din chung cho tt ccác thiết bị để  
có thmô tcác hình nh mà không phthuc vào bt kthiết bnào.  
Trong hta độ chun, các ta độ x, y sẽ được gán các giá trtrong đon t[0,1].  
Như vy, vùng không gian ca hta độ chun chính là hình vuông đơn vcó góc trái  
dưới (0, 0) và góc phi trên là (1, 1).  
Quá trình mô tcác đối tượng thc như sau (xem hình 1.3):  
màn hình  
nh định nghĩa  
trên ta độ thế  
gii thc.  
máy in  
Ta độ chun hóa  
Ta độ thiết bị  
thiết bị  
khác  
Hình 1.3 : Hta độ trên màn hình.  
1.3. Thut toán vẽ đon thng  
Xét đon thng có hsgóc 0<m<=1 và Δx>0. Vi các đon thng dng này, nếu  
(xi, yi) là đim đã được xác định bước thi thì đim kế tiếp (xi+1, yi+1) bước thi+1 sẽ  
là mt trong hai đim sau (xem hình v1.4) :  
xi+1= xi + 1  
yi+1= yi + 1  
yi  
Trang 9  
 
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
(xi+4,yi+3)  
(xi+2,yi+2)  
(xi+3,yi+2)  
(xi+1,yi+1)  
(xi,yi)  
Hình 1.4 : Các đim vgn vi đim mun v.  
Vn đề đặt ra là chn đim vnhư thế nào để đường thng được vgn vi đường  
thng mun vnht và đạt được ti ưu hóa vmt tc độ ?  
1.3.1. Thut toán DDA (Digital DifferentialAnalyzer)  
Là thut toán tính toán các đim vdc theo đường thng da vào hsgóc ca  
phương trình đường thng y=mx+b.  
Δy  
Trong đó, m=  
, Δy = yi+1 - yi , Δx = xi+1 - xi  
Δx  
Nhn thy trong hình v1.4 thì ta độ ca đim x stăng 1 đơn vtrên mi đim  
v, còn vic quyết định chn yi +1 là yi +1 hay yi sphthuc vào giá trsau khi làm tròn  
ca tung độ y. Tuy nhiên, nếu tính trc tiếp giá trthc ca y mi bước tphương trình  
y=mx+b thì cn mt phép toán nhân và mt phép toán cng sthc.  
yi +1 = mxi +1 + b = m(xi + 1) + b = mxi + b + m  
Để ci thin tc độ, người ta khphép nhân trên sthc.  
Ta có :  
yi = mxi + b  
i +1 = yi + m int(yi +1)  
y
Tóm li khi 0<m<=1 :  
xi +1 = xi + 1  
yi +1 = yi + m int(yi +1)  
Trường hp m>1: chn bước tăng trên trc y mt đơn v.  
xi +1 = xi + 1/m int(xi +1)  
yi +1 = yi + 1  
Trang 10  
 
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Hai trường hp này dùng để vmt đim bt đầu tbên trái đến đim cui cùng bên phi  
ca đường thng (xem hình 1.5). Nếu đim bt đầu tbên phi đến đim cui cùng bên  
trái thì xét ngược li :  
0<m<=1:  
xi +1 := xi - 1  
yi +1:= yi - m int(yi+1)  
m>1:  
xi +1:= xi – 1/m int(xi+1)  
yi +1:= yi – 1  
Hình 1.5 : Hai dng đường thng có 0<m<1 và m>1.  
Tương t, có thtính toán các đim vcho trường hp m<0: khi |m|<=1 hoc |m|>1 (sinh  
viên ttìm hiu thêm).  
Trang 11  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Lưu đồ thut toán DDA  
Begin  
dx=x2-x1  
dy=y2-y1  
Yes  
No  
abs(dx)>abs(dy)  
step=abs(dx)  
step=abs(dy)  
x_inc=dx/step  
y_inc=dy/step  
x=x1;y= y1  
putpixel(x1,y1,c)  
No  
k<=step  
Yes  
x = x+x_inc  
y = y+y_inc  
putpixel(round(x),round(y),c)  
End  
Trang 12  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Cài đặt minh ha thut toán DDA  
Procedure DDA ( x1, y1, x2, y2, color : integer );  
Var dx, dy, step : integer;  
X_inc, y_inc , x, y : real ;  
Begin  
dx:=x2-x1;  
dy:=y2-y1;  
if abs(dx)>abs(dy) then steps:=abs(dx)  
else steps:=abs(dy);  
x_inc:=dx/steps;  
y_inc:=dy/steps;  
x:=x1;  
y:=y1;  
putpixel(round(x),round(y), color);  
for k:=1 to steps do  
begin  
x:=x+x_inc;  
y:=y+y_inc;  
putpixel(round(x),round(y), color);  
end;  
end;  
1.3.2. Thut toán Bresenham  
P2  
yi+1  
yi+1  
d2  
d1  
yi  
P1  
xi+1 = xi+1  
xi  
Hình 1.6 : Dng đường thng có 0<=m<=1.  
Trang 13  
 
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Gi (xi +1,yi +1) là đim thuc đon thng (xem hình 1.6). Ta có y:= m(xi +1)+b.  
Đặt d1 = yi +1 - yi  
d2 = (yi +1) - yi +1  
Vic chn đim (xi +1, yi +1) là P1 hay P2 phthuc vào vic so sánh d1 và d2 hay du ca  
d1-d2.  
- Nếu d1-d2<0 : chn đim P1, tc là yi +1= yi  
- Nếu d1-d2 0 : chn đim P2, tc là yi +1= yi +1  
Xét Pi = Δx (d1 - d2)  
Ta có : d1 - d2 = 2 yi+1 - 2yi - 1  
= 2m(xi+1) + 2b - 2yi - 1  
Pi = Δx (d1 - d2) = Δx[2m(xi+1) + 2b - 2yi - 1]  
Δy  
= Δx[2  
(xi+1) + 2b - 2yi - 1]  
Δx  
= 2Δy(xi+1) - 2Δx.yi + Δx(2b - 1)  
= 2Δy.xi - 2Δx.yi + 2Δy + Δx(2b - 1)  
Vy C = 2Δy + Δx(2b - 1) = Const  
Pi = 2Δy.xi - 2Δx.yi + C  
Nhn xét rng nếu ti bước thi ta xác định được du ca Pi thì xem như ta xác định  
được đim cn chn bước (i+1). Ta có :  
P
i +1 - Pi = (2Δy.xi+1 - 2Δx.yi+1 + C) - (2Δy.xi - 2Δx.yi + C )  
Pi +1 = Pi + 2Δy - 2Δx ( yi+1 - .yi )  
- Nếu Pi < 0 : chn đim P1, tc là yi +1= yi và Pi +1 = Pi + 2Δy.  
- Nếu Pi 0 : chn đim P2, tc là yi +1= yi +1 và Pi +1 = Pi + 2Δy - 2Δx  
- Giá trP0 được tính từ đim vẽ đầu tiên (x0 ,y0 ) theo công thc :  
P0 = 2Δy.x0 - 2Δx.y0 + C  
Do (x0 ,y0 ) là đim nguyên thuc về đon thng nên ta có :  
Δy  
y0 = m .x0 + b =  
.x0 + b  
Δx  
Thế vào phương trình trên ta được :  
P0 = 2Δy - Δx  
Trang 14  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Lưu đồ thut toán Bresenham  
Begin  
dx = x2-x1; dy = y2 - y1;  
P = 2dy-dx; c1 = 2dy; c2 = 2(dy-dx);  
x = x1; y = y1;  
putpixel (x,y,color);  
No  
x < x2  
Yes  
No  
P < 0  
Yes  
P = P + c1  
P = P + c2  
y = y + 1  
x = x +1  
putpixel(x,y,color)  
End  
Trang 15  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Cài đặt minh ha thut toán Bresenham  
Procedure Bres_Line (x1,y1,x2,y2 : integer);  
Var dx, dy, x, y, P, const1, const2 : integer;  
Begin  
dx : = x2 - x1; dy : = y2 - y1;  
P : = 2*dy - dx;  
Const1 : = 2*dy ; const2 : = 2*(dy - dx) ;  
x:= x1; y:=y1;  
Putpixel ( x, y, Color);  
while (x < x-2 ) do  
begin  
x : = x +1 ;  
if (P < 0) then P : = P + const1  
else  
begin  
y : = y+1 ;  
P : = P + const2  
end ;  
putpixel (x, y, color) ;  
end ;  
End ;  
Nhn xét :  
Thut toán Bresenham chthao tác trên snguyên và chtính toán trên phép cng  
và phép nhân 2 (phép dch bit). Điu này là mt ci tiến làm tăng tc độ đáng kso vi  
thut toán DDA.  
Ý tưởng chính ca thut toán này là chxét du Pi để quyết định đim kế tiếp,  
và sdng công thc truy hi Pi +1 - Pi để tính Pi bng các phép toán đơn gin trên số  
nguyên.  
Tuy nhiên, vic xây dng trường hp tng quát cho thut toán Bresenham có phc  
tp hơn thut toán DDA.  
Trang 16  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
1.4. Thut toán vẽ đường tròn  
Trong hta độ Descartes, phương trình đường tròn bán kính R có dng:  
Vi tâm O(0,0) :  
x2 + y2 = R2  
Vi tâm C(xc,yc): (x - xc )2 + (y - yc )2 = R2  
Trong hta độ cc :  
x = xc + R.cosθ  
y = yc + Y.sinθ  
vi θ ∈ [0, 2π].  
Do tính đối xng ca đường tròn C (xem hình 1.7) nên ta chcn v1/8 cung tròn,  
sau đó ly đối xng qua 2 trc ta độ và 2 đường phân giác thì ta vẽ được cả đường tròn.  
y
(-x,y)  
(x,y)  
(-y,x)  
(y,x)  
R 2  
x
2
(-y,-x)  
(y,-x)  
(-x,-y)  
(x,-y)  
Hình 1.7 : Đường tròn vi các đim đối xng.  
1.4.1. Thut toán đơn gin  
Cho x = 0, 1, 2, ..., int( R 2 ) vi R>1.  
2
- Ti mi giá trx, tính int(y = R2 x2 ).  
- Vẽ đim (x,y) cùng 7 đim đối xng ca nó.  
Cài đặt minh ha thut toán đơn gin.  
Trang 17  
 
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Procedure Circle (xc, yc, R : integer) ;  
Var x, y : integer ;  
Procedure DOIXUNG ;  
Begin  
putpixel (xc + x , yc +y, color) ;  
putpixel (xc - x , yc + y, color) ;  
putpixel (xc + x , yc - y, color) ;  
putpixel (xc - x , yc- y, color) ;  
putpixel (xc + y , yc + x, color) ;  
putpixel (xc - y , yc + x, color) ;  
putpixel (xc + y , yc - x, color) ;  
putpixel (xc - y , yc - x, color) ;  
End ;  
Begin  
For x : = 0 to round(R*Sqrt(2)/2) do  
Begin  
y : = round(Sqrt(R*R - x*x)) ;  
DOIXUNG;  
End ;  
End ;  
1.4.2. Thut toán xét đim gia (MidPoint)  
Do tính đối xng ca đường tròn nên ta chcn v1/8 cung tròn, sau đó ly đối  
xng là vẽ được cả đường tròn. Thut toán MidPoint đưa ra cách chn yi+1 là yi hay yi-1  
bng cách so sánh đim thc Q(xi+1,y) vi đim gia MidPoind là trung đim ca S1 và  
S2. Chn đim bt đầu để vlà (0,R). Gis(xi, yi) là đim nguyên đã tìm được bước  
thi (xem hình 1.8), thì đim (xi+1, yi+1) bước i+1 là sla chn gia S1 và S2.  
xi+1= xi + 1  
yi+1=  
yi - 1  
yi  
Trang 18  
 
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
(xi,yi)  
S1  
Q(xi+1,y)  
yi  
yi+1  
MidPoint  
yi - 1  
S2  
Hình 1.8 : Đường tròn vi đim Q(xi+1, y) và đim MidPoint.  
Đặt F(x,y) = x2 + y2 - R2 , ta có :  
. F(x,y) < 0 , nếu đim (x,y) nm trong đường tròn.  
. F(x,y) = 0 , nếu đim (x,y) nm trên đường tròn.  
. F(x,y) > 0 , nếu đim (x,y) nm ngoài đường tròn.  
Xét Pi = F(MidPoint) = F(xi +1, yi - 1/2). Ta có :  
- Nếu Pi < 0 : đim MidPoint nm trong đường tròn. Khi đó, đim thc Q gn vi đim  
S1 hơn nên ta chn yi+1 = yi .  
- Nếu Pi >= 0 : đim MidPoint nm ngòai đường tròn. Khi đó, đim thc Q gn vi đim  
S2 hơn nên ta chn yi+1 = yi - 1.  
Mt khác :  
Pi+1 - Pi = F(xi+1 +1, yi+1 - 1/2) - F(xi + 1, yi - 1/2)  
= [(xi+1 +1)2 + (yi+1 - 1/2)2 - R2 ] - [(xi +1)2 + (yi - 1/2)2 - R2 ]  
= 2xi + 3 + ((yi+1)2 + (yi)2 ) - (yi+1 - yi)  
Vy :  
- Nếu Pi < 0 : chn yi+1 = yi. Khi đó Pi+1 = Pi + 2xi +3  
- Nếu Pi >= 0 : chn yi+1 = yi - 1. Khi đó Pi+1 = Pi + 2xi - 2yi +5.  
- Pi ng vi đim ban đầu ( x0 , y0 ) = (0,R) là:  
5
P0 = F(x0 + 1, y0 - 1/2) = F(1, R - 1/2) = -R  
4
Trang 19  
Chương 1: Gii thiu thut toán vvà tô các đường cơ bn  
Lưu đồ thut toán MidPoint vẽ đường tròn  
Begin  
P = 5/4 - R;  
x=0 ; y= R;  
Putpixel(x,y,c);  
No  
x < y  
Yes  
No  
P < 0  
Yes  
P = P + 2*x + 3  
P = P + 2*(x-y)+5  
y = y - 1  
x = x +1  
putpixel(x,y,color)  
End  
Trang 20  
Tải về để xem bản đầy đủ
pdf 159 trang baolam 09/05/2022 5180
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kỹ thuật đồ họa", để 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:

  • pdfgiao_trinh_ky_thuat_do_hoa.pdf