+ All Categories
Home > Documents > 76404645 DHMT Bai Giang Tom Tat

76404645 DHMT Bai Giang Tom Tat

Date post: 05-Apr-2018
Category:
Upload: le-anh-tuan
View: 214 times
Download: 0 times
Share this document with a friend

of 112

Transcript
  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    1/112

    Bi Ging Tom Tt: Ha My Tnh

    MUC LUC

    Chng 1 .....................................................................................................4

    GII THIU VHO A MY TINH ...................................................................4Tng quan h a my tinh ...........................................................................4

    Cc ng dung cua h a my tinh .................................................................4

    Cc thnh phn c ban cua hh a my tinh ................................................4

    1.4 H ta th gii thc, h ta thit b v h ta chun ....................... 5

    7

    Chng 2 .....................................................................................................8

    CC THUT TON .........................................................................................8

    VE I TNG HO A C BAN .....................................................................8

    2.1 Thut ton v on thng .........................................................................8

    2.1.1 Thut ton DDA (Digital DifferentialAnalyzer) .........................................92.1.2 Thut ton Bresenham ......................................................................112.1.3 Thut ton MidPoint ..........................................................................14

    2.2 Thut ton v ng trn ........................................................................17

    2.2.1 Thut ton n gian ..........................................................................182.2.2 Thut ton MidPoint ..........................................................................19

    2.3 Thut ton v Ellipse ..............................................................................21

    2.4. ng cong tham s..............................................................................242.4.1. ng cong Bezier ..............................................................................24

    2.4.1.1. Thut ton de Casteljau ..............................................................242.4.1.2. Thut ton Horner ......................................................................27

    2.4.2. ng cong B-Spline ..........................................................................30

    31

    Bi tp chng 2 .........................................................................................37

    Chng 3 ....................................................................................................39

    T MAU ......................................................................................................39

    Gii thiu vm u sc ..................................................................................39

    T mu n gian .........................................................................................39

    3.3 T mu theo dng qut ..........................................................................43

    3.4 T mu theo bin ..................................................................................44

    Bi tp chng 3 .........................................................................................46

    Khoa Cng ngh Thng tin i hc Lt Trang 1

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    2/112

    Bi Ging Tom Tt: Ha My Tnh

    Chng 4 ....................................................................................................47

    PHEP BIN I HAI CHIU ............................................................................47

    4.1 Cc php ton c s vi ma ma trn. .......................................................47

    4.2 Php tnh tin ........................................................................................48

    4.3 Php bin i t l .................................................................................49

    Php quay .................................................................................................49

    4.5 Php i xng .......................................................................................52

    4.6 Php bin dng ......................................................................................53

    4.7 Php bin i Affine ngc ......................................................................54

    4.8 H ta thun nht ..............................................................................55

    4.9 Kt hp cc php bin i........................................................................56

    Bi tp chng 4 .........................................................................................59

    Chng 5 ....................................................................................................60

    GIAO CC I TNG HO A .....................................................................60

    Chng 6 ....................................................................................................85

    HO A BA CHIU .......................................................................................85

    Khoa Cng ngh Thng tin i hc Lt Trang 2

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    3/112

    Bi Ging Tom Tt: Ha My Tnh

    M U

    ha my tnh l mt trong nhng lnh vc hp dn v pht trin nhanh caCng ngh Thng tin. N c ra i bi s kt hp ca 2 lnh vc thng tin v truyn

    hnh, v c s dng rng ri trong hu ht cc ng dng nh khoa hc v cng ngh, yhc, gio dc, kin trc, v k c gii tr. u tin k thut ha c pht trin bi ccnhm k s s dng my tnh ln. Trong giai on u ca s pht trin ngi ta phi tnnhiu tin cho vic trang b cc thit b phn cng. Ngy nay, nh vo s tin b ca vix l, gi thnh ca my tnh cng lc cng ph hp vi ti tin ca ngi s dng trongkhi cc k thut ng dng ha ca n ngy cng cao hn nn c nhiu ngi quan tmnghin cu n lnh vc ny. Chng ta c th v ra nhng hnh nh khng ch l nh tnhm cn c th bin i thnh nhng hnh nh sinh ng qua cc php quay, tnh tin... Dovy, ha my tnh tr thnh mt lnh vc l th v c nhiu ng dng trong thc t.Tuy nhin, vic dy v hc k thut ha th khng n gin do ch ny c nhiu

    phc tp, quan n tin hc v ton hc bi v hu ht cc gii thut v, t mu cng ccphp bin hnh u c xy dng da trn nn tng ca hnh hc khng gian hai chiuv ba chiu.

    Gio trnh ha my tnh l mt mn hc c ging dy cho sinh vin chuynngnh Cng ngh Thng tin vi 45 tit l thuyt v 30 tit thc tp. Ni dung ca giotrnh ha my tnh ny tp trung vo 2 vn chnh nh sau :

    Trnh by cc thut ton v v t cc ng c bn nh ng thng, a gic,ng trn, ellipse v cc ng Bezier, B-Spline. Cc thut ton ny gip cho

    sinh vin c th t mnh thit k v v t mt hnh no . Ni dung th hai cp n ha hai chiu bao gm cc php bin iAffine, tm giao cc i tng, t mu, v quan st, hin th, bin i Affinenh ba chiu.

    Gio trnh ha my tnh ny c xy dng da trn kinh nghim ging dy qua v da trn ti liu tham kho chnh l : Donald Hearn, M. Pauline Baker;Computer Graphics; Prentice-Hall, Inc., Englewood Cliffs, New Jersey , 1986.

    Trong qu trnh bin son chc khng trnh khi s st, ti xin trn trng nhnc s gp ca cc qu ng nghip v sinh vin gio trnh ngy cng c honthin hn.

    Khoa Cng ngh Thng tin i hc Lt Trang 3

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    4/112

    Bi Ging Tom Tt: Ha My Tnh

    Chng 1

    GII THIU V HOA MY TINH

    Ni dung chnh

    Tng quan v ha my tnh. Cc ng dng ca ha my tnh. Cc thnh phn c bn ca h ha my tnh. H ta thc v h ta ha.

    Tng quan ha my tnh

    ha my tnh l tt c nhng g lin quan n vic s dng my tnh pht sinh

    ra hnh nh. Cc vn lin quan n cng vic ny bao gm: to, lu tr, thao tc trncc m hnh v cc nh.

    Ngy nay, hu ht cc chng trnh son tho, bng tnh s dng ha trong giaodin vi ngi dng. S pht trin ca ha my tnh ngy cng rng ri vi cc ch ha hai chiu (2D) v 3 chiu (3D), v cao hn, n phc v trong cc lnh vc x hihc khc nhau nh khoa hc, gio dc, y hc, k thut, thng mi v gii tr. Tnh hpdn v a dng ca ha my tnh c th c minh ha rt trc quan thng qua vickho st cc ng dng ca n.

    Cc ng dng ca ha my tnhNgy nay, ha my tnh c s dng trong rt nhiu lnh vc khc nhau nh

    cng nghi p, thng mi, qun l, gio dc, gii tr, S lng cc chng trnh hang dng rt ln v pht trin lin tc. Sau y l mt s ng dng tiu biu:

    H tr thit k Biu din thng tin Gii tr, ngh thut Gio dc, o to Giao tip gia ngi v my tnh

    Cc thnh phn c bn ca h ha my tnh

    2.1 Phn cng

    Thit b thu nhn: bn phm, chut, my qut, camera, ... Thit b hin th: cc loi mn hnh CRT, LCD, Thit b tng tc: gng tay, knh 3D,

    Khoa Cng ngh Thng tin i hc Lt Trang 4

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    5/112

    Bi Ging Tom Tt: Ha My Tnh

    2.2 Phn mm

    Phn mm ha c th phn thnh 2 loi: cc cng c l p trnh v cc trnh ngdng ha phc v cho mt mc ch no . Cc cng c l p trnh cung cp mt t pcc th vin ha c th c dng trong cc ngn ng l p trnh cp cao nh Pascal,

    C/C++/C#, Java, hay thm tr c c mt th vin ha c th nhng vo cc ngnng l p trnh cp bt k nh OpenGL, DirectX. Cc hm c s ca n bao gm vic tocc i tng c s ca hnh nh nh on thng, a gic, ng trn, thay i musc, chn khung nhn, bin i affine,

    pht trin cc ng dng ha my tnh cn c cc loi phn mm sau:

    To m hnh: 3DS Max, Maya, L p trnh, pht trin ng dng: OpenGL, DirectX,

    1.4 H ta th gii thc, h ta thit b v h ta chunMt h ha c m t bao gm 3 min nh sau:

    Min iu khin : bao bc ton b h thng. Min thc : nm trong min iu khin. Khi mt s no thm nhp vo

    min thc, n s c chuyn thnh s thc du phy ng, v khi c mt sri khi min ny th n s c chuyn thnh s nguyn c du 16 bit.

    Min hin th : nm trong min iu khin nhng phn bit vi min thc. Chc s nguyn 16 bit mi nm trong min hin th.

    Trong lnh vc k thut ha, chng ta phi hiu c rng thc cht ca hal lm th no c th m t v bin i c cc i tng trong th gii thc trnmy tnh. Bi v, cc i tng trong th gii thc c m t bng ta thc. Trongkhi , h ta thit b li s dng h ta nguyn hin th cc hnh nh. y chnhl vn c bn cn gii quyt. Ngoi ra, cn c mt kh khn khc na l vi cc thitb khc nhau th c cc nh ngha khc nhau. Do , cn c mt phng php chuyni tng ng gia cc h ta v i tng phi c nh ngha bi cc thnh phnn gin nh th no c th m t gn ng vi hnh nh thc bn ngoi.

    Hai m hnh c bn ca ng dng ha l da trn mu s ha v da trn c

    trng hnh hc. Trong ng dng ha da trn mu s ha th cc i tng hac to ra bi li cc pixel ri rc. Cc pixel ny c th uc to ra bng cc chngtrnh v, my qut, ... Cc pixel ny m t ta xc nh v tr v gi tr mu. Thun lica ng dng ny l d dng thay i nh bng cch thay i mu sc hay v tr ca ccpixel, hoc di chuyn vng nh t ni ny sang ni khc. Tuy nhin, iu bt li l khngth xem xt i tng t cc gc nhn khc nhau. ng dng ha da trn c trnghnh hc bao gm cc i tng ha c s nh on thng, a gic,.... Chng c

    Khoa Cng ngh Thng tin i hc Lt Trang 5

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    6/112

    Bi Ging Tom Tt: Ha My Tnh

    lu tr bng cc m hnh v cc thuc tnh. V d : on thng c m hnh bng haiim u v cui, c thuc tnh nh mu sc, dy. Ngi s dng khng thao tc trctip trn cc pixel m thao tc trn cc thnh phn hnh hc ca i tng.

    1.1. H ta th gii thc

    Mt trong nhng h ta thc thng c dng m t cc i tng trong thgii thc l h ta Descartes. Vi h ta ny, mi im P c biu din bng mtcp ta (xp,yp) vi xp, ypR (xem hnh 1.1).

    Trong :

    Ox : gi l trc honh. Oy : gi l trc tung. xp : honh im P. yp : tung im P.

    1.2. H ta thit b

    H ta thit b c dng cho mt thit b xut c th no , v d nh my in,mn hnh,.. Trong h ta thit b th cc im cng c m t bi cp ta (x,y).Tuy nhin, khc vi h ta thc l x, y N. iu ny c ngha l cc im trong hta thc c nh ngha lin tc, cn cc im trong h ta thit b l ri rc.Ngoi ra, cc ta x, y ca h ta thit b ch biu din c trong mt gii hn no ca N.

    Khoa Cng ngh Thng tin i hc Lt Trang 6

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    7/112

    Bi Ging Tom Tt: Ha My Tnh

    V d : phn gii ca mn hnh trong ch ha l 640x480. Khi ,x(0,640) v y(0,480) (xem hnh 1.2).

    1.3. H ta thit b chun

    Do cch nh ngha cc h ta thit b khc nhau nn mt hnh nh hin th ctrn thit b ny l chnh xc th cha chc hin th chnh xc trn tht b khc. Ngi taxy dng mt h ta thit b chun i din chung cho tt c cc thit b c th mt cc hnh nh m khng ph thuc vo bt k thit b no.

    Trong h ta chun, cc ta x, y s c gn cc gi tr trong on t [0,1].Nh vy, vng khng gian ca h ta chun chnh l hnh vung n v c gc tridi (0, 0) v gc phi trn l (1, 1).

    Qu trnh m t cc i tng thc nh sau (xem hnh 1.3):

    Khoa Cng ngh Thng tin i hc Lt Trang 7

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    8/112

    Bi Ging Tom Tt: Ha My Tnh

    Chng 2

    CC THUT TON

    VE I TNG HOA C BAN

    Ni dung chnh

    Cc thut ton v on thng. Thut ton MidPoint v ng trn, ellipse.

    2.1 Thut ton v on thng

    Xt on thng c h s gc 0

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    9/112

    Bi Ging Tom Tt: Ha My Tnh

    2.1.1 Thut ton DDA (Digital DifferentialAnalyzer)

    DDA l thut ton tnh ton cc im v dc theo ng thng da vo h s gcca phng trnh ng thng y=mx+b.

    Trong : m= y/x, y = yi+1 - yi , x = xi+1 - xi

    Nhn thy trong hnh v 2.1 th ta ca im x s tng 1 n v trn mi im v,cn vic quyt nh chn yi +1 l yi +1 hay yi s ph thuc vo gi tr sau khi lm trn catung y. Tuy nhin, nu tnh trc tip gi tr thc ca y mi bc t phng trnhy=mx+b th cn mt php ton nhn v mt php ton cng s thc.

    yi +1 = mxi +1 + b = m(xi + 1) + b = mxi + b + m

    ci thin tc , ngi ta kh php nhn trn s thc.

    Ta c : yi = mxi + b

    yi +1 = yi + m int (yi +1)

    Tm li khi 0

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    10/112

    Bi Ging Tom Tt: Ha My Tnh

    yi +1:= yi 1

    Hnh 2.2 : Hai trng hp m>1 v 0

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    11/112

    Bi Ging Tom Tt: Ha My Tnh

    end

    end;

    Tng t, c th tnh ton cc im v cho trng hp m

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    12/112

    Bi Ging Tom Tt: Ha My Tnh

    Pi = x (d1 - d2) = x[2m(xi+1) + 2b - 2yi - 1]

    = 2y(xi+1) - 2x.yi + x(2b - 1)

    = 2y.xi - 2x.yi + 2y + x(2b - 1)

    Vy C = 2y + x(2b - 1) = Const

    Pi = 2y.xi - 2x.yi + C

    Nhn xt rng nu ti bc th i ta xc nh c du ca Pi th xem nh ta xc nhc im cn chn bc (i+1). Ta c :

    Pi +1 - Pi = (2y.xi+1 - 2x.yi+1 + C) - (2y.xi - 2x.yi + C )

    Pi +1 = Pi + 2y - 2x ( yi+1 - .yi )

    - Nu Pi < 0 : chn im P1, tc l yi +1= yi v Pi +1 = Pi + 2y.

    - Nu Pi 0 : chn im P2, tc l yi +1= yi +1 v Pi +1 = Pi + 2y - 2x

    - Gi tr P0 c tnh t im v u tin (x0, y0 ) theo cng thc :

    P0 = 2y.x0 - 2x.y0 + C

    Do (x0 ,y0 ) l im nguyn thuc v on thng nn ta c :

    Th vo phng trnh trn ta c :

    P0 = 2y x

    Ci t minh ha thut ton Bresenham

    Procedure Bres_Line (x1,y1,x2,y2 : integer);

    Var dx, dy, x, y, P, const1, const2 : integer;

    Begin

    Khoa Cng ngh Thng tin i hc Lt Trang 12

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    13/112

    Bi Ging Tom Tt: Ha My Tnh

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

    Thut ton Bresenham ch thao tc trn s nguyn v ch tnh ton trn php cngv php nhn 2. iu ny l mt ci tin lm tng tc ng k so vi thut tonDDA.

    tng chnh ca thut ton ny l ch xt du Pi quyt nh im k tip,v s dng cng thc truy hi Pi +1 - Pi tnh Pi bng cc php ton n gintrn s nguyn.

    Tuy nhin, vic xy dng trng hp tng qut cho thut ton Bresenham c phctp hn thut ton DDA.

    Khoa Cng ngh Thng tin i hc Lt Trang 13

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    14/112

    Bi Ging Tom Tt: Ha My Tnh

    2.1.3 Thut ton MidPoint

    Thut ton MidPoint c Pitteway cng b 1967, Van Aken ci tin 1984. Gi s ta chn P v, xc nh pixel tip theo ti N hay NE. Giao ca ng thng vi Xp+1 tiQ, M l trung im ca NE v E.

    tng: M nm pha no ca ng thng, nu M pha trn ng thng th chn E,ngc li chn NE.

    Nhim v: Xc nh M u.

    Hnh 2.4: Thut ton MidPoint v on thng

    Phng trnh ng thng: F(x,y)=ax+by+c

    a = dy, b = - dx, c = B.dx

    Gi tr hm ti M: F(M)=F(xp+1, yp+1/2) = do Nu d > 0, M nm di ng thng th chn NE.o Nu d < 0, M nm pha trn th chn E.

    o Nu d = 0, chn E hay NE ty . Gi tr ca hm ti M ca ca im tip theo s v

    o Gi gi tr d va tnh l:

    o Gi s va chn E:

    Khoa Cng ngh Thng tin i hc Lt Trang 14

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    15/112

    Bi Ging Tom Tt: Ha My Tnh

    o Gi s va chn NE:

    dnew=dold + a + b = dold + (dy - dx)

    (dy dx) l s gia ca im tip theo

    Tnh gi tr khi u ca do Gi s v on thng t (x0, y0) n (x1, y1) trung im th nht c ta (x0+1, y0+1/2)

    o F(x0, y0) = 0 dstart = a + b/2 = dy dx/2o

    Trnh s thp phn ca dstart, nh ngha li hm nh sauF(x,y)=2(ax+by+c)

    o Do vy, ta c

    dstart = 2dy - dx; E = 2dy; NE = 2(dy - dx)

    Ci t minh ha thut ton MidPoint

    procedure MidpointLine(x0, y0, x1, y1,

    color: integer)

    var

    dx, dy, x, y, d, incrE, incrNE:

    Khoa Cng ngh Thng tin i hc Lt Trang 15

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    16/112

    Bi Ging Tom Tt: Ha My Tnh

    integer;

    begin

    dx := x1 x0;

    dy := y1 y0;

    d := 2*dy-dx;

    incrE := 2*dy;

    incrNE := 2*(dy-dx);

    x :=x0;

    y :=y0;

    WritePixel(x, y, color);

    while x

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    17/112

    Bi Ging Tom Tt: Ha My Tnh

    end

    WritePixel(x, y, color);

    end {while}

    end;

    2.2 Thut ton v ng trn

    Trong h ta Descartes, phng trnh ng trn bn knh R c dng:

    Vi tm O(0,0) : x2 + y2 = R2

    Vi tm C(xc, yc): (x - xc)2 + (y - yc )2 = R2

    Trong h ta cc :

    x = xc + R.cos y = yc + Y.sin

    vi [0, 2].

    Hnh 2.5: 8 im i xng trong ng trn

    Do tnh i xng ca ng trn C (xem hnh 2.5) nn ta ch cn v 1/8 cung trn, sau ly i xng qua 2 trc ta v 2 ng phn gic th ta v c c ng trn.

    Khoa Cng ngh Thng tin i hc Lt Trang 17

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    18/112

    Bi Ging Tom Tt: Ha My Tnh

    2.2.1 Thut ton n gin

    Cho x = 0, 1, 2, ..., int(2

    2R ) viR > 1.

    Ti mi gi tr x, tnh int(y =22 xR ).

    V im (x,y) cng 7 im i xng ca n.

    Ci t minh ha thut ton n gin

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

    Khoa Cng ngh Thng tin i hc Lt Trang 18

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    19/112

    Bi Ging Tom Tt: Ha My Tnh

    DOIXUNG;

    End ;

    End ;

    2.2.2 Thut ton MidPoint

    Do tnh i xng ca ng trn nn ta ch cn v 1/8 cung trn, sau ly ixng l v c c ng trn. Thut ton MidPoint a ra cch chn y i+1 l yi hay yi-1bng cch so snh im thc Q(xi+1,y) vi im gia MidPoind l trung im ca S1 vS2. Chn im bt u v l (0,R). Gi s (x i, yi) l im nguyn tm c bcth i (xem hnh 2.6), th im (xi+1, yi+1) bc i+1 l s la chn gia S1 v S2.

    Hnh 2.6 : ng trn vi im Q(x +1, y) v im MidPoint.t F(x,y) = x2 + y2 - R2, ta c :

    F(x,y) < 0 , nu im (x,y) nm trong ng trn. F(x,y) = 0 , nu im (x,y) nm trn ng trn. F(x,y) > 0 , nu im (x,y) nm ngoi ng trn.

    Khoa Cng ngh Thng tin i hc Lt Trang 19

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    20/112

    Bi Ging Tom Tt: Ha My Tnh

    Xt Pi = F(MidPoint) = F(xi +1, y- 1/2). Ta c :

    Nu Pi < 0 : im MidPoint nm trong ng trn. Khi , im thc Q gn viim S1 hn nn ta chn yi+1 = yi.

    Nu Pi >= 0 : im MidPoint nm ngai ng trn. Khi , im thc Q gn vi

    im S2 hn nn ta chn yi+1 = yi - 1.

    Mt khc :

    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 :

    Nu Pi < 0 : chn yi+1 = yi. Khi , Pi+1 = Pi + 2xi + 3 Nu 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:

    P0 = F(x0 + 1, y0 - 1/2) = F(1, R - 1/2) = 5/4 R

    Minh ha thut ton MidPoint

    Procedure DTR(xc, yc, r, mau : integer);

    var x, y, p : integer ;

    Begin

    x:=0 ; y:=r;

    p:=1 - r;

    while ( y > x) do

    begin

    doi_xung;

    if (p < 0) then p:=p + 2*x + 3

    else begin

    Khoa Cng ngh Thng tin i hc Lt Trang 20

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    21/112

    Bi Ging Tom Tt: Ha My Tnh

    p := p + 2*(x - y) + 5 ;

    y :=y - 1;

    end;

    x := x + 1;

    end; {while}

    End;

    2.3 Thut ton v Ellipse

    Phng trnh elp c tm ti gc ta

    p dng gii php trung im v ng trn v elp. Tnh i xng ca elp: khi bitta 1 im c th d dng suy ra ta ba im khc.

    Hnh 2.7: Phn chia hai min ca ellipse

    Tm ranh gii hai min trong elp

    V tr: im P l tip im ca tip tuyn c h s gc 1 Xc nh: Vc t vung gc vi tip tuyn ti tip im -> gradient

    Ti P1 cc thnh phn i v j ca vc t gradient c cng ln.

    tng: nh gi hm ti im gia hai ta pixel chn v tr tip theo v. Duca n cho bit im gia nm trong hay ngoi elp.

    Khoa Cng ngh Thng tin i hc Lt Trang 21

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    22/112

    Bi Ging Tom Tt: Ha My Tnh

    Vi vng 1

    Hnh 2.8: Phn tch v hai min ca ellipse

    Tnh bin quyt nh d = F(x, y) = F(xp + 1, yp - 1/2) Nu d < 0: chn E, x tng 1, y khng thay i.

    Nu d0: chn SE, x tng 1, y gim 1.

    Vi vng 2:

    Tnh bin quyt nh d = F(x, y) = F(xp + 1/2, yp - 1)o Nu d < 0: chn SE, x tng 1, y gim 1.o Nu d 0: chn S, x khng tng, y gim 1.

    Tm s gia nh vng 1 S = a2(-2yp + 3) SE = b2(2xp + 2) + a2(-2y + 3)

    Tm gi tr khi u ca s gia d

    Min 1:o Gi s a, b nguyn; im bt u v l (0, b)o im gia th nht: (1, b - 1/2)

    Khoa Cng ngh Thng tin i hc Lt Trang 22

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    23/112

    Bi Ging Tom Tt: Ha My Tnh

    Min 2: Ph thuc vo im gia (xp+1, yp-1/2) ca im tip theo im cuicng ca min 1.

    Minh ha thut ton MidPoint v Ellipse

    procedure draw_ellipse(a, b, color: integer);

    var x, y: integer; d1, d2: real;beginx:=0; {Khi ng}y:=b;d1:=b2-a2b+a2/4;EllipsePoints(x, y, color);while (a2(y-1/2)>b2(x+1)) do {Vng 1}begin

    if d10 do {Vng 2}begin

    if d2

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    24/112

    Bi Ging Tom Tt: Ha My Tnh

    y:=y-1endelsebegin

    d2:=d2+a2(-2*y+3);

    y:=y-1endEllipsePoints (x, y, color);end {Vng 2}

    end

    2.4. ng cong tham s

    2.4.1. ng cong Bezier

    2.4.1.1. Thut ton de CasteljauThut ton de Casteljau s dng mt dy cc im iu khin xy dng vi m gi trt trong on [0, 1] tng ng vi mt im P(t). Do , thut ton sinh ra mt dy ccim t t p cc im cho trc. Khi cc im iu khin thay i, ng cong s thayi theo. Cch xy dng da trn mt lot cc php ni suy tuyn tnh v do rt ddng giao tip. Ngoi ra, phng php cng suy ra nhiu tnh cht hu ch ca ngcong.

    Parabol da trn ba im

    Trong mt phng R2xt ba imP0, P1, P2. t

    Trong , t [0, 1]. Ni cch khc, vi mi t [0, 1], cc im )(10 tP , )(1

    1 tP nm trncc on thng P0P1 v P1P2 tng ng.

    Khoa Cng ngh Thng tin i hc Lt Trang 24

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    25/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 2.9: ng cong Bezier xc nh bi ba im iu khin

    L p li php ni suy tuyn tnh trn cc im mi )(10 tP v )(1

    1 tP ta c:

    Qu tch ca )(:)( 20 tPtP = khi t thay i trong on [0, 1] s cho ta ng cong nhhnh (b) trn.

    D dng ch ra rng

    Suy raP(t) l ng cong parabol theo bin t.

    V d: Phng trnh ng cong BezierP(t) tng ng ba im iu khin P0(0, 0),P1(2,2),P2(6, 0) l

    Khoa Cng ngh Thng tin i hc Lt Trang 25

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    26/112

    Bi Ging Tom Tt: Ha My Tnh

    Tng qut cho trng hp s im iu khin 3 ta c:

    Thut ton de Casteljau cho L + 1 im iu khin

    Trong mt phng R2xtL+1 im P0, P1,..., PL. Vi mi gi tr t cho trc, ta xy dngtheo quy np ng cong )(0 tP

    L nh sau:

    1. [Khi to] t r = 0 v ir

    iPtP =:)( vi mi i=0, 1, , L-r.

    2. [Kt thc?] Nu r = L dng; ngc li t

    3. Thay rbi r+1 v chuyn sang bc 2.

    Minh ha thut ton Casteljau

    Casteljau(float t)Begin

    Point2D Q[MaxVertices];int i, r;for (i = 0; i

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    27/112

    Bi Ging Tom Tt: Ha My Tnh

    ve ng cong Bezier ta ch cn p dng gi hm Casteljau trong th tucDrawCurve sau:

    DrawCurve(float a, float b, int NumPoints)Begin

    float Delta = (b - a)/(float)NumPoints;float t = a;int i;moveto(Casteljau(t).x, Casteljau(t).y);for (i = 1; i

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    28/112

    Bi Ging Tom Tt: Ha My Tnh

    l a thc Bernstein, v

    k

    Ll t hp ch p kcaL phn t.

    V d, t nh ngha trn, ta c cc a thc Bernstein bc ba:

    th minh ha ca bn a thc ny khi t [0, 1]:

    Khoa Cng ngh Thng tin i hc Lt Trang 28

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    29/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 2.10 . Cc a thc Bernstein bc ba

    V d phng trnh tham s ca ng cong Bezier tng ng bn im iu khinP0(0,0),P1(2, 3),P2(6, 0),P3 (9, 2) c dng:

    V ng cong Bezier qua a thc Bernstein

    Da vo lc Horner tnh gi tr a thc Bernstein, ta xy dng th tc xc nhng cong Bezier hiu qu hn Casteljau. Mt v d nhn lng nhau ca lc Hornertrong trng hp a thc bc ba:

    Tng t vi ng cong Bezier bc ba:

    trong ,s = 1 t.Nhn xt rng:

    Do , ta c chng trnh tnh gi tr hm BezierP(t) trong trng hp tng qut, viNumVertices chnh l s im iu khinL+1.

    Minh ha thut ton Horner

    Horner_Bezier(float t)Begin

    int i, L_choose_i;

    Khoa Cng ngh Thng tin i hc Lt Trang 29

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    30/112

    Bi Ging Tom Tt: Ha My Tnh

    float Fact, s;Point2D Q;s = 1.0 - t;Fact = 1.0;L_choose_i = 1;

    Q.x = P[0].x*s;Q.y = P[0].y*s;for(i = 1; i < NumVertices; i++)begin

    Fact *= t;L_choose_i *= (NumVertices - i + 1)/i;Q.x = (Q.x + Fact*L_choose_i*P[i].x)*s;Q.y = (Q.y + Fact*L_choose_i*P[i].y)*s;

    endQ.x += Fact*t*P[NumVertices].x;

    Q.y += Fact*t*P[NumVertices].y;return(Q);End

    2.4.2. ng cong B-Spline

    Nhn xt rng ng cong Bezier iu khin mt cch ton cc, ngha l khi mtim iu khin thay i th ton b ng cong cng thay i theo. Trong thc t tamun iu khin mt cch a phng, tc l ta mong mun thay i mt on trnng cong nh hnh 2.11. iu ny ng cong Bezier khng thc hin c. Do ,

    ta cn tm mt lp cc hm trn li m vn gi tnh cht tt ca a thc Bernstein v cchm ny c gi tr cha trong on [0, 1] ngi thit k iu khin a phng ngcong.

    Khoa Cng ngh Thng tin i hc Lt Trang 30

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    31/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 2.11: Thay i ng cong mong mun

    c th iu khin hnh dng cc hm trn, ta cn xy dng cc hm lin tcRk(t)l nhng a thc tng khc. Do ,Rk(t) trn mi khong(ti, ti+1] l a thc no . Suyra ng congP(t) l tng cc a thc tng khc vi trng lng l cc im iu khin.Chng hn, trong khong no , ng cong c dng

    Trong khong k tip, c c cho bi mt tng cc a thc khc, nhng tt c cc oncong ny to thnh mt ng cong lin tc. ng cong ny c gi l ng congSpline. Trn mt h cc hm trn, ta chn xy dng cc hm trn c gi tr nh nht v

    do iu khin a phng tt nht. Khi , ta gi ng cong ny lB-Spline.Mi hmB-Splinephc thuc vo m vc bc m-1, chng ta k hiuNk,m thay choRk(t).Do , phng trnh ng congB-Spline c dng:

    Khoa Cng ngh Thng tin i hc Lt Trang 31

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    32/112

    Bi Ging Tom Tt: Ha My Tnh

    Nh vy, xc nh ng cong B-Spline, ta cn:

    Vector knot T = (t0, t1, ..., ); L +1 im iu khinP0, P1, ..., PL; Bc m ca cc hmB-spline.

    Cng thc xc hm quyB-splineNk,m

    V d, xt vector Knot T=(t0 = 0,t1 = 1,t2 = 2,...) c khong cch gia cc Knot l 1. Khi:

    th ca hm N0,2(t) trn on [0, 2] l cc a thc bc 1 v l mt tam gic vi ccnh (0, 0), (1, 1) v (2, 0).

    Khoa Cng ngh Thng tin i hc Lt Trang 32

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    33/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 2.12: th cc hm B-spline tuyn tnh.

    Trong thc t, m = 3, v m = 4 thng c s dng ng vi ng congB-Sline bc 2v bc 3.

    m = 3

    Khoa Cng ngh Thng tin i hc Lt Trang 33

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    34/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 2.13: th hm B-Spline bc 2(m=2)

    Khoa Cng ngh Thng tin i hc Lt Trang 34

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    35/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 2.14: th hm B-Spline bc 3 (m=4)

    Thut ton minh ha v ng cong B-Spline

    Create_Knot(intm)

    Begin if(NumVertices < m || NumVertices + m > Max)return;

    inti; for(i = 0; i < m; i++) Knot[i] = 0; for(; i Knot[k + 1]) return 0; return 1;

    end else

    begin

    Khoa Cng ngh Thng tin i hc Lt Trang 35

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    36/112

    Bi Ging Tom Tt: Ha My Tnh

    floatSum, Demo1, Demo2;Demo1 = Knot[k + m - 1] - Knot[k];

    if(Demo1 != 0)Sum = (t - Knot[k]) * N(k, m - 1, t) / Demo1;

    else

    Sum = 0;Demo2 = Knot[k + m] - Knot[k + 1];

    if(Demo2 != 0)Sum += (Knot[k + m] - t) * N(k + 1, m - 1, t) / Demo2;

    return Sum;end

    End

    Brestern_Spline(floatt)Begin

    Create_Knot(M); PointQ = newPoint();Q.X = 0;Q.Y = 0;

    floatx = 0, y = 0; for(inti = 0; i

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    37/112

    Bi Ging Tom Tt: Ha My Tnh

    Bi tp chng 2

    1. Vit chng trnh v bu tri c 10.000 im sao, mi im sao xut hinvi mt mu ngu nhin. Nhng im sao ny hin ln ri t t tt cng rt

    ngu nhin.2. Vit chng trnh thc hin 2 thao tc sau :

    - Khi to ch ha, t mu nn, t mu ch, nh dng ch(settextstyle(f,d,s)), xut mt chui k t ra mn hnh. i font, hng, kchthc.- Xut mt chui ra mn hnh, chui ny c t bng. (lu rng ni dung

    chui k t, mu t, mu bng l c nhp t bn phm).3. Vit chng trnh v on thng AB vi mu color theo gii thut DDA.

    Bit rng ta A,B, color c nhp t bn phm. Trang tr mu nn, ghi

    ch cc ta A, B hai u on thng.4. Tng t nh bi tp 3 nhng s dng gii thut MidPoint. Lu cctrng hp c bit ca h s gc.

    5. Tng hp bi tp 4, vit chng trnh v ng thng bng gii thutMidPoint cho tt c cc trng hp ca h s gc. Lu xt trng hp c

    bit khi ng thng song song vi trc tung hay vi trc honh.6. Vit chng trnh v ng trn theo gii thut n gin.7. Vit chng trnh v ng trn theo gii thut MidPoint.8. Vit chng trnh v mt ng trn tm O bn knh R. V cc ng trn

    ng tm vi O, c bn knh chy t 1 n R. Sau xo cc ng trn

    ng tm ny v v cc ng trn ng tm khc i t R n 1.9. Vit chng trnh v mt ng trn tm O bn knh R. Hy v mt on

    thng t tm O di R. Hy quay on thng ny quanh ng trn.10. Vit chng trnh v Elippse.11. Vit chng trnh v Elippse c bn knh ln l a, bn knh nh l b v mt

    ng trn ni tip Elippse. T ng trn bng cc ng trn ng tm.Sau t elippse bng cc elippse ng tm c bn knh ln chy t b na, bn knh nh l b.

    12. Vit chng trnh v mt hnh ch nht, mt hnh vung v mt hnh bnh

    hnh. Yu cu ch thch ta cc nh.13. Vit chng trnh v mt tam gic. Ta cc nh c nhp t bnphm, mi cnh c mt mu khc nhau.

    14. Vit chng trnh v mt a gic c n nh.15. Vit chng trnh v ng cong Bezier vi n im iu khin: P1,

    P2, , Pn nh p t file text.16. Vit chng trnh v ng cong B-Spline vi n im iu khin: P1,

    Khoa Cng ngh Thng tin i hc Lt Trang 37

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    38/112

    Bi Ging Tom Tt: Ha My Tnh

    P2, , Pn nh p t file text.

    Khoa Cng ngh Thng tin i hc Lt Trang 38

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    39/112

    Bi Ging Tom Tt: Ha My Tnh

    Chng 3

    T MAU

    Ni dung chnh

    C s v mu sc. Thut ton t mu theo bin FloodFill. Thut ton t mu bng dng qut Scanvert.

    Gii thiu v mu scT mu mt vng l thay i mu sc ca cc im v nm trong vng cn t. Mt vngt thng c xc nh bi mt ng khp kn no gi l ng bin. Dng ng

    bin n gin thng gp l a gic. Vic t mu thng chia lm 2 cng on :

    Xc nh v tr cc im cn t mu. Quyt nh t cc im trn bng mu no. Cng on ny s tr nn phc tp khi

    ta cn t theo mt mu t no ch khng phi t thun mt mu.

    Gio trnh gii thiu 3 cch tip cn chnh t mu:

    T mu theo tng im (c th gi l t mu n gin). T mu theo dng qut. T mu da theo ng bin.

    T mu n ginThut ton ny bt u t vic xc nh mt im c thuc vng cn t hay khng ? Nung l im thuc vng cn t th s t vi mu mun t.

    T ng trn

    t ng trn th ta tm hnh vung nh nht ngoi tip ng trn bng cch xcnh im trn bn tri (xc-r, yc-r) v im di bn phi (xc+r, yc+r) ca hnh vung(xem hnh 3.1).

    Thut ton

    Cho i i t xc-r n xc+rCho j i t yc-r n yc+r

    Tnh khong cch d gia hai im (i,j) v tm (xc,yc)Nu d

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    40/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 3.1: ng trn ni tip hnh vung.

    T a gic

    Tm hnh ch nht nh nht c cc cnh song song vi hai trc ta cha a giccn t da vo hai ta (xmin, ymin), (xmax, ymax). Trong , xmin, ymin l honh v tung nh nht, xmax, ymax l honh v tung ln nht ca cc nh ca agic.

    Cho x i t xmin n xmax, y i t ymin n ymax (hoc ngc lai). Xt im

    P(x,y) c thuc a gic khng ? Nu c th t vi mu cn t (xem hnh 3.2).

    Hnh 3.2: a gic ni tip hnh ch nht.

    Mt im nm trong a gic th s giao im t mt tia bt k xut pht t im ct bin ca a gic phi l mt s l ln. c bit, ti cc nh cc tr (cc i hay cc

    Khoa Cng ngh Thng tin i hc Lt Trang 40

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    41/112

    Bi Ging Tom Tt: Ha My Tnh

    tiu ) th mt giao im phi c tnh 2 ln (xem hnh 2.5). Tia c th qua phi hay quatri. Thng thng ta chn tia qua phi.

    V d : Xt a gic gm 13 nh l P0, P1, ....., P12 = P0 (xem hnh 2.5).

    Hnh 3.3: a gic c 13 nh.Gi tung ca nh Pi l Pi.y . Nu :

    - Pi.y < Min ( Pi+1.y, Pi-1.y) hay Pi.y > Max ( Pi+1.y, Pi-1.y) th Pi l nh cc tr.- Pi-1.y < Pi.y < Pi+1.y hay Pi-1 > Pi.y > Pi+1.y th Pi l nh n iu.- Pi = Pi+1 v Pi.y < Min( Pi+2.y, Pi-1.y) hay Pi > Max( Pi+2.y, Pi-1.y) th on [Pi, Pi+1]

    l on cc tr.-

    Pi = Pi+1 v Pi-1.y < Pi.y < Pi+2.y hay Pi-1 > Pi.y > Pi+2.y th on [Pi,Pi+1] l on niu.

    Thut ton xc nh im nm trong a gic- Vi mi nh ca a gic ta nh du l 0 hay 1 theo qui c nh sau: nu l nh

    cc tr hay on cc tr th nh s 0. Nu l nh n iu hay on n iu thnh du 1.

    - Xt s giao im ca tia na ng thng t P l im cn xt vi bin ca agic. Nu s giao im l chn th kt lun im khng thc a gic. Ngc li,s giao im l l th im thuc a gic.

    Minh ha thut ton xt im thuc a gic

    Function PointInpoly(d: dinh; P: d_dinh; n: integer)var count, i: integer;

    x_cut: longint;function next(i: integer): integer;begin

    Khoa Cng ngh Thng tin i hc Lt Trang 41

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    42/112

    Bi Ging Tom Tt: Ha My Tnh

    next := (i + n + 1) mod nend;function prev(i: integer): integer;beginprev := (i + n - 1) mod n

    end;

    Begincount := 0;for i := 0 to n-1 do

    if d[i].y = P.y thenbegin

    if d[i].x > P.x thenbegin

    if ((d[prev(i)].y < P.y) and (P.y < d[next(i)].y)) or

    ((d[prev(i)].y > P.y) and (P.y > d[next(i)].y)) thencount := count + 1;if d[next(i)].y = P.y then

    if ((d[prev(i)].y < P.y) and (P.y < d[next(next(i))].y)) or((d[prev(i)].y > P.y and (P.y > d[next(next(i))].y)) then

    count := count + 1;end;

    end else {d[i].y = P.y}if ((d[i].y < P.y) and (P.y < d[next(i)].y)) or((d[i].y > P.y) and (P.y > d[next(i)].y)) then

    beginx_cut := d[i].x + Round((d[next(i)].x - d[i].x)/ (d[next(i)].y - d[i].y) * (P.y - d[i].y));

    if x_cut >= P.x then count := count + 1;end;if (count mod 2 = 0) then PointInPoly := falseelse PointInpoly := true;

    End;

    - Minh ha thut ton t a gic

    Procedure Todg ( d:dinh; n,maubien : integer ; d: dinh; n:integer ) ;var x, y:integer;P: d_dinh;Begin

    for x:=xmin to xmax dofor y:= ymin to ymax dobegin

    Khoa Cng ngh Thng tin i hc Lt Trang 42

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    43/112

    Bi Ging Tom Tt: Ha My Tnh

    P.x:= x; P.y := y;if pointInpoly (d, P, n) thenif getpixel(x,y)maubien then putpixel(x,y,color);

    end;End;

    Nhn xt: Thut ton t n gin c u im l t rt mn v c th s dng c cho agic li hay a gic lm, hoc a gic t ct, ng trn, ellipse. Tuy nhin, gii thutny s tr nn chm khi ta phi gi hm PointInpoly nhiu ln. khc phc nhc imny ngi ta a ra thut ton t mu theo dng qut.

    3.3 T mu theo dng qut

    tng: S dng giao im gia cc bin a gic v ng qut nhn ra pixel ctrong a gic?

    Cc bc thut ton:

    - Tm ymin, ymax ln lt l gi tr nh nht, ln nht ca tp cc tung ca ccnh ca a gic cho.

    - ng vi mi dng qut y = k vi k thay i t ymin n ymax, lp :- Tm tt c cc honh giao im ca dng qut y = k vi cc cnh ca a gic.- Sp xp cc honh giao im theo th t tng dn : x0 ,x1 ,..., xn ,...- V cc on thng trn ng thng y = k ln lt c gii hn bi cc cp cch

    qung nhau: (x0, x1), ( x1, x2 ), ....

    Thut ton

    ScanConvert( Polygon P, Color C)Begin

    For y:=0 To ScreenYMax DoBegin

    I

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    44/112

    Bi Ging Tom Tt: Ha My Tnh

    Sp xp I: X tng dn vV on thng cch qung theo mu C;

    End;End;

    3.4 T mu theo bin

    tng

    Thut ton nhm t mu vng kn, gii hn bi mu Bcolor, m s dng t lFcolor vi im (x,y) nm trong vng t mu.

    Thut s dng php gi quy, ban u (x,y) c kim tra mu, nu mu ca nl Fcolor hoc Bcolor th tin trnh kt thc. Trong trng hp ngc li, im(x,y) c t vi mu Fcolor v qu trnh gi quy vi cc im lng ging ca(x,y). Cc im lng ging c s dng l 4 lng ging.

    XX (x,y) X

    X

    4 lng ging ca (x,y): (x+1,y), (x-1,y), (x,y+1),(x,y-1)

    Chng trnh minh ha

    BoundaryLine(int x, int y, int Bcolor, int Fcolor)

    Begin if(getPixel(x, y) Bcolor || getPixel(x, y) Fcolor)Begin

    putPixel(x, y,Fcolor) = Fcolor;Boundary(x+1,y,Bcolor,Fcolor);Boundary(x-1,y,Bcolor,Fcolor);Boundary(x,y+1,Bcolor,Fcolor);Boundary(x,y-1,Bcolor,Fcolor);

    EndEnd

    Chng trnh kh quy

    BoundaryLine(int x, int y, int Bcolor, int Fcolor)Begin

    int color, count=0;Point mPT[MaxPT];

    Khoa Cng ngh Thng tin i hc Lt Trang 44

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    45/112

    Bi Ging Tom Tt: Ha My Tnh

    mPT[count].x=x; mPT[count].y=y;while(count>0)Begin

    count--;color = getPixel(mPT[count].x, mPT[count].y);

    if(color != Bcolor || color != Fcolor)Begin

    putPixel(x,y,Fcolor);mPT[count].x=x+1; mPT[count++].y=y;mPT[count].x=x-1; mPT[count++].y=y;mPT[count].x=x; mPT[count++].y=y+1;mPT[count].x=x; mPT[count++].y=y-1;

    EndEnd

    End

    Khoa Cng ngh Thng tin i hc Lt Trang 45

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    46/112

    Bi Ging Tom Tt: Ha My Tnh

    Bi tp chng 3

    1. Vit chng trnh v mt a gic n nh, xt xem mt im P no c thuc agic khng ?

    2. Vit chng trnh v mt a gic n nh. T a gic bng gii thut t n gin(Tm xmin, ymin, xmax, ymax).

    3. Vit chng trnh v mt ng trn. T ng trn bng gii thut t n gin.4. Vit chng trnh v mt a gic n nh. T a gic bng gii thut t bin. Lu

    cho cc trng hp ca a gic : hnh ch nht, a gic li, a gic lm.5. Vit chng trnh v mt ng trn. T ng trn bng gii thut t bin.6. Vit chng trnh v mt a gic n nh. T a gic bng gii thut dng qut.7. Vit chng trnh v mt ng trn. T ng trn bng gii thut t mu theo

    dng qut.8. Vit chng trnh v hai ng trn C1 v C2 ct nhau. T phn giao ca hai

    ng trn . T phn b ca C2. T phn b ca C1. Lu rng 3 mu t nyphi khc nhau.

    Khoa Cng ngh Thng tin i hc Lt Trang 46

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    47/112

    Bi Ging Tom Tt: Ha My Tnh

    Chng 4

    PHEP BIN I HAI CHIU

    Ni dung chnh

    Cc php bin i ma trn. Cc php bin i Affine 2D c s. Cc php bin i 3D g p.

    4.1 Cc php ton c s vi ma ma trn.

    Nhc li cc php ton trn ma trn:

    Cng, tr ma trn: Ch thc hin cho hai ma trn cng bc

    Nhn hai ma trn: Ma trn bc n1 m1 v ma trn bc n2 m2 nhn c vi nhau num1= n2

    o ma trn vung: Khng c php chia ma trn

    Nu [A][X]=[Y] th [X]=[A]-1 [Y], trong [A]-1 l ma trn o ca ma trn vung[A].

    [A][A]

    -1

    = [I] trong [I] l ma trn n v.

    Tnh ||A||: Thay cc phn t ca[A] bng cc phn ph i s ca n. Phn ph i s ca phn t (aij) l:

    Khoa Cng ngh Thng tin i hc Lt Trang 47

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    48/112

    Bi Ging Tom Tt: Ha My Tnh

    [Mij] c to ra nh xa hng i, ct j ca [A].

    4.2 Php tnh tin

    C hai quan im v php bin i hnh hc, l :

    Bin i i tng : thay i ta ca cc im m t i tng theo mtqui tc no . Bin i h ta : To ra mt h ta mi v tt c cc im m t itng s c chuyn v h ta mi.

    Cc php bin i hnh hc c s l : tnh tin, quay, bin i t l. Php bin i Affine

    hai chiu (gi tc l php bin i) l mt nh x T bin i im P(P x, Py) thnh imQ(Qx, Qy) theo h phng trnh sau:

    Dng dch chuyn i tng t v tr ny sang v tr khc. Nu gi trx v try ln lt l di theo trc honh v trc tung th ta im mi Q(x', y') sau khi tnh tin imP(x,y) s l :

    (trx, try) c gi l vector tnh tin hay vector di (xem hnh 4.1).

    Hay

    Q = P*M +tr,

    Khoa Cng ngh Thng tin i hc Lt Trang 48

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    49/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 4.1 : Php bin i tnh tin im P thnh Q

    4.3 Php bin i t l

    Php bin i t l lm thay i kch thc i tng. co hay gin ta camt im P(x,y) theo trc honh v trc tung ln lt l Sx v Sy (gi l cc h s t l),ta nhn Sx v Sy ln lt cho cc ta ca P.

    Khi cc gi tr Sx , Sy nh hn 1, php bin i s thu nh i tng. Ngcli, khi cc gi tr ny ln hn 1, php bin i s phng ln i tng.

    Khi Sx = Sy , ngi ta gi l php ng dng. y l php bin i boton tnh cn xng ca i tng. Ta gi l php phng i nu |S|>1 v lphp thu nh nu |S|

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    50/112

    Bi Ging Tom Tt: Ha My Tnh

    Php quay quanh gc ta

    Ta c cng thc bin i ca php quay im P(x,y) quanh gc ta gc (xem hnh4.2):

    Hay Q = P*M, trong :

    Hnh 4.2 : Php quay quanh gc ta

    Php quay quanh mt im bt k

    Khoa Cng ngh Thng tin i hc Lt Trang 50

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    51/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 4.3 : Php quay quanh mt im bt k.

    Xt im P(P.x,P.y) quay quanh im V(V.x, V.y) mt gc n imQ(Q.x,Q.y). Ta c th xem php quay quanh tm V c kt hp t php cc bin c bnsau:

    Php tnh tin (-V.x, -V.y) dch chuyn tm quay v gc ta . Quay quanh gc ta O mt gc . Php tnh tin (+V.x, +V.y) a tm quay v v tr ban u.

    Ta cn xc nh ta ca im Q (xem hnh 4.3).

    T php tnh tin (-V.x,-V.y) bin i im P thnh P' ta c:

    P' = P + V

    Hay

    P'.x = P.x - V.x

    P'.y = P.y - V.y

    Php quay quanh gc ta bin i im P' thnh Q'

    Q' = P'.M

    Hay

    Khoa Cng ngh Thng tin i hc Lt Trang 51

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    52/112

    Bi Ging Tom Tt: Ha My Tnh

    Q'.x = P'.x*cos - P'.y*sin

    Q'.y = P'.x*sin + P'.y*cos

    Php tnh tin (+V.x, +V.y) bin i im Q' thnh Q ta c

    Q = Q' + V

    Hay

    Q.x = Q'.x + V.x

    Q.y = Q'.y + V.y

    Q.x = (P.x - V.x)*cos - (P.y - V.y)*sin + V.x

    Q.y = (P.x - V.x)*sin + (P.y - V.y)*cos + V.y

    Q.x = P.x*cos - P.y*sin + V.x*(1- cos) + V.y*sin

    Q.y = P.x*sin + P.y*cos - V.x*sin + V.y*(1- cos)

    Vy

    Q = P.M + tr.

    Vi

    4.5 Php i xng

    Php i xng trc c th xem l php quay quanh trc i xng mt gc 1800.

    Phng trnh ban u :

    Khoa Cng ngh Thng tin i hc Lt Trang 52

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    53/112

    Bi Ging Tom Tt: Ha My Tnh

    Q.x = a*P.x + c*P.y + trx

    Qy = b*P.x + d*P.y + try

    Hay

    Trc i xng l trc honh :

    Ta c :

    Tng t trc i xng l trc tung :

    Ta c :

    4.6 Php bin dng

    Php bin dng lm thay i, mo m hnh dng ca cc i tng.

    - Bin dng theo phng trc x s lm thay i honh cn tung gi nguyn.

    V d : bin i im P(P.x, P.y) thnh im Q(Q.x, Q.y) theo phng trc x l php

    bin i c biu din bi phng trnh sau:

    Q.x = P.x + h*P.y

    Khoa Cng ngh Thng tin i hc Lt Trang 53

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    54/112

    Bi Ging Tom Tt: Ha My Tnh

    Q.y = P.y

    - Bin dng theo phng trc y s lm thay i tung cn honh gi nguyn.

    Q.x = P.x

    Q.y = g*P.x + P.y

    4.7 Php bin i Affine ngc

    Php bin i ngc dng khi phc mt php bin i thc hin. Gi Q l nh caP qua php bin i T c ma trn bin i M l : P.M.

    Php bin i ngc T-1 s c ma trn bin i l M-1 l ma trn nghch o ca ma trnM.

    Vi ma trn bin i Affine dng:

    th ma trn nghch o l:

    Php tnh tin

    Khoa Cng ngh Thng tin i hc Lt Trang 54

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    55/112

    Bi Ging Tom Tt: Ha My Tnh

    Php quay

    Php bin i t l

    Php bin dng

    4.8 H ta thun nht

    Ta thun nht ca mt im trn mt phng c biu din bng b ba s t l(xh, yh, h) khng ng thi bng 0 v lin h vi cc ta (x, y) ca im bi cngthc :

    Nu mt im c ta thun nht l (x,y,z) th n cng c ta thun nht l(h.x, h.y, h.z) trong h l s thc khc 0 bt k. Mt im P(x,y) s c biu din didng ta thun nht l (x,y,1). Trong h ta thun nht cc ma trn ca php bin

    Khoa Cng ngh Thng tin i hc Lt Trang 55

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    56/112

    Bi Ging Tom Tt: Ha My Tnh

    i c biu din nh sau :

    Php tnh tin

    Php quay

    Php bin i t l

    Thun li ca h ta thun nht l khi ta kt hp hai hay nhiu php bin i affine thima trn hp ca nhiu php bin i c tnh bng cch nhn cc ma trn ca cc php

    bin i thnh phn.

    4.9 Kt hp cc php bin i

    Qu trnh p dng cc php bin i lin tip to nn mt php bin i tng thc gi l s kt hp cc php bin i.

    Kt hp php tnh tin

    Nu ta thc hin php tnh tin ln im P c im P', ri li thc hin tip mt php

    tnh tin khc ln P' c im Q. Nh vy, im Q l nh ca php bin i kt hp haiphp tnh tin lin tip.

    Khoa Cng ngh Thng tin i hc Lt Trang 56

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    57/112

    Bi Ging Tom Tt: Ha My Tnh

    Vy kt hp hai php tnh tin l mt php tnh tin. T , ta c kt hp ca nhiu phptnh tin l mt php tnh tin.

    Kt hp php quayTng t, ta c ta im Q l im kt qu sau khi kt hp hai php quay quanh gcta MR1(1) v MR2(2) l :

    Kt hp php bin i t l

    Tng t nh php tnh tin, ta c ta im Q l im c c sau hai php tnh tinM1(Sx1, Sy1), M2(Sx2, Sy2) l:

    Khoa Cng ngh Thng tin i hc Lt Trang 57

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    58/112

    Bi Ging Tom Tt: Ha My Tnh

    Khoa Cng ngh Thng tin i hc Lt Trang 58

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    59/112

    Bi Ging Tom Tt: Ha My Tnh

    Bi tp chng 4

    1. V mt hnh bnh hnh bng cch s dng php tnh tin. (V on thng AB, sau tnh tin AB thnh on thng CD//AB, v AD, Tnh tin AD thnh BC (xemhnh v).

    2. Vit chng trnh v mt hnh vung ABCD (xem hnh v).

    Tnh tin hnh vung n v tr khc. Phng to hnh vung ABCD. Bin dng hnh vung thnh hnh thoi.

    3. V mt elip, sau v thm 3 elip khc c cng tm vi elip cho, c dn trc Ox l K v Oy l 1.

    4. V mt elip nghing mt gc G c cc trc khng song song vi cc trc ta.

    5. V mt bng hoa bng cch v cc elip nghing mt gc G vi cc mu khcnhau. V n khi no n phm bt k th ngng.

    6. Vit chng trnh m phng s chuyn ng ca elip bng cch cho elip ny quayquanh tm ca n.

    7. Vit chng trnh m phng s chuyn ng ca tri t quay quanh mt tri.8. Vit chng trnh v mt ng trn tm O bn knh R. V mt ng knh AB.

    Quay ng knh ny quanh tm ng trn.9. Tm v tr mi ca tam gic A(1,1), B(3,2), C(2,4) qua php quay gc 30 o qua

    im (5,5).

    Khoa Cng ngh Thng tin i hc Lt Trang 59

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    60/112

    Bi Ging Tom Tt: Ha My Tnh

    Chng 5

    GIAO CC I TNG HOA

    Ni dung chnh

    Khi nim window. Cc thao tc loi b phn hnh nh nm ngoi mt vng cho trc. Thit k v ci t c cc thut ton tm giao cc i tng ha: ng

    thng, hnh ch nht, a gic. K thut Ray tracing.

    5.1. M u

    Cc hnh nh c nh ngha trn h ta th gii thc, sau c h ha vln cc h ta thit b. in hnh, mt vng ha cho php ngi s dng xc nhvng no ca hnh nh s c hin th v bn mun t n ni no trn h ta thitb. Mt vng n l hoc vi vng ca hnh nh c th c chn. Nhng vng ny cth c t nhng v tr tch bit, hoc mt vng c th c chn vo mt vng lnhn. Qu trnh bin i ny lin quan n nhng thao tc nh tnh tin, bin i t lvng c chn v xa b nhng phn bn ngoi vng c chn.

    Vng c dng hnh ch nht c xc nh trong h ta th gii thc c gi lmt ca s (window). Cn vng hnh ch nht trn thit b hin th ca s nh x

    n c gi l mt vng quan st (viewport).

    Hnh 5.1: Ca s v vng quan st

    nh x mt vng ca s vo trong mt vng quan st, kt qu l ch hin th nhngphn trong phm vi ca s. Mi th bn ngoi ca s s b loi b. Cc th tc loi b

    Khoa Cng ngh Thng tin i hc Lt Trang 60

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    61/112

    Bi Ging Tom Tt: Ha My Tnh

    cc phn hnh nh nm bn ngoi bin ca s c gi l cc thut ton tm giao hocn gin c gi l clipping.

    Bi ton t ra trn y cng l mt trong nhng bi ton quan trng ca hamy tnh l xc nh phn giao ca cc i tng ha: giao ca hai on thng, on

    thng v hnh cha nht, a gic v hnh ch nht, Cc thut ton cn thc hin nhanhnht c th minh ha c p nht cc kt qu thay i trong ng dng ha. Phngphp gii tch c dng gii quyt cc bi ton trong chng ny.

    5.2. Giao cua hai on thng

    Giao ca hai ng thng i qua hai im minh ha qua th d n gin: ng thng iqua ta (4,2) v ta (2,0) c giao vi on thng i qua (0,4) v (4,0)?

    Gii php

    - Xc nh phng trnh ng thng qua 2 im y = ax + b, trong a = (y2-y1)/(x2-x1)

    - T th d trn c: y=-2+x v y=4-x giao im ti (3, 1)

    Tng qut: nu ta c y = a1 + b1x v y = a2 + b2x th giao im s ti:

    xi = -(a1 - a2)/(b1 - b2)yi = a1 + b1xi

    Cc trng hp c bit: song song trc x hay y, song song vi nhau.

    Nu s dng phng php tm giao ng thng: i hi kim tra ta ca giao ngthng c nm trong cc on thng?

    Phng php khc: biu din on thng bng tham s on thng 1 t (xA, yA) n (xB,yB) on thng 2 t (xC, yC) n (xD, yD) tnh ton giao ca 2 on thng ti ta ct, s:

    Khoa Cng ngh Thng tin i hc Lt Trang 61

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    62/112

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    63/112

    Bi Ging Tom Tt: Ha My Tnh

    1. Ca hai u mt ca on thng nm trong hnh ch nht, chng hn AB.2. Mt trong hai u mt ca on thng nm trong hnh ch nht, chng hn

    BC.3. Ca hai u mt ca on thng nm ngoi hnh ch nht nhng c giao im,

    chng hn CD.

    4. Ca hai u mt ca on thng nm ngoi hnh ch nht v khng c giaoim, chng hn DE.

    Hai trng hp 1 v 4 gi l cc trng hp tm thng, tc l xc nh c ngayc tn ti giao im hay khng. Cc trng hp cn li ta phi tin hnh thut ton xcnh giao im s c trnh by trong phn tip theo sau.

    Hnh 5.4: Hai trng hp tm thng ca giao on thng v hnh ch nht

    5.3.1 Tim giao bng cch gii h phng trnh

    a bi ton v xc nh giao im ca hai on thng c trnh by trong phn3.2. Theo phng php ny, chng ta cn tnh ton v kim tra nhiu kh nng; do khng hiu qu.

    5.3.2 Thut ton chia nh phn

    Mt tip cn l da trn c ch nh m c pht trin bi Cohen v Sutherland.

    Mi im hai u mt on thng trong hnh nh s c gn mt m nh phn 4 bit,c gi l m vng, gip nhn ra vng ta ca mt im. Cc vng ny c xydng da trn s xem xt vi bin ca s, nh hnh 6-8. Mi v tr bit trong m vngc dng ch ra mt trong bn v tr ta tng ng ca im so vi ca s: bntri (left), phi (right), trn nh (top), di y (bottom). Vic nh s theo v tr bittrong m vng t 1 n 4 cho t phi sang tri, cc vng ta c th lin quan vi v trbit nh sau:

    Khoa Cng ngh Thng tin i hc Lt Trang 63

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    64/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 5.5: M ha cc u mt ca on thng

    Gi tr 1 bt k v tr no ch ra rng im v tr tng ng, ngc li bit v tr l 0. Nu mt im nm trong ca s, m v tr l 0000. Mt im bn di v bn trica s c m vng l 0101.

    Thut ton chia nh phn1. Nu E(A)=0 v E(B)=0 kt lun AB = AB; thut ton dng.2. Nu [E(A) AND E(B)] != 0 kt lun AB = ; kt thc thut ton.3. Nu E(A)=0 v E(B) 0(tc A v B ) thc hin:

    a. t C = A,D = B.b. Trong khi di ||CD|| ln hn

    t M l trung im ca on CD.

    Nu E(M)=0 th c p nht C = M ngc li D = M.

    c. Kt lun AB = AM; kt thc thut ton.4. Nu E(A) = 0 v E(B)=0, hon i vai tr ca A v B; l p li bc 3.5. Ngc li, thc hin:

    a. t C = A,D = B.b. Trong khi di ||CD|| ln hn

    t M l trung im ca on CD.

    Nu E(M)=0 p dng Bc 3 cho hai on MC v MD. Kt lun

    AB=CD;kt thc thut ton.

    Nu [E(M) AND E] != 0 t C = M.

    Nu [E(M) AND E(D)] != 0 t D = M.

    Nu [E AND E(D)] != 0 kt lun AB =; kt thc thut ton.

    Khoa Cng ngh Thng tin i hc Lt Trang 64

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    65/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 5.6: Minh ha ca thut ton chia nh phn.

    5.3.3 Thut ton Cohen-Sutherland

    Xc nh nhanh on thng c cn ct xn hay khng nh cc php ton logc ANDv OR:

    Kt qu php OR hai m u mt on thng cho kt qu 0: c hai im nmtrong ch nht.

    Kt qu php AND hai m u mt on thng cho kt qu khc 0: c haiim nm ngoi ch nht.

    Hnh 5.7: on thng giao vi hnh ch nht

    Khoa Cng ngh Thng tin i hc Lt Trang 65

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    66/112

    Bi Ging Tom Tt: Ha My Tnh

    Giao ca on thng vi cc cnh ch nht song song trc tung: x c gi tr Xmin, Xmax v h s gc a = (y2 - y1)/(x2 - x1) y = y1 + a(x x1)

    Giao on thng vi cc cnh song song trc honh: y c gi tr Ymin, Ymax v h s gc a = (y2 - y1)/(x2 - x1) x = x1 + (y - y1)/a

    Thut ton ma hoa

    EncodePoint(PointLeftTop,PointRightBottom,PointP)Begin byte code = 0; if(P.X < LeftTop.X)

    Begin

    code |= 8;End if(P.X > RightBottom.X)

    Begincode |= 4;

    End if(P.Y < RightBottom.Y)

    Begincode |= 2;

    End

    if(P.Y > LeftTop.Y)Begincode |= 1;

    End

    return code;End

    Thut toan Cohen-Shuterland

    InterLineRectangle(PointLeftTop,PointRightBottom,PointA,PointB)

    Beginbyte codeA, codeB, codeOut;

    floatx = 0, y = 0;codeA = EncodePoint(LeftTop, RightBottom, A);codeB = EncodePoint(LeftTop, RightBottom, B);

    while (true)begin

    Khoa Cng ngh Thng tin i hc Lt Trang 66

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    67/112

    Bi Ging Tom Tt: Ha My Tnh

    if(codeA == 0 && codeB == 0)begin

    returntrue;end

    if((codeA & codeB) != 0)

    begin returnfalse;

    end

    if(codeA != 0) codeOut = codeA; else codeOut = codeB;

    if((codeOut & 8) != 0)//Lbegin

    x = LeftTop.X;

    y = A.Y + (float)((x - A.X) * (B.Y - A.Y)) / (float)(B.X - A.X);end elseif((codeOut & 4) != 0)//R

    beginx = RightBottom.X;y = A.Y + (float)((x - A.X) * (B.Y - A.Y)) / (float)(B.X - A.X);

    end elseif((codeOut & 2) != 0)//B

    beginy = RightBottom.Y;

    x = A.X + (float)((y - A.Y) * (B.X - A.X)) / (float)(B.Y - A.Y);end elseif((codeOut & 1) != 0)//T

    beginy = LeftTop.Y;x = A.X + (float)((y - A.Y) * (B.X - A.X)) / (float)(B.Y - A.Y);

    end

    if(codeOut == codeA)begin

    A.X = (int)x;A.Y = (int)y;codeA = EncodePoint(LeftTop, RightBottom, A);

    end else

    beginB.X = (int)x;B.Y = (int)y;

    Khoa Cng ngh Thng tin i hc Lt Trang 67

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    68/112

    Bi Ging Tom Tt: Ha My Tnh

    codeB = EncodePoint(LeftTop, RightBottom, B);end

    endEnd

    5.3.4 Thut ton Liang-Barsky

    Mt thut ton tm giao on thng v hnh ch nht hiu qu dng phng trnhtham s c pht trin bi Liang v Barsky. H ghi ch rng nu mt im (x, y)dc theo ng m nm trong ca s c nh ngha bi cc ta (xw min, ywmin) v(xwmax, ywmax), th cc iu kin sau y phi c tha:

    xwmin x1 + x u xwmaxywmin y1 + y u ywmax

    Bn bt phng trnh trn c th c vit li theo hnh thc sau:pku qk, k = 1, 2, 3, 4

    y p v q c nh ngha nh sau:

    p1 = -x, q1 = x1 - xwminp2 = -x, q2 = xwmax x1p3 = -y, q3 = y1 - ywminp4 = y, q4 = ywmax y1

    Bt k on thng no song song vi mt trong cc bin ca s s c pk = 0, gi tr kph thuc vo bin ca s (k = 1, 2, 3, v 4 tng ng vi bin tri, phi, di, trn). Nuvi cc gi tr ca k, chng ta c th gp q k < 0, khi on thng s hon ton nmngoi bin v c th b loi b khi xt sau ny. Nu q k 0, ng thng tng ng nmtrong bin.

    Khi pk < 0, s ko di khng gii hn ca on thng t bn ngoi vo bn trong cabin ca s ko di. Nu pk > 0, on thng tin t bn trong ra bn ngoi. Vi p k khc 0,chng ta c th tnh gi tr ca u tng ng vi im m ti on thng ko di ctbin k ko di ca ca s:

    u = qk/ pk

    i vi mi on thng, chng ta c th tnh cc gi tr cho cc tham s u1 v u2 xc nh phn no ca on nm bn trong ca s. Gi tr ca u1 c xc nh bng cchnhn cc cnh ca ca s xem on ko di no t ngoi vo trong (p < 0). i vi cccnh ca s, chng ta tnh rk= qk/ pk. Gi tr ca u1 l ln nht trong tp cha 0 v cc gi

    Khoa Cng ngh Thng tin i hc Lt Trang 68

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    69/112

    Bi Ging Tom Tt: Ha My Tnh

    tr khc ca r. Ngc li, gi tr ca u2 c xc nh bng cch kim tra cc bin xemon no ko di no t bn trong ra bn ngoi (p > 0). Mt gi tr ca rk c tnh chomi bin ca s, v gi tr ca u2 l nh nht trong tp cha 1 v cc gi tr c tnhca r. Nu u1 > u2, on hon ton nm ngoi ca s v c th b vt b. Ngc li, ccim u mt ca on b ct c tnh t hai gi tr ca tham s u.

    Thut ton ny c trnh by trong th tc sau y. Cc tham s giao im ca onc khi to cc gi tr u1 =0 v u2 = 1. i vi mi bin ca s, cc gi tr thch hpcho p v q c tnh v c dng bi hm cliptest xc nh xem on no c th bloi b hoc xem cc tham s giao im sp sa b thay i khng. Khi p < 0, tham s rc dng cp nht u1; khi p>0, tham s r c dng cp nht u2. Nu vic cp nhtu1 hoc u2 a n kt qu u1 > u2, chng ta loi b on thng. Ngc li, chng ta cpnht tham s u thch hp ch nu gi tr mi a n kt qu lm ngn on thng. Khi p= 0 v q < 0, chng ta vt b on thng bi v n song song v bn ngoi bin. Nuon thng vn cha b loi b sau tt c bn gi tr ca p v q va c kim tra xong,

    cc im u mt ca on b ct c xc nh t cc gi tr ca u1 v u2.

    Chng trnh minh ha thut ton Liang-Barsky

    procedure clipper (var x1, y1, x2, y2 : float);

    function cliptest (p, q : real; var u1, u2 : real);

    Begin

    result := true;

    if p < 0 then begin {on t bn ngoi vo bn trong bin }

    r := q / p;

    if r > u2 then result := false

    {hu b on hoc cp nht u1 nu thch hp}

    else if r > u1 then u1 :=r

    end {if p < 0}

    else if p > 0 then begin {on t bn trong ra bn ngoi ca bin}

    r := q / p;

    if r < u1 then result := false

    Khoa Cng ngh Thng tin i hc Lt Trang 69

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    70/112

    Bi Ging Tom Tt: Ha My Tnh

    else if r < u2 then u2 := r

    end {if p > 0}

    else

    if q < 0 then result := fasle;

    cliptest := result

    End; {cliptest}

    Begin {clipper}

    u1 := 0;

    u2 := 1;

    dx := x2 x1;

    if cliptest (-dx, x1 xwmin, u1, u2) then

    if cliptest (dx, xwmax x1, u1, u2) then

    begin

    dy := y2 - y1;

    if cliptest (-dy, y1 ywmin, u1, u2) then

    if cliptest(dy, ywmax y1, u1, u2) then

    begin

    {nu u1 v u2 nm trong on [0,1], dng tnh cc im u mt mi}

    if u2 < 1 then

    begin

    x2 := x1 + u2 * dx;

    y2 := y1 + u2 * dy

    Khoa Cng ngh Thng tin i hc Lt Trang 70

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    71/112

    Bi Ging Tom Tt: Ha My Tnh

    end; {if u2 < 1}

    if u1 > 0 then

    begin

    x1 := x1 + u1 * dx;

    y1 := y1 + u1 * dy

    end; {if u1 > 0}

    end {if cliptest}

    End; {clipper}

    Thut ton Liang v Barsky gim bt cc tnh ton cn thit ct cc on. Mi lncp nht u1 v u2 cn ch mt php chia, v cc giao im vi ca s c tnh ch mtln, khi m cc gi tr u1 v u2 va hon thnh. Tri li, thut ton ca Cohen vSutherland lp li vic tnh giao im ca on vi cc bin ca s, v mi php tnh giaoim cn c hai php chia v nhn.

    5.4. Giao ca on thng v a gic li

    V tr tng i ca mt im vi on thng

    Trong nhiu ng dng, ta quan tm n khi nim na mt phng trong v na mtphng ngoi xc nh bi mt on thng. Khi nim ny lin quan mt thit n phpvector ca on thng.

    Hnh 5.8: V tr tng i ca im Q vi on thng l.

    Khoa Cng ngh Thng tin i hc Lt Trang 71

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    72/112

    Bi Ging Tom Tt: Ha My Tnh

    Phng trnh tng qut ca on thng lc dng ax + by +c = 0. K hiu:

    l cc na mt phng ngoi v na mt phng trong xc nh bi l, trong D = -c, n =(a,b)t. Tiu chun kim tra im Q thuc mt na phng no ca on thng l:

    Thut ton xc nh giao im on thng v a gic li

    Hnh 5.9: Giao ca on thng v a gic li

    Thut ton Cyrus-Beckda trn tiu chun loi b n gin bng cch xc nh v trtng i ca mt im vi mt on thng. Gi s a gic li (R) c nh ngha nhmt dy cc nhPi = (xi, yi),i=0, 1,..., L, trong h ta thc viP0 = PL. Mc ch caphn ny l loi b nhng phn ca on AB khng nm trong ca s (R) (Hnh 5.9).

    K hiu li, i =0, 1,..., L, l on thng i qua hai nh lin tipPi, Pi+1. t:

    Khoa Cng ngh Thng tin i hc Lt Trang 72

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    73/112

    Bi Ging Tom Tt: Ha My Tnh

    l cc na mt phng ngoi v mt phng trong xc nh bi li, trong ni l php vectorca li c chn hng ra na mt phng ngoi vDil hng s no . V (R) l t p linn c xc nh bi:

    tng ca thut ton nh sau:

    Vi mi on thng li, i =0, 1,..., L, chng ta loi b phn ca on thng ABthuc na mt phng ngoi xc nh bi liv c p nht AB=AB(

    il ).

    Nu ti bc no , AB ( +il ) th kt lun giao ca on thng v a gic libng trng; ngc li, nu bc cui cng phn on thng AB cn li nm

    trong (R) chnh l phn giao cn tm.

    Thut ton

    Cyrus_Beck(Point2D *A, Point2D *B, VertPtr2D Poly)Begin

    float t_in = 0.0, t_out = 1.0, t_hit, Denom, D;Point2D F, S;Vector2D c, n, a;VertPtr2D Tempt = Poly;

    if (Tempt == NULL)return False;F = Tempt->Vertex;c.dx = (*B).x - (*A).x;c.dy = (*B).y - (*A).y;a.dx = (*A).x;a.dy = (*A).y;while ((Tempt = Tempt->Next) != NULL)begin

    S = Tempt->Vertex;n.dx = (S.y - F.y);n.dy = -(S.x - F.x);D = n.dx*F.x + n.dy*F.y;if ((Denom = Dot2D(n, c)) == 0.0)

    if (Dot2D(n, a) > D) return False;elsebegin

    t_hit = (D - Dot2D(n, a)) / Denom;

    Khoa Cng ngh Thng tin i hc Lt Trang 73

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    74/112

    Bi Ging Tom Tt: Ha My Tnh

    if (Denom > 0.0)if (t_out > t_hit) t_out = t_hit;

    elseif (t_in < t_hit) t_in = t_hit;

    if (t_in > t_out) return False;

    endF=S;

    endF.x = (1 - t_in)*(*A).x + t_in*(*B).x;F.y = (1 - t_in)*(*A).y + t_in*(*B).y;S.x = (1 - t_out)*(*A).x + t_out*(*B).x;S.y = (1 - t_out)*(*A).y + t_out*(*B).y;*A = F;*B = S;return True;

    End

    5.5. Giao hai a giac

    Thut ton Sutherland-Hodgman

    K hiu Subj v Clip l danh sch cc nh ca hai a gic (S) v (C) tng ng. C bnkh nng xy ra gia mi cnh ca (S) v ca (C):

    1. Hai inh F v S nm trong: xut S.

    2. inh F nm trong v S nm ngoi: tm giao im I v xut n.3. Hai inh F v S nm ngoi: khng xut.4. inh F nm ngoi v S nm trong: tm giao im I; xut I v S.

    Khoa Cng ngh Thng tin i hc Lt Trang 74

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    75/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 5.10: Bn trng hp vi mi cnh ca (S)

    Xt v d hnh (a):

    Khoa Cng ngh Thng tin i hc Lt Trang 75

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    76/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 5.11: V du thut ton Sutherland-Hodgman

    1. Danh sch Subj sau khi ct (S) vi cnh bn tri ca (C):

    (1, 2, D, E, F, G, 3, 4, I, A, 1).

    2. Danh sch Subj sau khi ct (S) vi cnh bn di ca (C):

    (5, 6, E, F, 7, 5, 4, I, A, 1, 5).

    Khoa Cng ngh Thng tin i hc Lt Trang 76

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    77/112

    Bi Ging Tom Tt: Ha My Tnh

    3. Danh sch Subj sau khi ct (S) vi cnh bn phi ca (C):

    (8, 9, F, 7, 5, 4, I, A, 1, 5, 8).

    4. Danh sch Subj sau khi ct (S) vi cnh bn trn ca (C):

    (9, F, 7, 5, 4, I, 10, 11, 5, 8, 9).

    Thut ton Weiler-Atherton

    Cch tip cn ca Weiler-Atherton nhm tm ra giao ca hai a gic bt k, thm ch cl hng trong cc a gic. Ngoi ra c th tm phn hp v hiu hai a gic na. Xt v dhnh 5.12 sau.

    Hnh 5.12: V du thut ton Weiler-Atherton

    Hai a gic (S) v (C) c biu din bi danh sch cc nh, k hiu Subj = (A, B, C, D,E, A) v Clip = (a, b, c, d, e, a) tng ng.

    Tt c cc giao im ca hai a gic c xc nh v lu vo mt danh sch.Trong v d trn c tt c su giao im: 1, 2, 3, 4, 5, 6.

    Thc hin tin trnh: ln theo hng thun v nhy l xy dng hai danh sch:

    Khoa Cng ngh Thng tin i hc Lt Trang 77

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    78/112

    Bi Ging Tom Tt: Ha My Tnh

    Xut pht t giao im i vo l im i t ngoi vo trong ca a gic (C),duyt trn (S) n khi g p giao im th chuyn sang duyt trn (C), v l p li.Qu kt thc khi g p im xut pht ban u. Tip tc kim tra giao im trn (S)cha c i qua v l p li tin trnh trn. Ta c hai a gic sinh ra l (1, B, 2, 1)v (3, 4, 5, 6, 3).

    Hp hai a gic (S) (C)

    i trn (S) theo hng thun cho n khi g p im ra l im i t trong ra ngoi caa gic (C) duyt cho n khi g p giao im khc vi (C) thduyt sang (C) cho n khig p giao im k tip ri chuyn sang (S). Qu kt thc khi g p im xut pht ban u.

    Kt qu(S) (C) gm hai a gic:

    (2, C, 3, 2) (l hng). (4, D, 5, c, d, e, 6, E, A, 1, a, b, 4).

    Hiu hai a gic (C) \ (S)

    i trn (S) theo hng thun cho n khi g p im vo duyt cho n khi g p giaoim khc vi (C) thduyt sang (C) theo hng ngc cho n khi g p giao im ktip ri chuyn sang (S). Qu kt thc khi g p im xut pht ban u.

    (C) \ (S): (1, B, 2, 3, 4, b, a, 1); v (5, 6, e, d, c, 5). (S) \ (C): (4, 5, D, 4); v (6, 3, C, 2, 1, A, E, 6).

    5.6. Ray tracing hai chiu: phn x trong bung kn

    Mc ch ca phn ny l p dng mt s khi nim hnh hc to mt ng dng

    Khoa Cng ngh Thng tin i hc Lt Trang 78

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    79/112

    Bi Ging Tom Tt: Ha My Tnh

    ha: m phng qu trnh chuyn ng ca tia sng trong bung kn.

    Phng php Ray tracing l mt cng c quan trng trong ha my tnh tnghp cc nh. Trong tng hp nh, cc tia sng nhn to ln theo trong th gii thc bachiu cha nhiu i tng. ng i ca mi tia sng xuyn qua cc i tng trong

    sut hoc phn x li ty theo mc phn x ca i tng cho n khi n dng li i tng no . Mu ca i tng ny s c t cho pixel tng ng trn thit bhin th. M phng qu trnh Ray tracing rt d dng trong khng gian hai chiu.

    Hnh dung qu o ca tri pinpall nh khi n va chm vo cc i tng trongbung kn. Hnh bn di minh ha nht ct ngang ca mt bung kn c nm bc tngv cha ba tr trn. Tripinpallbt u ti v tr Sva di chuyn theo hng vectorccho n g p vt cn s b phn x v di chuyn theo hng mi. Qua trnh c l p linhiu ln. Qu o ca tripinpalll ng gp khc m ta c th hnh dung ng ica tia sng di chuyn trong bung kn.

    Hnh 5.13: V du v Ray tracing.

    Chng ta s xy dng thut ton xc nh i tng no tia sng s g p trc v vtr va trm ti . V tr va chm s l im khi u cho cho ng i k tip vi hngdi chuyn mi.

    Vector phn x

    Hnh 5.14 phn gii vector c thnh thnh phn m dc theo n v thnh phn e vung gcvi n. Ta c, r = e m.Nhng e = c m nn r = c 2m.

    Khoa Cng ngh Thng tin i hc Lt Trang 79

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    80/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 5.14: Phan x tia sng

    V vectorm l vector phn gii ca vectorc theo vectorn nn

    Nn

    Thu tuc xac inh vector phan xa r t vector c va phap vector n

    Reflection(Vector2D c, Vector2D n, Vector2D *r)

    Begin

    float Coeff = 2*Dot2D(c, n)/Dot2D(n, n);

    (*r).dx = c.dx - Coeff*n.dx;

    (*r).dy = c.dy - Coeff*n.dy;

    End

    Giao ca tia sng v ng thng

    Phng trnh tham s ca tia sng xut pht t Schuyn ng theo vector ch phng ccho bi

    R(t):= S + ct, t 0.

    Khoa Cng ngh Thng tin i hc Lt Trang 80

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    81/112

    Bi Ging Tom Tt: Ha My Tnh

    Bc tng tng ng ng thng:

    trong , php vectorn hng ra ngoi bung kn. Nu 0 th tia sng ct ngthng tiPh = S + cth, trong :

    V d, cho ng thng 6x 8y + 10 = 0 v tia sng xut pht t S(7, 4) di chuyn theovector ch phng c=(2, 1)t. ng thng cn =(6,8)t vD = 10.

    Ta c

    Suy ra giao im I:

    I = S + tc =(7, 4) + (2, 1)1 = (5, 5).

    Vector phn x

    Thu tuc xac inh thi im giao th

    Khoa Cng ngh Thng tin i hc Lt Trang 81

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    82/112

    Bi Ging Tom Tt: Ha My Tnh

    Ray_With_Line(Point2D S, Vector2D c, Vector2D normal, float D, float *t_hit)

    Begin

    float Denom = Dot2D(normal, c);

    Vector2D s;

    PointToVector2D(S, &s);

    if (Denom == 0.0)

    *t_hit = -1.0;

    else

    *t_hit = (D - Dot2D(normal, s))/Denom;

    End

    Giao ca tia sng v hnh trn

    Hnh tr tng ng ng trn (C) bn knhR tmI. Xt s tng giao ca tia sng vng trn.

    Ta c

    Suy ra

    Hay tng ng

    trong

    Khoa Cng ngh Thng tin i hc Lt Trang 82

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    83/112

    Bi Ging Tom Tt: Ha My Tnh

    Nghim ca phng trnh (c th o)

    V d, cho ng trn (x 1)2 + (y 4)2 = 4 v tia sng xut pht t S(8, 9) di chuyntheo vector ch phng c = (-1, 1)t.

    Phng trnh giao im

    At2 + 2Bt + C = 0,

    trong

    Suy ra

    Vy ta giao im lPh = S + thc =(8 5, 9 5).

    Vector phn x

    Khoa Cng ngh Thng tin i hc Lt Trang 83

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    84/112

    Bi Ging Tom Tt: Ha My Tnh

    Thu tuc xac inh thi im giao

    Ray_With_Circle(Point2D S, Vector2D c, Point2D Center, float Rad,float*t_hit)

    Begin

    float A, B, C, delta;

    Vector2D tempt;

    tempt.dx = S.x - Center.x;

    tempt.dy = S.y - Center.y;

    A = Dot2D(c, c);

    B = Dot2D(tempt, c);

    C = Dot2D(tempt, tempt) - Rad*Rad;

    delta = B*B - A*C;

    if (delta < 0.0)

    *t_hit = -1.0;

    else

    *t_hit = (-B - sqrt(delta))/A;

    End

    Khoa Cng ngh Thng tin i hc Lt Trang 84

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    85/112

    Bi Ging Tom Tt: Ha My Tnh

    Chng 6

    HOA BA CHIU

    Ni dung chnh

    Gii thiu ha 3 chiu (3D). Hin th i tng 3D. Cc php bin i Affine 3D c s.

    6.1. Gii thiu ha 3 chiu

    Cc i tng trong th gii thc phn ln l cc i tng 3 chiu cn thit b hinth ch 2 chiu. Do vy, mun c hnh nh 3 chiu ta cn phi gi lp. Chin lc c bn

    l chuyn i tng bc. Hnh nh s c hnh thnh t t, ngy cng chi tit hn.

    Qui trnh hin th nh 3 chiu nh sau

    Bin i t h ta i tng sang h ta th gii thc . Mi i tng c mt trong mt h ta ring c gi l h ta i tng.

    C 2 cch m hnh ha i tng:

    o Solid modeling: m t cc vt th (k c bn trong).

    o Boudary representation: ch quan tm n b mt i tng.

    Cc i tng c th c biu din bng m hnh Wire-Frame. Nhn thy rng khibiu din i tng, ta c th chn gc ta v n v o lng sao cho vic biu dinl thun li nht. Thng th ngi ta chun ha kch thc ca i tng khi biu din.Biu din bin cho php x l nhanh cn silid modeling cho hnh nh y v xc thchn.

    o Loi b cc i tng khng nhn thy c: Loi b cc i tng hon tonkhng th nhn thy trong cnh. Thao tc ny gip ta lc b bt cc i tng

    khng cn thit do gim chi ph x l.o Chiu sng cc i tng: Gn cho cc i tng mu sc da trn cc c tnhca cc cht to nn chng v cc ngun sng tn ti trong cnh. C nhiu mhnh chiu sng v to bng : constant-intensity, Interpolate,...

    o Chuyn t wordspace sang eye space. Thc hin mt php bin i h ta t v tr quan st v gc ta v mt phng quan st v mt v tr mongc.

    Khoa Cng ngh Thng tin i hc Lt Trang 85

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    86/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh nh hin th ph thuc vo v tr quan st v gc nhn.H qui chiu c gc t ti v tr quan st v ph hp vi hng nhn s thunli cho cc x l tht.

    o Loi b phn nm ngoi viewing frusturn: Thc hin vic xn i tng trong

    cnh cnh nm gn trong mt phn khng gian hnh chp ct gii hn vngquan st m ta gi l viewing frustum. Viewung frustum c trc trng vi tianhn, kch thc gii hn bi vng ta mun quan st.

    o Chiu t eye space xung screen space: Thc hin vic chiu cnh 3 chiu tkhng gian quan st xung khng gian mn hnh.C 2 phng php chiu:- Chiu song song.- Chiu phi cnh.Khi chiu ta phi tin hnh vic kh mt khut c th nhn c hnh nhtrung thc.

    Kh mt khut cho php xc nh v tr (x,y) trn mn hnh thuc v i tngno trong cnh.o Chuyn i tng sang dng pixel.o Hin th i tng.

    6.2. Biu din i tng 3 chiu

    Trong ha my tnh, cc i tng lp th c th c m t bng cc b mtca chng. V d : mt hnh lp phng c xy dng t su mt phng, mt hnh trc xy dng t s kt hp ca mt mt cong v hai mt phng v hnh cu c xy

    dng t ch mt mt cong. Thng thng biu din mt i tng bt k, ngi tadng phng php xp x a cc mt v dng cc mt a gic.

    im trong khng gian 3 chiu c ta (x,y,z) m t mt v tr trong khng gian.

    typedef struct {int x;int y;int z;

    } Point _3D ;

    Vect: xc nh bi 3 ta dx, dy, dz m t mt hng v di ca vc t.

    Vc t khng c v tr trong khng gian.

    Khoa Cng ngh Thng tin i hc Lt Trang 86

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    87/112

    Bi Ging Tom Tt: Ha My Tnh

    Tch v hng ca hai vc t

    V1* V2 = dx1dx2 + dy1dy2 + dz1dz2

    Hay V1* V2 = |V1||V2| cos

    typedef struct {int dx;int dy;int dz;

    } Vector ;

    on thng trong khng gian 3 chiu: biu din t hp tuyn tnh ca 2 im

    biu din dng tham s ca on thng, ta c :

    P = P1 + t*( P2 - P1 ) , ( 0 t 1)

    typedef struct {Point P1;Point P2;

    } Segment ;

    Tia (Ray) : l mt on thng vi mt u nm v cc.

    Biu din dng tham s ca tia :

    P = P1 + t*V , ( 0 t < )

    typedef struct {Point P1;Vector V;

    } Ray;

    ng thng (Line): l mt on thng vi c hai u nm v cc

    Biu din dng tham s ca ng thng

    P = P1 + t*V , ( t < )

    typedef struct {Point P1;Vector V;

    } Line;

    Khoa Cng ngh Thng tin i hc Lt Trang 87

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    88/112

    Bi Ging Tom Tt: Ha My Tnh

    a gic (Polygon) : l mt vng gii hn bi hn dy cc im ng phng .

    typedef struct {Point *Points;int nPoints;

    } Polygon;

    C th biu din mt mt a gic bng mt tp hp cc nh v cc thuc tnh kmtheo. Khi thng tin ca mi mt a gic c nhp, d liu s c in vo cc bng sc dng cho cc x l tip theo, hin th v bin i.

    Cc bng d liu m t mt a gic c th t chc thnh hai nhm : bng hnh hcv bng thuc tnh. Cc bng lu tr d liu hnh hc cha ta cc nh v cc thams cho bit v nh hng trong khng gian ca mt a gic. Thng tin v thuc tnh cacc i tng cha cc tham s m t trong sut, tnh phn x v cc thuc tnh kt

    cu ca i tng. Mt cch t chc thun tin lu tr cc d liu hnh hc l to ra 3danh sch : mt bng lu nh, mt bng lu cnh v mt bng lu a gic. Trong :

    o Cc gi tr ta cho mi nh trong i tng c cha trong bng lu nh.o Bng cnh cha cc con tr tr n bng nh cho bit nh no c ni vi

    mt cnh ca a gic.o Cui cng l bng lu a gic cha cc con tr tr n bng lu cnh cho bit

    nhng cnh no to nn a gic.

    Mt phng (Plane) :

    typedef struct {Vector N;int d;

    } Plane;

    Phng trnh biu din mt phng c dng : Ax + By + Cz + D = 0. Trong (x,y,z) lmt im bt k ca mt phng v A, B, C, D l cc hng s din t thng tin khng gianca mt phng.

    xc nh phng trnh mt phng, ta ch cn xc nh 3 im khng thng hng ca

    mt phng ny. Nh vy, xc nh phng trnh mt phng qua mt a gic, ta s sdng ta ca 3 nh u tin (x1,y1), (x2,y2), (x3,y3) trong a gic ny.

    T phng trnh mt phng trn, ta c

    Khoa Cng ngh Thng tin i hc Lt Trang 88

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    89/112

    Bi Ging Tom Tt: Ha My Tnh

    Axk+ Byk+ Czk+ D = 0 , k = 0, 1, 2, 3.

    Trong :

    Khai trin cc nh thc trn ta c :

    A = y1(z2 - z3) + y2(z3 - z1) + y3(z1 - z2)

    B = z1(x2 - x3) + z2(x3 - x1) + z3(x1 - x2)

    C = x1(y2 - y3) + x2(y3 - y1) + x3(y1 - y2)

    A = - x1(y2z3 - y3z2) - x2(y3z1 - y1z3) - x3(y1z2 - y2z1)

    Hng ca mt phng thng c xc nh thng qua vc t php tuyn ca n. Vct php tuyn n = (A,B,C).

    12 Hinh 5.15: Mt phng trong khng gian

    M hnh khung ni kt

    Mt phng php thng dng v n gin m hnh ha i tng l m hnhkhung ni kt. Mt m hnh khung ni kt gm c mt tp cc nh v tp cc cnh

    Khoa Cng ngh Thng tin i hc Lt Trang 89

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    90/112

    Bi Ging Tom Tt: Ha My Tnh

    ni cc nh . Khi th hin bng m hnh ny, cc i tng 3 chiu c v rng vkhng ging thc t lm. Tuy nhin, v bng m hnh ny th nhanh nn ngi tan=(A,B,C) thng dng n trong vic xem phc tho cc i tng. hon thinhn, ngi ta dng cc k thut to bng v loi b cc ng khut, mt khut.

    Vi m hnh khung ni kt, hnh dng ca i tng 3 chiu c biu din bnghai danh sch: danh sch cc nh v danh sch cc cnh ni cc nh . Danh schcc nh cho bit thng tin hnh hc, cn danh sch cc cnh xc nh thng tin v skt ni. Chng ta hy quan st mt vt th ba chiu c biu din bng m hnhkhung ni kt nh sau:

    Hnh 5.16: M hnh khung kt ni

    Bng danh sch cc cnh v nh biu din vt th

    Khoa Cng ngh Thng tin i hc Lt Trang 90

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    91/112

    Bi Ging Tom Tt: Ha My Tnh

    Ngi ta c th v cc i tng theo m hnh khung ni kt bng cch s dng ccphp chiu song song hay php chiu phi cnh s c gii thiu chng 6.

    6.3. Cc php bin i 3 chiu

    6.3.1. H ta bn tay phi - bn tay tri

    H ta theo qui c bn tay phi : bn tay phi sao cho ngn ci hngtheo trc z, khi nm tay li, cc tay chuyn ng theo hng t trc x n trc y.

    1

    23 Hnh 5.17: H ta bn tay phai

    H ta ta theo qui c bn tay tri : bn tay phi sao cho ngn ci hngtheo trc z, khi nm tay li, cc ngn tay chuyn ng theo hng t trc x n

    trc y.45

    Khoa Cng ngh Thng tin i hc Lt Trang 91

    z

    y

    x

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    92/112

    Bi Ging Tom Tt: Ha My Tnh

    67 Hinh 5.18: H ta bn tay tri

    H ta thun nht: Mi im (x, y, z) trong khng gian -cc c biudin bi mt b bn ta trong khng gian 4 chiu thu gn (hx, hy, hz, h).

    Ngi ta thng chn h = 1.

    2 Cc php bin i tuyn tnh l t hp ca cc php bin i sau : t l, quay,bin dng v i xng. Cc php bin i tuyn tnh c cc tnh cht sau :

    - Gc ta l im bt ng.- nh ca ng thng l ng thng.- nh ca cc ng thng song song l cc ng thng song song.- Bo ton t l khong cch.- T hp cc php bin i c tnh phn phi

    6.3.2. Cc php bin i Affine c s

    Php tnh tin

    Php bin i t l

    12 Khi Sx= Sy= Szta c php bin i ng dng.

    Khoa Cng ngh Thng tin i hc Lt Trang 92

    z

    x

    y

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    93/112

    Bi Ging Tom Tt: Ha My Tnh

    6.3.2.1 Php quay quanh trc x

    Hnh 5.19 : Php quay quanh truc x

    - L php bin i P(x,y,z) P(x,y,z) qua php quay gc quanh trc x :

    - Ta c :

    +=

    =

    =

    cossin'

    coscos'

    '

    zyz

    zyy

    xx

    Cc ta y,z bin thin tng t php quay gc quanh gc ta trong mtphng yoz (y ng vai tr x, z ng vai tr y).

    Do ,

    =

    1000

    0cossin0

    0sincos0

    0001

    xT

    6.3.2.2 Php quay quanh trc y

    - L php bin i P(x,y,z) P(x,y,z) qua php quay gc quanh trc y :

    - Ta c :

    +=

    =

    =

    cossin'

    sincos'

    '

    xzx

    xzz

    yy

    Do ,

    Khoa Cng ngh Thng tin i hc Lt Trang 93

    z

    x

    y

    P

    P

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    94/112

    Bi Ging Tom Tt: Ha My Tnh

    =

    1000

    0cos0sin

    0010

    0sin0cos

    yT

    6.3.2.3 Php quay quanh trc z

    - L php bin i P(x,y,z) P(x,y,z) qua php quay gc quanh trc y :

    - Ta c :

    +=

    =

    =

    cossin'

    sincos'

    '

    yxy

    yxx

    zz

    Do ,

    =

    1000

    0100

    00cossin

    00cos

    zT

    6.3.2.4 Php quay quanh trc song song vi trc ta

    Php quay quanh trc song song vi trc ta hiu qu vi nhiu php bin i,

    trong thc t i tng thng quay quanh trc ca n. Ta xt trng hp trc itng song song vi 1 trong cc trc ta . n gin ta phn tch chuyn ngquay ca i tng song song vi trc cho trc theo cc bc :

    Bc 1 : Tnh tin trc i tng trng vi trc ta m n song song. Bc 2 : Quay i tng quanh trc ca n tng ng quay quanh trc ta

    . Bc 3 : Tnh tin tr li.

    VD : Xt php quay gc quanh trc x song song vi x i qua (m, n, l)

    Khoa Cng ngh Thng tin i hc Lt Trang 94

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    95/112

    Bi Ging Tom Tt: Ha My Tnh

    Hnh 5.20 : Php quay quanh truc x song song vi x

    Bc 1 : Tnh tin x trng vi x.

    =

    1

    01000010

    0001

    ]T[-m,-n,-l

    lnm

    Bc 2 : Quay quanh trc x vi gc

    =

    1000

    0cossin0

    0sincos0

    0001

    xT

    Bc 3 : Tnh tin tr li

    1

    0100

    0010

    0001

    =l]n,T[m,=[-m,-n,-l]T1-

    lnm

    Do , ma trn biu din php quay gc quanh trc xsong song x i qua (m,n,l) l :

    T= T[-m,-n,-l] xT T[m,n,l]

    VD : Tm nh ca hnh ch nhtA(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quaygc =45o quanh trc x song song x i qua (1,1,1).

    Gii :

    Tnh : T= T[-1,-1,-1] xT T T[1,1,1]

    A(1,2,1) A=(1,2,1,1) T

    Khoa Cng ngh Thng tin i hc Lt Trang 95

    P

    P

    x

    z

    x

    y

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    96/112

    Bi Ging Tom Tt: Ha My Tnh

    B(3,2,1) B=(3,2,1,1) T

    C(3,4,3) C=(3,4,3,1) T

    D(1,4,3) D=(1,4,3,1) T

    6.3.2.5 Php quay quanh trc bt k

    Xt php quay gc quanh trc bt k, ta thc hin qua cc bc sau :

    Hnh 5.21: Php quay quanh trucbt k

    Bc 1 : Tnh tin trng gc ta .

    1...0100

    0010

    0001

    =y,-P.z]T[-P.x,-P.

    zPyPxP

    Bc 2 : Quay quanh trc z gc sao choP,Pthuc (xOz)

    =

    1000

    0100

    00cossin

    00cos

    zT

    Bc 3 : Quay quanh trc y gc sao choP, Pthuc Ox

    =

    1000

    0cos0sin

    0010

    0sin0cos

    yT

    Bc 4 : Quay quanh trc x gc

    :

    Khoa Cng ngh Thng tin i hc Lt Trang 96

    z

    x

    y

    P

    Px

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    97/112

    Bi Ging Tom Tt: Ha My Tnh

    =

    1000

    0cossin0

    0sincos0

    0001

    xT

    Bc 5 :Ngc bc 3

    Bc 6: Ngc bc 2

    Bc 7 :Ngc bc 1

    Cch xc nh chiu dng trong cc php quay

    nh ngha v chiu quay c dng chung cho c h ta theo qui c bn tayphi v bn tay tri. C th chiu dng c nh ngha nh sau :

    o Quay quanh truc x : t trc dng y n trc dng xo Quay quanh trc y : t trc dng z n trc dng xo Quay quanh trc x : t trc dng x n trc dng y

    Ngoi cc php bin i trn, ta xt thm mt s php bin i Affine khc sau y:

    Php i xng qua mt phng ta

    Php i xng qua trc x, y v z

    Khoa Cng ngh Thng tin i hc Lt Trang 97

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    98/112

    Bi Ging Tom Tt: Ha My Tnh

    Php bin dng

    Khoa Cng ngh Thng tin i hc Lt Trang 98

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    99/112

    Bi Ging Tom Tt: Ha My Tnh

    Bi tp chng 6

    1. Tm v tr mi ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quaygc =45o quanh gc ta .

    2. Tm v tr mi ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quaygc =30o quanh im M(1,1,1).

    3. Tm v tr mi ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quaygc =45o quanh trc xsong song x i qua (1,1,1).

    Khoa Cng ngh Thng tin i hc Lt Trang 99

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    100/112

    Bi Ging Tom Tt: Ha My Tnh

    PHU LUCTH VIN HOA OPENGL

    OpenGL l g?

    OpenGL (GL l t vit tt ca Graphics Library) l phn mm giao din vi ccphn cng ho. OpenGL c pht trin bi Silicon Graphic Inc. OpenGL cng lmt giao din lp trnh ng dng (Application Program Interface API). N bao gmkhong 150 cu lnh h tr nhiu ngn ng nh C, C++, Java, C#...Cho php ngilp trnh s dng to ra ng dng tng tc ho 3D.

    OpenGL c thit k khng ph thuc nn tng phn cng cng nh h iuhnh my tnh (independence of hardware platform and operating system). Nh mtchng trnh chung gian gia ngi dng v phn cng my tnh. Vi OpenGL chng

    ta s to ra cc m hnh phc tp t nhng i tng hnh hc c bn. l cc im(Points), ng (Line), a gic (Polygon).

    C php ca OpenGL

    Cc cu lnh ca OpenGL u s dng tin t gl v cc t tip theo c bt ubng k t hoa, v d glClearColor(). Tng t nh vy, cc hng c nh nghabng tin t GL_ tip theo l cc t vit hoa c ngn cch bi k t gch di, v dGL_COLOR_BUFFER_BIT.

    glVertex3fv

    ch ra nh dng vector, nu c

    loi d liu: ffloat

    d double float

    S i, (2,3 hoc 4) s signed short integer

    i signed integer

    Loi d liu khc trong lnh OpenGL :

    - b character

    - ub unsigned character

    - us unsigned short integer

    - ui unsinged integer.

    D liu v hng v nh dng vector.

    Khoa Cng ngh Thng tin i hc Lt Trang 100

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    101/112

    Bi Ging Tom Tt: Ha My Tnh

    Cu lnh OpenGL cho ta thy c ngha chc nng ca hm.Tham s v loitham s xut hin tu thuc cc hm khc nhau.

    i khi trong cu lnh c thm du * ch rng c php ny c th c nhiulnh. V d, glColor*() c gi tr cho cc lnh khc nhau bn thit lp mu hinhnh. Hoc glClear*() c cc lnh sau: glClearColor(), glClearDepth(),

    glClearAccum(), glClearStencil().

    OpenGL l mt my trng thi

    OpenGL l mt my trng thi. Bn t n ti cc trng thi khc nhau (hoc ccch ). Chng gi nguyn tc dng cho n khi ta thay i trng thi khc. Chnghn t mu hin hnh l mt bin trng thi. Bn c th t mu hin ti bi mutrng, mu hoc mu no khc, v sau mi i tng c v bi mu choti khi bn t mu hin ti bng mu khc. Mu hin ti ch l mt trong nhiu bintrng thi m OpenGL lu gi. Cn nhiu trng thi khc nh im nhn hin hnh, v

    tr v c tnh nh sng, thuc tnh cht liu,

    Bin trng thi l ni lu gi cc trng thi. Mi bin trng thi hoc ch cmt gi tr mc nh ban u. Ta c th xem gi tr ca chng thng qua 6 hm sau:

    o glGetBooleanv()

    o glGetDoublev()

    o glGetFloatv()

    o glGetIntergerv()

    o glGetPointerv()

    o glIsEnabled()

    Mt vi bin trng thi c nhiu hn ch nh lnh yu cu (chng hnglGetLight*(), glGetError(), hoc glGetPolygonStipple()). Hn na ta c th lu vly ra cc gi tr ca tp trng thi bin trn thuc tnh stack vi lnh glPushAttrib()hoc glPushClientAttrib() v glPopAttrib() hoc glPopClientAttrib().

    Cc th vin lin quan

    Mc d OpenGL l cng c mnh song cc i tng v u l nhng i tnghnh hc c bn. n gin mt s th tc, chng ta c cung cp mt s th vin c th iu khin vic v i tng mc cao hn.

    OpenGL Utility Library (GLU): Bao gm mt s th tc thit lp ma trnxc nh hng nhn, ma trn cc php chiu, v biu din cc mt trong khnggian 3 chiu.

    OpenGL Utility Toolkit (GLUT): bao gm cc th tc nhm n gin hovic to cc i tng hnh hc. c bit hnh trong khng gian 3 chiu (solidhnh c, wire hnh khung).

    Khoa Cng ngh Thng tin i hc Lt Trang 101

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    102/112

    Bi Ging Tom Tt: Ha My Tnh

    Khi lp trnh OpenGL trong C# ta s dng thm mt s th vin sau: csgl.dll,csgl.native.dll, CsGL.Basecode.

    Hin th cc i tng hnh hc c bn:im, on thng, a gic

    to mt i tng hnh hc t cc nh, ta t cc nh gia (hai hmglBegin(param) v glEnd(). Tham s param a vo cho hm glBegin() s quyt nhi tng OpenGL v ra t cc nh khai bo bn trong.

    V d:

    glBegin(GL_POLYGON);

    glVertex2f(0.0, 0.0);

    glVertex2f(0.0, 1.0);

    glVertex2f(0.5, 1.0);

    glVertex2f(1.0, 0.5);

    glVertex2f(0.5, 0.0);

    glEnd();

    Hm glBegin(Glenum mode). Bin mode ch ra i tng c v, nhn mt trong ccgi tr sau:

    Gi tr ngha

    GL_POINTS V cc im

    GL_LINES V cc on thng

    GL_POLYGON V a gic li

    GL_TRIANGLES V tam gic

    GL_QUADS V t gic

    GL_LINE_STRIP V ng gp khc khng khp kn

    Khoa Cng ngh Thng tin i hc Lt Trang 102

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    103/112

    Bi Ging Tom Tt: Ha My Tnh

    GL_LINE_LOOP V ng gp khc khp kn

    GL_TRIANGLE_STRIP Mt di cc tam gic lin kt vi nhau

    GL_TRIANGLE_FAN Mt di cc tam gic lin kt theo hnh qut

    GL_QUAD_STRIP Mt di cc t gic lin kt vi nhau

    Danh sch cc hnh th hin s kt qu tng ng ca bin mode

    Hnh phu luc 1: Cc i tng hnh hc c ban

    Qui lut hin th r rng trn hnh v, ring vi GL_QUAD_STRIP c v vi quilut ni 4 im c v tr 2n,2n+1,2n+3,2n+2 vi 2n l im khi u ca hnh t gic. ch nh 1 nh ta dng lnh sau:glVertex{2,3,4}{sifd}[v](to ).Trong :

    - {2,3,4} ch nh s chiu ca khng gian.

    - [v] nu to im c truyn t mt mng cho trc.

    Khoa Cng ngh Thng tin i hc Lt Trang 103

  • 7/31/2019 76404645 DHMT Bai Giang Tom Tat

    104/112

    Bi Ging Tom Tt: Ha My Tnh

    - {sifd} ch nh kiu d liu ca to , ngha c ch nh trong bng sau:

    K hiu Kiu


Recommended