Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Công nghệ thông tin Bài giảng chi tiết về đồ họa máy tính...

Tài liệu Bài giảng chi tiết về đồ họa máy tính

.PDF
162
58
108

Mô tả:

ÑOÀ HOÏA MAÙY TÍNH Hieån thò ñoái töôïng hai chieàu Moät soá khaùi nieäm • Cöûa soå (window) laø moät vuøng ñöôïc choïn ñeå hieån thò trong heä toïa ñoä theá giôùi thöïc. • Vuøng quan saùt (viewport) laø vuøng ñöôïc choïn treân thieát bò hieån thò ñeå caùc ñoái töôïng ôû trong cöûa soå aùnh xaï vaøo. • Cöûa soå xaùc ñònh caùi gì ñöôïc thaáy treân thieát bò hieån thò, coøn vuøng quan saùt xaùc ñònh nôi naøo noù seõ ñöôïc hieån thò. • Quaù trình aùnh xaï moät vuøng ñònh nghóa trong heä toïa ñoä theá giôùi thöïc vaøo moät vuøng trong heä toïa ñoä thieát bò ñöôïc goïi laø pheùp bieán ñoåi heä quan saùt (viewing transformation). Window Viewport ywmax yvmax yvmin ywmin xwmin Döông Anh Ñöùc, Leâ Ñình Duy xwmax xvmin xvmax Hieån thò ñoái töôïng hai chieàu 1/7 ÑOÀ HOÏA MAÙY TÍNH Qui trình hieån thò ñoái töôïng hai chieàu • Tröôùc tieân, caùc ñoái töôïng seõ ñöôïc moâ taû baèng caùc ñoái töôïng ñoà hoïa cô sôû vaø caùc thuoäc tính cuûa chuùng trong töøng heä toïa ñoä cuïc boä (modeling coordinates - MC) nhaèm ñôn giaûn hoùa vaø taän duïng caùc ñaëc tröng rieâng cuûa töøng loaïi. • Sau ñoù, chuùng ta seõ duøng caùc pheùp bieán ñoåi heä toïa ñoä ñeå chuyeån caùc moâ taû töø caùc heä toïa ñoä cuïc boä naøy sang moät heä toïa ñoä theá giôùi thöïc (world coordinates WC) duy nhaát chöùa toaøn boä caùc ñoái töôïng thaønh phaàn. Pheùp chuyeån ñoåi naøy ñöôïc goïi laø pheùp chuyeån ñoåi moâ hình (modeling coordinates transformation). • Tieáp theo, chuùng ta seõ ñònh moät heä toïa ñoä quan saùt (viewing coordinates - VC), laø heä toïa ñoä moâ taû vò trí cuûa ngöôøi quan saùt ñoái töôïng. Nhôø vieäc söû duïng heä toïa ñoä naøy maø cuøng moät moâ taû, caùc ñoái töôïng coù theå ñöôïc quan saùt ôû nhieàu goùc ñoä vaø vò trí khaùc nhau. • Sau khi chuyeån caùc moâ taû ñoái töôïng töø heä toïa ñoä theá giôùi thöïc sang heä toïa ñoä quan saùt, chuùng ta seõ ñònh nghóa cöûa soå trong heä toïa ñoä naøy, ñoàng thôøi ñònh nghóa vuøng quan saùt trong heä toïa ñoä thieát bò chuaån (normalized device coordinates - NDC) coù toïa ñoä caùc chieàu thay ñoåi trong khoaûng töø 0 ñeán 1. • Sau khi thöïc hieän pheùp aùnh xaï töø cöûa soå sang vuøng quan saùt, taát caû caùc phaàn cuûa ñoái töôïng naèm ngoaøi vuøng quan saùt seõ bò xeùn (clip) vaø toaøn boä nhöõng gì naèm trong vuøng quan saùt seõ ñöôïc aùnh xaï sang heä toïa ñoä thieát bò (device coordinates - DC). Döông Anh Ñöùc, Leâ Ñình Duy Hieån thò ñoái töôïng hai chieàu 2/7 ÑOÀ HOÏA MAÙY TÍNH • Vieäc ñöa ra heä toïa ñoä thieát bò chuaån nhaèm giuùp cho vieäc töông thích deã daøng vôùi nhieàu loaïi thieát bò hieån thò khaùc nhau. • Baèng caùch thay ñoåi vò trí cuûa vuøng quan saùt chuùng ta coù theå quan saùt caùc ñoái töôïng taïi caùc vò trí khaùc nhau treân maøn hình hieån thò, ñoàng thôøi, baèng caùch thay ñoåi kích thöôùc cuûa vuøng quan saùt, chuùng ta coù theå thay ñoåi kích thöôùc vaø tính caân xöùng cuûa caùc ñoái töôïng ñöôïc hieån thò. • Chuùng ta coù theå thöïc hieän caùc hieäu öùng thu phoùng baèng caùch aùnh xaï caùc cöûa soå coù kích thöôùc khaùc nhau vaøo vuøng quan saùt coù kích thöôùc coá ñònh. Khi caùc cöûa soå ñöôïc thu nhoû, phaàn naèm trong cöûa soå seõ ñöôïc phoùng to giuùp chuùng ta deã daøng quan saùt caùc chi tieát maø khoâng theå thaáy ñöôïc trong caùc cöûa soå lôùn hôn. MC Chuyeån ñoåi töø heä toïa ñoä cuïc boä sang heä toïa ñoä theá giôùi thöïc WC Chuyeån ñoåi töø heä toïa ñoä theá giôùi thöïc sang heä toïa ñoä quan saùt Döông Anh Ñöùc, Leâ Ñình Duy VC Chuyeån ñoåi töø heä toïa ñoä quan saùt sang heä toïa ñoä thieát bò chuaån NDC AÙnh xaï töø heä toïa ñoä thieát bò chuaån sangheä toïa ñoä thieát bò DC Hieån thò ñoái töôïng hai chieàu 3/7 ÑOÀ HOÏA MAÙY TÍNH Heä toïa ñoä quan saùt • Heä toïa ñoä quan saùt : ♦ Choïn ñieåm P0 (x 0 , y0 ) trong heä toïa ñoä theá giôùi thöïc laøm goác toïa ñoä. ♦ Vector V moâ taû höôùng quan saùt ñeå ñònh höôùng cho truïc tung yv cuûa heä toïa ñoä. Vector V ñöôïc goïi laø view-up vector. • Töø V chuùng ta coù theå tính ñöôïc caùc vector ñôn vò v = (v x , v y ) vaø u = (u x , u y ) töông öùng cho caùc truïc tung yv vaø truïc hoaønh x v cuûa heä toïa ñoä. Caùc vector ñôn vò naøy seõ ñöôïc duøng ñeå taïo thaønh hai doøng ñaàu tieân cuûa ma traän quay M R ñeå ñöa caùc truïc x v y v truøng vôùi caùc truïc x w yw cuûa heä truïc toïa ñoä theá giôùi thöïc. • Ma traän cuûa pheùp chuyeån moät ñieåm trong heä toïa ñoä theá giôùi thöïc sang heä toïa ñoä quan saùt : M WC ,VC = M T M R , vôùi MT laø pheùp tònh tieán goác toïa ñoä heä quan saùt veà goác toïa ñoä heä toïa ñoä theá giôùi thöïc. yworld yworld yview yv iew y0 T xview x0 xworld xworld R xv iew (a) Döông Anh Ñöùc, Leâ Ñình Duy (b) Hieån thò ñoái töôïng hai chieàu 4/7 ÑOÀ HOÏA MAÙY TÍNH Heä toïa ñoä thieát bò chuaån • Do caùch ñònh nghóa cuûa caùc heä toïa ñoä thieát bò khaùc nhau neân moät hình aûnh hieån thò ñöôïc treân thieát bò naøy chöa chaéc hieån thò chính xaùc treân thieát bò kia. Chính vì vaäy caàn phaûi xaây döïng heä toïa ñoä thieát bò chuaån ñaïi dieän chung cho caùc thieát bò ñeå coù theå moâ taû caùc hình aûnh cuûa theá giôùi thöïc maø khoâng phuï thuoäc vaøo baát cöù thieát bò naøo. • Trong heä toïa ñoä naøy, caùc toïa ñoä x, y seõ ñöôïc gaùn caùc giaù trò trong khoaûng töø 0 ñeán 1. Nhö vaäy, vuøng khoâng gian cuûa heä toïa ñoä thieát bò chuaån chính laø hình vuoâng ñôn vò coù goùc traùi döôùi laø (0,0) vaø goùc phaûi treân (1,1). y 1 (1,1) 1 Döông Anh Ñöùc, Leâ Ñình Duy x Hieån thò ñoái töôïng hai chieàu 5/7 ÑOÀ HOÏA MAÙY TÍNH Chuyeån ñoåi töø cöûa soå sang vuøng quan saùt • Pheùp chuyeån ñoåi töø cöûa soå sang vuøng quan saùt bao goàm 3 pheùp bieán ñoåi : ♦ Pheùp tònh tieán ñeå dòch chuyeån goùc traùi döôùi veà goác toïa ñoä (hình a) ♦ Pheùp bieán ñoåi tæ leä ñeå chænh kích thöôùc cuûa cöûa soå veà cuøng kích thöôùc cuûa vuøng quan saùt (hình b, hình c) ♦ Pheùp tònh tieán dòch chuyeån veà goùc traùi döôùi cuûa vuøng quan saùt (hình d). y y v v (xmax,ymax) (umax,vmax) (xmin,ymin) (umin,vmin) x x (a) (b) u (c) u (d) • Ta coù ma traän cuûa pheùp bieán ñoåi : u − u min vmax − vmin M WV = M TW (− x min ,− y min )M S  max , x − x min y max − y min  max     =    − x min  u max − u min x max − x min 0 0 u max − u min + u min x max − x min Döông Anh Ñöùc, Leâ Ñình Duy   M TV (u min , vmin )   − y min vmax y max vmax y max − vmin − y min − vmin + vmin − y min  0   0   1  Hieån thò ñoái töôïng hai chieàu 6/7 ÑOÀ HOÏA MAÙY TÍNH • Nhö vaäy neáu P (x, y) laø ñieåm trong cöûa soå thì noù seõ coù toïa ñoä trong vuøng quan saùt laø: (sx(x − x min ) + umin , sy( y − ymin ) + vmin ) u − u min vmax − vmin sx = max , sy = y − y . vôùi x max − x min max min • sx, sy laø caùc heä soá tæ leä cuûa caùc kích thöôùc cuûa cöûa soå vaø vuøng quan saùt. Khi sx = sy = 1 , caùc ñoái töôïng qua pheùp chuyeån ñoåi seõ ñöôïc giöõ nguyeân hình daùng vaø tính caân xöùng. Döông Anh Ñöùc, Leâ Ñình Duy Hieån thò ñoái töôïng hai chieàu 7/7 ÑOÀ HOÏA MAÙY TÍNH ÑOÀ HOÏA 3 CHIEÀU Döông Anh Ñöùc, Leâ Ñình Duy Giôùi thieäu veà ñoà hoïa 3 chieàu 1/8 ÑOÀ HOÏA MAÙY TÍNH Daãn nhaäp • Caùc ñoái töôïng trong theá giôùi thöïc phaàn lôùn laø caùc ñoái töôïng 3 chieàu coøn thieát bò hieån thò chæ 2 chieàu. • Muoán coù caùc hình aûnh 3 chieàu ta caàn giaû laäp. • Chieán löôïc cô baûn laø chuyeån ñoåi töøng böôùc. Hình aûnh seõ ñöôïc hình thaønh töø töø, ngaøy caøng chi tieát hôn. • Qui trình hieån thò: Modeling Transformation Trivial Rejection Illumination Bieán ñoåi töø heä toaï ñoä ñoái töôïng sang heä toaï ñoä theá giôùi thöïc Loaïi boû caùc ñoái töôïng khoâng nhìn thaáy ñöôïc Chieáu saùng ñoái töôïng Viewing Transformation Chuyeån töø world space sang eye space Clipping Loaïi boû phaàn naèm ngoaøi viewing frustum Projection Chieáu töø eye space xuoáng screen space Rasterization Display Döông Anh Ñöùc, Leâ Ñình Duy Chuyeån ñoái töôïng sang daïng pixel Hieån thò ñoái töôïng Giôùi thieäu veà ñoà hoïa 3 chieàu 2/8 ÑOÀ HOÏA MAÙY TÍNH Caùc vaät theå 3D ñöôïc bieåu dieãn nhö theá naøo ? • Point • Vector • Line • Ray • Triangle • Polygon • Quadric curve • Spline • Quadric solid • Curved surface • v.v… Ñieåm trong khoâng gian 3 chieàu • Moâ taû moät vò trí trong khoâng gian typedef struct{ Coordinate x ; Coordinate y ; Coordinate z ; }Point3D ; (x,y,z) 3D vector • Moâ taû moät höôùng vaø bieân ñoä (magnitude) ♦ Xaùc ñònh bôûi 3 toaï ñoä dx, dy, dz _ ♦ Magnitude V = dx 2 + dy 2 + dz2 ♦ Khoâng coù vò trí trong khoâng gian • Tích voâ höôùng cuûa 2 vector ♦ V1 • V2 = dx 1 dx 2 + dy 1 dy 2 + dz1 dz 2 ♦ V1 • V2 = V1 V1 cos(Θ ) Döông Anh Ñöùc, Leâ Ñình Duy typedef struct { Coordinate dx; Coordinate dy; Coordinate dz; }Vector; Giôùi thieäu veà ñoà hoïa 3 chieàu 3/8 ÑOÀ HOÏA MAÙY TÍNH Ñoaïn thaúng trong khoâng gian 3 chieàu • Bieåu dieãn toå hôïp tuyeán tính cuûa 2 ñieåm. ♦ Bieåu dieãn daïng tham soá cuûa ñoaïn thaúng P = P1 + t (P2 - P1 ), (0 ≤ t ≤ 1) typedef struct { Point P1; Point P2; }Segment; P2 P1 Tia (Ray) • Laø moät ñoaïn thaúng vôùi moät ñaàu naèm ôû voâ cöïc. ♦ Bieåu dieãn daïng tham soá cuûa tia P = P1 + t V, (0 ≤ t < ∞) typedef struct { Point P1; Vector V; }Ray; P V Ñöôøng thaúng (Line) • Laø moät ñoaïn thaúng vôùi caû hai ñaàu naèm ôû voâ cöïc. ♦ Bieåu dieãn daïng tham soá cuûa ñöôøng thaúng P = P1 + t V, (-∞ < t < ∞) typedef struct { Point P1; Vector V; }Line; Döông Anh Ñöùc, Leâ Ñình Duy P V Giôùi thieäu veà ñoà hoïa 3 chieàu 4/8 ÑOÀ HOÏA MAÙY TÍNH Maët phaúng (Plane) • Laø moät ñoaïn thaúng vôùi caû hai ñaàu naèm ôû voâ cöïc. ♦ Bieåu dieãn cuûa maët phaúng P.N + d = 0 hoaëc ax + by + cz + d = 0 typedef struct { Vector N; Distance d; }Plane; Ña giaùc (Polygon) • Laø moät vuøng giôùi haïn bôûi daõy caùc ñieåm ñoàng phaúng. ♦ Tam giaùc, ♦ Töù giaùc, ♦ Ña giaùc loài, ♦ Ña giaùc loõm, ♦ Ña giaùc töï caét, ♦ Ña giaùc coù loã typedef struct { Point *Points; int nPoints; }Polygon; ♦ Caùc ñieåm ñöôïc cho theo thöù töï ngöôïc chieàu kim ñoàng hoà Döông Anh Ñöùc, Leâ Ñình Duy Giôùi thieäu veà ñoà hoïa 3 chieàu 5/8 ÑOÀ HOÏA MAÙY TÍNH Modeling transformation • Bieán ñoåi töø Heä toïa ñoä ñoái töôïng sang Heä toïa ñoä theá giôùi thöïc. • Moãi ñoái töôïng ñöôïc moâ taû trong moät heä toïa ñoä rieâng ñöôïc goïi laø Heä toïa ñoä ñoái töôïng. z 5 10 4 9 3 8 1 6 2 1 x 1 7 1 y • Coù hai caùch moâ hình hoùa ñoái töôïng : ♦ Solid modeling: moâ taû caùc vaät theå (keå caû beân trong) ♦ Boudary representation: chæ quan taâm ñeán beà maët ñ/tg • Caùc ñoái töôïng coù theå ñöôïc bieåu dieãn baèng moâ hình WireFrame • Nhaän xeùt ♦ Khi bieåu dieãn ñoái töôïng, ta coù theå choïn goác toïa ñoä vaø ñôn vò ño löôøng sao cho vieäc bieåu dieãn thuaän lôïi nhaát. Thöôøng thì ngöôøi ta chuaån hoùa kích thöôùc cuûa ñoái töôïng khi bieåu dieãn. ♦ Boudary representation cho pheùp xöû lyù nhanh coøn silid modeling cho hình aûnh ñaày ñuû vaø xaùc thöïc hôn. Döông Anh Ñöùc, Leâ Ñình Duy Giôùi thieäu veà ñoà hoïa 3 chieàu 6/8 ÑOÀ HOÏA MAÙY TÍNH Trivial Rejection • Loaïi boû caùc ñoái töôïng hoaøn toaøn khoâng theå nhìn thaáy trong caûnh. • Thao taùc naøy giuùp ta löôïc boû bôùt caùc ñoåi töôïng khoâng caàn thieát hieån thò giaûm chi phí xöû lyù. Illumination • Gaùn cho caùc ñoái töôïng maøu saéc döïa treân caùc ñaëc tính cuûa caùc chaát taïo neân chuùng vaø caùc nguoàn saùng toàn taïi trong caûnh. • Coù nhieàu moâ hình chieáu saùng vaø taïo boùng : constantintensity, interpolate (Gouraud), phong, …. Viewing transformation • Thöïc hieän moät pheùp bieán ñoåi heä toïa ñoä ñeå ñaët vò trí quan saùt (viewing position) veà goác toïa ñoä vaø maët phaúng quan saùt (viewing plane) veà moät vò trí mong öôùc. • Hình aûnh hieån thò phuï thuoäc vaøo vò trí quaùn saùt vaø goùc nhìn. • Heä qui chieáu coù goác ñaët taïi vò trí quan saùt vaø phuø hôïp vôùi höôùng nhìn seõ thuaän lôïi cho caùc xöû lyù nhaát. Döông Anh Ñöùc, Leâ Ñình Duy Giôùi thieäu veà ñoà hoïa 3 chieàu 7/8 ÑOÀ HOÏA MAÙY TÍNH Clipping • Thöïc hieän vieäc xeùn (clip) caùc ñoái töôïng trong caûnh ñeå caûnh naèm goïn trong moät phaàn khoâng gian hình choùp cuït giôùi haïn vuøng quan saùt maø ta goïi laø viewing frustum. • Viewing frustum coù truïc truøng vôùi tia nhìn, kích thöôùc y=top x=left y z VCS z=-near z=-far x y=bottom x=right giôùi haïn bôûi vuøng ta muoán quan saùt. Projection • Thöïc hieän vieäc chieáu caûnh 3 chieàu töø khoâng gian quan saùt xuoáng khoâng gian maøn hình. • Coù hai phöông phaùp chieáu: ♦ Chieáu song song ♦ Chieáu phoái caûnh • Khi chieáu ta phaûi tieán haønh vieäc khöû maët khuaát ñeå coù theå nhaän ñöôïc hình aûnh trung thöïc. • Khöû maët khuaát cho pheùp xaùc ñònh vò trí (x,y) treân maøn hình thuoäc veà ñoái töôïng naøo trong caûnh. Döông Anh Ñöùc, Leâ Ñình Duy Giôùi thieäu veà ñoà hoïa 3 chieàu 8/8 ÑOÀ HOÏA MAÙY TÍNH Caùc thuaät toaùn toâ maøu Daãn nhaäp • Moät vuøng toâ thöôøng ñöôïc xaùc ñònh bôûi moät ñöôøng kheùp kín naøo ñoù goïi laø ñöôøng bieân. Daïng ñöôøng bieân ñôn giaûn thöôøng gaëp laø ña giaùc. • Coù hai daïng vuøng toâ thöôøng gaëp : toâ baèng moät maøu thuaàn nhaát (solid fill) vaø toâ theo moät maãu toâ (fillpattern) naøo ñoù. • Vieäc toâ maøu thöôøng ñöôïc chia laøm hai coâng ñoaïn : ♦ Xaùc ñònh vò trí caùc ñieåm caàn toâ maøu. ♦ Quyeát ñònh toâ caùc ñieåm treân baèng maøu naøo. Coâng ñoaïn naøy thöïc söï phöùc taïp khi ta caàn toâ theo moät maãu toâ naøo ñoù chöù khoâng phaûi toâ thuaàn moät maøu. • Coù hai caùch tieáp caän chính : toâ maøu theo doøng queùt vaø toâ maøu döïa theo ñöôøng bieân. ♦ Phöông phaùp toâ maøu döïa theo doøng queùt seõ xaùc ñònh phaàn giao cuûa caùc doøng queùt keá tieáp nhau vôùi ñöôøng bieân cuûa vuøng toâ, sau ñoù seõ tieán haønh toâ maøu caùc ñieåm thuoäc phaàn giao naøy. Caùch naøy thöôøng ñöôïc duøng ñeå toâ maøu ña giaùc, ñöôøng troøn, ellipse vaø moät soá ñöôøng cong ñôn giaûn khaùc. ♦ Phöông phaùp toâ maøu döïa theo ñöôøng bieân seõ baét ñaàu töø moät ñieåm beân trong vuøng toâ vaø töø ñoù loang daàn ra cho ñeán khi gaëp ñieåm bieân. Caùch naøy thöôøng ñöôïc duøng cho caùc daïng ñöôøng bieân phöùc taïp. Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 1/16 ÑOÀ HOÏA MAÙY TÍNH Thuaät toaùn toâ theo doøng queùt Baøi toaùn ñaët ra : Caàn toâ maøu moät ña giaùc cho bôûi N ñænh Pi (x i , y i ), i = 0,... N − 1 . Ña giaùc naøy coù theå laø ña giaùc loài, ña giaùc loõm, vaø caû ña giaùc töï caét, … Toùm taét caùc böôùc chính cuûa thuaät toaùn • Tìm y top , ybottom laàn löôït laø giaù trò lôùn nhaát, nhoû nhaát cuûa taäp caùc tung ñoä cuûa caùc ñænh cuûa ña giaùc ñaõ cho: y top = max {y i , (x i , y i ) ∈ P} , ybottom = min{yi , (x i , yi ) ∈ P} . • ÖÙng vôùi moãi doøng queùt y = k , vôùi k thay ñoåi töø ybottom ñeán y top , laëp : ♦ Tìm taát caû caùc hoaønh ñoä giao ñieåm cuûa doøng queùt y = k vôùi caùc caïnh cuûa ña giaùc. ♦ Saép xeáp caùc hoaønh ñoä giao ñieåm theo thöù töï taêng daàn : x0 , x1 , x2 ,..., ♦ Toâ maøu caùc ñoaïn thaúng treân ñöôøng thaúng y = k laàn löôït ñöôïc giôùi haïn bôûi caùc caëp (x 0 , x1 ), (x1 , x 2 ),..., (x 2 k , x 2 k +1 ) . y ytop 0 1 2 3 ybottom O Döông Anh Ñöùc, Leâ Ñình Duy x Caùc thuaät toaùn toâ maøu 2/16 ÑOÀ HOÏA MAÙY TÍNH Caùc vaán ñeà ñaët ra • Haïn cheá ñöôïc soá caïnh caàn tìm giao ñieåm öùng vôùi moãi doøng queùt vì öùng vôùi moãi doøng queùt, khoâng phaûi luùc naøo taát caû caùc caïnh cuûa ña giaùc cuõng tham gia caét doøng queùt. • Xaùc ñònh nhanh hoaønh ñoä giao ñieåm vì neáu laëp laïi thao taùc tìm giao ñieåm cuûa caïnh ña giaùc vôùi moãi doøng queùt baèng caùch giaûi heä phöông trình seõ toán raát nhieàu thôøi gian. • Giaûi quyeát tröôøng hôïp soá giao ñieåm öùng vôùi tröôøng hôïp doøng queùt ñi ngang qua ñænh : Neáu soá giao ñieåm tìm ñöôïc giöõa caùc caïnh ña giaùc vaø doøng queùt laø leû thì vieäc nhoùm töøng caëp giao ñieåm keá tieáp nhau ñeå hình thaønh caùc ñoaïn toâ coù theå seõ khoâng chính xaùc. Ñieàu naøy chæ xaûy ra khi doøng queùt ñi ngang qua caùc ñænh cuûa ña giaùc. • Ngoaøi ra, vieäc tìm giao ñieåm cuûa doøng queùt vôùi caùc caïnh naèm ngang laø moät tröôøng hôïp ñaëc bieät caàn phaûi coù caùch xöû lí thích hôïp y=k2 0 1,2 3 y=k1 0 Döông Anh Ñöùc, Leâ Ñình Duy 1,2 3 4 Caùc thuaät toaùn toâ maøu 3/16 ÑOÀ HOÏA MAÙY TÍNH Toå chöùc caáu truùc döõ lieäu vaø thuaät toaùn • Danh saùch caùc caïnh (Edge Table – ET) : chöùa toaøn boä caùc caïnh cuûa ña giaùc (ñaõ loaïi ñi caùc caïnh naèm ngang) ñöôïc saép theo thöù töï taêng daàn cuûa y Min . • Danh saùch caùc caïnh kích hoaït (Active Edge Table – AET) : chöùa caùc caïnh cuûa ña giaùc coù theå caét öùng vôùi doøng queùt hieän haønh, caùc caïnh naøy ñöôïc saép theo thöù töï taêng daàn cuûa hoaønh ñoä giao ñieåm giöõa caïnh vaø doøng queùt. • Khi doøng queùt ñi töø bottom ñeán top, caùc caïnh thoûa ñieàu kieän seõ ñöôïc di chuyeån töø ET sang AET: ♦ Khi doøng queùt y = k baét ñaàu caét moät caïnh, nghóa laø k ≥ y Min , caïnh naøy seõ ñöôïc chuyeån töø ET sang AET. ♦ Khi doøng queùt khoâng coøn caét caïnh naøy nöõa, nghóa laø k > yMax , caïnh naøy seõ bò loaïi ra khoûi AET. ♦ Khi khoâng coøn caïnh naøo trong ET hay AET nöõa, quaù trình toâ maøu keát thuùc. • Ñeå tìm giao ñieåm giöõa caïnh ña giaùc vaø doøng queùt hieän haønh nhanh, ta coù nhaän xeùt : x k +1 − x k = 1 ((k + 1) − k) = 1 hay x k+1 = x k + 1 . m m m y=k+1 xk+1 y=k xk Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 4/16 ÑOÀ HOÏA MAÙY TÍNH Ñeà xuaát caáu truùc döõ lieäu cuûa moät caïnh (EDGE) deltaY y=k xIntersect yMin • y Min : giaù trò tung ñoä nhoû nhaát trong 2 ñænh cuûa caïnh. • xInter sec t : hoaønh ñoä giao ñieåm cuûa caïnh vôùi doøng queùt hieän haønh. • DxPerScan : giaù trò 1/m (m laø heä soá goùc cuûa caïnh). • deltaY : khoaûng caùch töø doøng queùt hieän haønh tôùi ñænh y Max . Luùc deltaY ≤ 0 . naøy ñieàu kieän k > yMax trôû thaønh • Giaù trò xInter sec t ñöôïc khôûi gaùn ban ñaàu laø hoaønh ñoä cuûa ñænh coù tung ñoä laø y Min , vaø giaù trò deltaY ñöôïc khôûi gaùn ban ñaàu laø y Max − y Min + 1 . Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn toâ maøu 5/16
- Xem thêm -

Tài liệu liên quan