Chuyên ngành:
/ Kỹ thuật - Công nghệ / Công nghệ thông tin / Tin học chuyên ngành
Sơ lược:
Lời nói đầu
Chương 1. Tổng quan về đồ họa máy tính
Chương 2. Sơ sở toán học của các hệ trục tọa độ & những phương thức hiện thực trong đồ họa máy tính
Chương 3. Cơ sở toán học của các đối tượng đồ họa & việc hiện thực trong môi trường windows
Chương 4. Các giải thuật tô màu
Chương 5. Hệ patterns
Chương 6. Ngôn ngữ Visual C++
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
LÔØI CAÛM ÔN
Chuùng em xin chaân thaønh caûm ôn thaày giaùo NGUYEÃN TAÁN THIEÄN cuøng taäp theå caùc thaày
coâ giaùo khoa Coâng Ngheä Thoâng Tin, tröôøng Ñaïi Hoïc Kyõ Thuaät ñaõ taän tình giuùp ñôõ chuùng em
hoaøn thaønh ñoà aùn toát nghieäp naøy.
Sinh vieân thöïc hieän
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 1
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
LÔØI NOÙI ÑAÀU
N
gaøy nay, song song vôùi söï phaùt trieån cuûa coâng ngheä thoâng tin thì laõnh vöïc
ñoà hoïa maùy tính - moät trong nhöõng laõnh vöïc lyù thuù cuûa tin hoïc - cuõng
ngaøy moät phaùt trieån khoâng ngöøng. Nhö chuùng ta ñaõ bieát, hình aûnh coù moät
yù nghóa raát lôùn trong vieäc thoâng tin, noù giuùp chuùng ta caûm nhaän thoâng tin nhanh
hôn, deã daøng hôn, ñaëc bieät laø trong nhöõng tröôøng hôïp baát ñoàng veà ngoân ngöõ.
Hình aûnh laøm cho khaû naêng giao tieáp giöõa con ngöôøi vaø maùy tính trôû neân sinh
ñoäng vaø lyù thuù, töø ñoù noù giuùp cho maùy tính coù theå môû roäng öùng duïng cuûa mình
trong raát nhieåu laõnh vöïc nhö chuùng ta thaáy hieän nay.
Ñoà Hoïa Trong Maùy Tính
Ñoà hoïa maùy tính - moät ngaønh khoa hoïc tin hoïc chuyeân nghieân cöùu veà caùc
phöông phaùp vaø caùc kyõ thuaät nhaèm moâ taû döõ lieäu thoâng qua caùc hình aûnh - vì
vaäy cuõng ngaøy caøng moät thaâm nhaäp nhieàu vaøo caùc laõnh vöïc nghieân cöùu vaø saûn
xuaát trong xaõ hoäi khi maø maùy tính ñaõ trôû thaønh ngöôøi coäng söï ñaéc löïc cuûa caùc
nhaø nghieân cöùu cuõng nhö caùc nhaø saûn xuaát. Ñoà hoïa maùy tính ñaõ giuùp cho caùc
öùng duïng deã daøng thaâm nhaäp vaø thuyeát phuïc ñöôïc ngöôøi söû duïng nhôø nhöõng
giao dieän thaân thieän, deã duøng cuûa mình. Ñoà hoïa maùy tính thöïc söï giuùp cho caùc
nhaø khoa hoïc vaø caùc nhaø saûn xuaát kích thích khaû naêng saùng taïo vaø naâng cao
hieäu suaát laøm vieäc.
Ngaøy nay, ñoà hoïa maùy tính ñöôïc söû duïng nhieàu trong caùc laõnh vöïc khaùc
nhau nhö coâng nghieäp, thöông maïi, quaûn lyù, giaùo duïc, giaûi trí,…Ñaëc bieät vôùi
nhöõng öu ñieåm cuûa mình, ñoà hoïa maùy tính cuõng ñaõ thaâm nhaäp raát saâu vaøo caùc
ngaønh thieát keá vaø trang trí myõ thuaät. Vieäc thieát keá vaø trang trí myõ thuaät ngaøy
nay cuõng trôû neân deã daøng hôn phaàn naøo vôùi söï trôï giuùp cuûa maùy tính, ngöôøi hoïa
só ñöôïc maùy tính taïo ra moät caûm giaùc laø y nhö ñang laøm vieäc ngoaøi ñôøi thöïc
baèng caùch cung caáp nhöõng "coâng cuï" nhö baøn veõ, baûn maøu, moät soá thao taùc nhö
caét, daùn, taåy, xoaù, thu, phoùng…
Heä Patterns
Hôn theá nöõa, maùy tính vôùi khaû naêng laäp trình vaø löu tröõ hình aûnh cuûa mình ñaõ
thöïc söï trôû thaønh ngöôøi coäng söï ñaéc löïc cho caùc nhaø taïo maãu khi coù theå taïo ra
haøng loaït maãu maõ môùi vôùi nhieàu kieåu daùng ñeïp nhôø caùc giaûi thuaät höõu hieäu cuûa
rieâng mình vaø löu tröõ nhöõng maãu veõ coù saün naøy saün saøng phuïc vuï khi caàn thieát,
töø ñoù coù theå noùi maùy tính noùi chung vaø ñoà hoïa trong maùy tính noùi rieâng ñaõ ñoùng
goùp raát nhieàu trong vieäc hoã trôï cho caùc nhaø thieát keá vaø taïo maãu baèng caùc heä
maãu veõ saün coù cuûa mình.
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 2
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
Ngoaøi ra, trong haàu heát taát caû caùc phaàn meàm öùng duïng ngaøy nay, heä caùc
patterns cuõng ñoùng goùp moät phaàn raát lôùn khi caùc nhaø laäp trình muoán thöïc hieän
nhöõng giao dieän ñoà hoïa. Chuùng ta coù theå thaáy trong phaàn lôùn caùc nhaø maùy saûn
xuaát treân theá giôùi hieän nay vaø ñaëc bieät laø trong nhöõng naêm gaàn ñaây ôû Vieät nam,
caùc heä thoáng ñieåu khieån töï ñoäng caùc quy trình saûn xuaát trong nhaø maùy (heä
automation söû duïng PLC) thì söï ñoùng goùp cuûa caùc maãu veõ cuõng trôû neân raát phoå
duïng. Chaúng haïn nhö khi muoán theå hieän caùc chi tieát, linh kieän hay caùc daây
chuyeàn coù maët trong nhaø maùy leân treân maøn hình thì khoâng coù gì höõu hieäu hôn laø
söû duïng caùc pattern ñaõ ñöôïc thieát keá saün vaø ngöôøi laäp trình chæ vieäc ñònh vò cho
caùc patterns moâ taû caùc chi tieát naøy maø khoâng nhaát thieát phaûi ngoài veõ laïi töøng chi
tieát moät.
Beân caïnh ñoù, moät soá phaàn meàm ñoà hoïa ngaøy nay luoân coù keøm theo caùc
thö vieän hình aûnh ñaõ ñöôïc thieát keá saün hoã trôï raát nhieàu cho caùc nhaø taïo maãu,
thieát keá vaø chuùng ta coù theå khaúng ñònh laø caùc thö vieän naøy phaàn lôùn laø ñöôïc taïo
ra töø nhöõng giaûi thuaät vaø caùc chöông trình ñaõ ñöôïc laäp trình saün treân maùy tính.
Keát luaän
Toùm laïi, noùi ñeán ñoà hoïa chaéc coù leõ moãi chuùng ta ñeàu bieát ñeán söï phong phuù vaø
ña daïng cuûa laõnh vöïc naøy. Nhöõng chöông trình ñoà hoïa ngaøy nay ña daïng veà chuû
ñeà, phong phuù veà soá löôïng vaø coøn xuaát saéc veà chaát löôïng. Ñieàu naøy cuõng deã
hieåu bôûi caùc coâng ty phaàn meàm ngaøy nay coù khaû naêng ñaàu tö lôùn veà taøi chính.
Vì leõ ñoù, trong phaïm vi ñoà aùn thöïc taäp toát nghieäp naøy, vôùi nhöõng muïc ñích neâu
treân, chuùng ta seõ laàn löôït nghieân cöùu nhöõng cô sôû lyù thuyeát , hieän thöïc vaøo
chöông trình vaø nhöõng giaûi thuaät cô baûn nhaèm coù theå taïo ra heä caùc maãu veõ
(pattern) ñôn giaûn, ngaén goïn maø coù theå hieän thöïc ñöôïc nhöõng yù töôûng chuû ñaïo
cuûa ñoà hoïa trong maùy tính hôn laø coù theå öùng duïng ñöôïc thaät söï trong cuoäc soáng.
Vì thôøi gian nghieân cöùu raát haïn heïp cho neân ñoà aùn toát nghieäp khoâng theå
traùnh ñöôïc nhöõng sai soùt. Chuùng em xin chaân thaønh caùm ôn söï ñoùng goùp cuûa caùc
thaày coâ giaùo vaø caùc baïn sinh vieân ñoàng nghieäp ñeå coù theå hoaøn thieän ñoà aùn moät
caùch xuaát saéc hôn.
Moät laàn nöõa, xin chaân thaønh caùm ôn thaày giaùo Nguyeãn Taán Thieän, caùc
thaày coâ giaùo thuoäc khoa Coâng Ngheä Thoâng Tin tröôøng Ñaïi Hoïc Kyõ Thuaät vaø caùc
baïn sinh vieân ñoàng nghieäp ñaõ giuùp ñôõ, ñoùng goùp yù kieán ñeå ñoà aùn toát nghieäp naøy
ñöôïc hoaøn thaønh.
Sinh vieân thöïc hieän
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 3
Luaän AÙn Toát Nghieäp
Chöông 1
Phaàn thuyeát minh
TOÅNG QUAN VEÀ ÑOÀ HOÏA MAÙY TÍNH
Ñoà hoïa maùy tính - moät trong nhöõng ngaønh nghieân cöùu cuûa khoa hoïc maùy tính - ngaøy nay
ñaõ laø moät trong nhöõng laõnh vöïc phaùt trieån nhanh nhaát vaø lyù thuù nhaát. Ñoà hoïa maùy tính vôùi
nhöõng tính naêng öu vieät cuûa mình, ngaøy caøng trôû thaønh moät trong nhöõng yeáu toá khoâng theå
thieáu trong vieäc thieát keá caùc giao dieän vôùi ngöôøi söû duïng, trong caùc quaù trình xöû lyù caùc döõ
lieäu khaû kieán, trong laõnh vöïc thöông maïi quaûng caùo treân truyeàn hình, trong ngaønh coâng
ngheä thieát keá troø chôi, hình aûnh ñoäng vaø nhieàu, nhieàu caùc öùng duïng khaùc.
Song song vôùi söï phaùt trieån cuûa coâng ngheä, maùy tính ngaøy nay ñaõ trôû thaønh ngöôøi baïn
ñoàng haønh khoâng theå thieáu ñoái vôùi nhöõng ngöôøi coâng taùc trong vieäc thieát keá vaø xöû lyù hình
aûnh do nhöõng coâng cuï höõu hieäu cuûa mình, cho neân chuùng ta coù theå noùi raèng, haàu nhö
khoâng coù moät laõnh vöïc naøo maø vieäc hieån thò ñoà hoïa laïi khoâng phaùt huy ñöôïc nhöõng öu
ñieåm cuûa mình vaø nhö theá cuõng chaúng laáy gì laøm ngaïc nhieân khi maø chuùng ta nhaän thaáy
vieäc öùng duïng ñoà hoïa maùy tính laïi phaùt trieån moät caùch roäng raõi ñeán nhö vaäy.
Maëc duø tröôùc ñaây caùc öùng duïng trong laõnh vöïc khoa hoïc kyõ thuaät phaûi döïa vaøo caùc
thieát bò ñaéc tieàn vaø coàng keành nhöng vôùi söï tieán boä cuûa ngaønh khoa hoïc maùy tính ñaõ laøm
cho ñoà hoïa maùy tính thöïc söï trôû thaønh moät coâng cuï coù giaù trò thöïc tieãn cao.
Ngaøy nay, chuùng ta thaáy ñoà hoïa maùy tính söû duïng trong nhieàu laõnh vöïc khaùc nhau nhö
khoa hoïc, kyõ thuaät, y khoa, thöông maïi, coäng nghieäp, hoäi hoïa, giaûi trí, quaûng caùo, giaùo duïc
vaø ñaøo taïo, v..v.. vaø v..v..
Thieát Keá Vôùi Söï Hoã Trôï Cuûa Maùy Tính (Computer Aided Design)
Moät trong caùc öùng duïng quan troïng nhaát cuûa ñoà hoïa maùy tính laø hoã trôï cho caùc quaù trình
thieát keá, ñaëc bieät laø trong laõnh vöïc kieán truùc vaø cheá taïo, tuy nhieân nhö chuùng ta ñaõ bieát,
haàu nhö toaøn boä caùc saûn phaåm coù maët trong cuoäc soáng ngaøy hoâm nay ñöôïc saûn xuaát ra ñeàu
coù söï hoã trôï ñaéc löïc cuûa maùy tính, töø nhöõng quaù trình ñôn giaûn nhö taïo maãu cho ñeán phöùc
taïp nhö xöû lyù hình aûnh trong caùc öùng duïng cuûa y hoïc, ñoà hoïa maùy tính ñeàu ñoùng goùp moät
phaàn raát quan troïng. Ñeå coù moät caùi nhìn toång quaùt nhaát veà söï öùng duïng cuûa ñoà hoïa maùy
tính, chuùng ta haõy xem xeùt ñeán CAD - phöông phaùp thieát keá vôùi söï trôï giuùp cuûa maùy tính
(Computer Aided Design) - ñaõ ñöôïc söû duïng raát roäng raõi trong vieäc thieát keá caùc toøa nhaø
cao taàng, thieát keá xe maùy, maùy bay, taøu vuõ truï, maùy tính, trong caùc saûn phaåm ngaønh deät vaø
nhieàu saûn phaåm cuûa caùc ngaønh ngheà khaùc.
Nhö vaäy thì ñoà hoïa maùy tính hoã trôï cho caùc quaù trình thieát keá ñoù nhö theá naøo? Trong
moät soá caùc öùng duïng veà thieát keá, tröôùc tieân ñoái töôïng ñöôïc hieån thò döôùi daïng caùc ñöôøng
bao cuûa moät wireframe cho pheùp chuùng ta thaáy ñöôïc hình daïng toång quaùt cuõng nhö caùc chi
tieát beân trong ñoái töôïng. Ngoaøi ra, caùch hieån thò baèng wireframe nhö theá naøy cuõng cho
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 4
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
pheùp ngöôøi thieát keá nhaän daïng ñöôïc nhanh choùng töông quan giöõa caùc chi tieát nhaèm coù
ñöôïc moät söï löïa choïn ñuùng ñaén cho hình daïng seõ thieát keá.
Vôùi söï giuùp ñôõ cuûa CAD, ngöôøi thieát keá seõ coù ñöôïc moät moâi tröôøng thieát keá nhieàu cöûa
soå vaø ñieàu naøy giuùp cho hoï coù theå nhìn thaáy caùc ñoái töôïng ñöôïc phoùng to moät caùch deã
daøng cuõng nhö coù theå thaáy ñöôïc vaät theå vôùi nhieàu goùc nhìn khaùc nhau.
Trong laõnh vöïc saûn xuaát phim hoaït hoïa, caùc öùng duïng CAD thöôøng xuyeân ñöôïc söû
duïng. Ñoái vôùi nhöõng hình aûnh ñoäng, chuùng seõ ñöôïc hieån thò leân maøn hình döôùi daïng caùc
wireframe vaø ñieàu naøy giuùp ích raát nhieàu cho quaù trình kieåm tra söï toái öu hoùa cuûa heä
thoáng. Caùc vaät theå khi ñöôïc hieån thò döôùi daïng beà maët nhö vaäy seõ laøm cho quaù trình tính
toaùn töøng chuyeån ñoäng cuûa vaät theå seõ nhanh hôn vaø ñieàu naøy giuùp cho ngöôøi thieát keá coù
theå taïo ra ñöôïc caùc chuyeån ñoäng nhòp nhaøng uyeån chuyeån hôn.
Ngaønh kieán truùc söû duïng phöông phaùp bieãu dieãn hình aûnh töông taùc ñeå coù theå thöïc
hieän vieäc thieát keá cuûa mình ví duï nhö khi muoán theå hieän caùc chi tieát treân neàn nhaø, caùc
kieán truùc sö seõ bieãu dieãn treân neàn thieát keá caùc chi tieát seõ ñöôïc hieån thò nhö laø vò trí caùc
phoøng, cöûa ra vaøo, cöûa soå, caàu thang, v..v.. Trong laõnh vöïc thieát keá ñieän, ngöôøi thieát keá
cuõng coù theå söû duïng phaàn meàm CAD ñeå hieån thò sô ñoà maïch ñieän, sô ñoà boá trí caùc thieát bò
ñieän, caùch ñi daây, v..v vaø v..v.. Noùi toùm laïi, trong thöïc teá, coù raát nhieàu heä thoáng vaø saûn
phaåm ñöôïc thieát keá ñeàu coù söï hoã trôï raát ñaéc löïc cuûa phaàn meàm CAD.
Nhöõng Kyõ Xaûo Maùy Tính
Phöông phaùp ñoà hoïa trong maùy tính cuõng ñöôïc söû duïng raát roäng raõi trong caùc öùng duïng myõ
thuaät vaø quaûng caùo thöông maïi. Caùc nhaø hoïa só thöôøng söû duïng caùc kyõ xaûo khaùc nhau cuûa
maùy tính hay nhö caû vieäc söû duïng caùc phaàn meàm chuyeân duïng nhö laø Lumena paintbrush
hoaëc caùc chöông trình khaùc nhö PixelPaint, SuperPaint, caùc chöông trình CAD, caùc chöông
trình bieãu dieãn caùc kyù hieäu toaùn hoïc (Mathemetica), caùc goùi chöông trình saûn xuaát phim
hoaït hình ñeå thieát keá hình daùng cuõng nhö chuyeån ñoäng cuûa ñoái töôïng.
Coøn trong laõnh vöïc myõ thuaät, nhieàu kyõ xaûo khaùc nhau cuûa maùy tính ñöôïc söû duïng ñeå
taïo ra caùc hình aûnh, ñaëc bieät laø caùc hình aûnh ba chieàu. Coøn trong laõnh vöïc quaûng caùo
thöông maïi, ñoà hoïa maùy tính ñöôïc söû duïng ñeå taïo caùc logo hay caùc hình aûnh quaûng caùo
khaùc, ñoà hoïa maùy tính coøn cho pheùp keát hôïp hieån thò hình aûnh vaø hieån thò chöõ phuïc vuï raát
toát cho caùc chöông trình quaûng caùo treân truyeàn hình.
Trong laõnh vöïc giaûi trí, caùc kyõ xaûo söû duïng ñoà hoïa trong maùy tính cuõng giuùp ích raát
nhieàu, ñaëc bieät höõu hieäu ñoái vôùi caùc ngaønh laøm phim. Coù raát nhieàu boä phim trong nhöõng
naêm gaàn ñaây ñeàu öùng duïng caùc kyõ xaûo trong ñoà hoïa maùy tính raát toát nhaèm laøm taêng theâm
tính haáp daãn cho caùc boä phim.”Coâng vieân kyû Jura”, “Thieát Moäc Lan”, “Vua Sö Töû” …laø
caùc boä phim minh chöùng raát roõ neùt cho lôïi ích cuûa ñoà hoïa trong maùy tính.
Giaùo Duïc Vaø Ñaøo Taïo
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 5
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
Trong nhöõng ngaønh nhö vaät lyù, sinh hoïc, taøi chaùnh, kinh teá thì ñoà hoïa maùy tính cuõng ñöôïc
söû duïng nhieàu nhaèm hoã trôï cho vieäc giaùo duïc. Caùc moâ hình trong heä thoáng vaät lyù, sinh
hoïc, moâ hình phaùt trieån daân soá, moâ hình caùc thieát bò maùy moùc laø nhöõng öùng duïng giuùp ích
raát nhieàu cho caùc hoïc sinh.
Chuùng ta coù theå ñöa ra ôû ñaây moät soá öùng duïng cuûa ñoà hoïa maùy tính trong vieäc giaùo
duïc ñaøo taïo nhö sau: Caùc heä thoáng ñaëc bieät nhö vieäc moâ phoûng caùc quaù trình thöïc teá hay
nhöõng hình aûnh bieãu dieãn caùc cô quan beân trong cuûa con ngöôøi roài ñeán caùc hình aûnh thu töø
veä tinh, döôùi bieån saâu, taát caû ñeàu coù theå öùng duïng ñoà hoïa trong maùy tính môùi coù theå hieån
thò nhöõng hình aûnh naøy leân maøn hình giuùp cho hoïc sinh coù moät caùi nhìn cuï theå vaø roõ raøng
hôn maø khoâng caàn phaûi coù nhöõng hình aûnh thöïc teá hay khoâng caàn phaûi ñaàu tö nhieàu ñeå
trang bò nhöõng thieát bò thaät.
Xöû Lyù AÛnh
Maëc duø caùc phöông phaùp ñöôïc söû duïng trong ñoà hoïa maùy tính vaø xöû lyù aûnh gaàn nhö laø
gioáng nhau nhöng caû hai laõnh vöïc naøy ñeàu coù nhöõng hoaït ñoäng khaùc nhau veà tính chaát.
Trong ñoà hoïa maùy tính, maùy tính chæ duøng ñeå taïo ra hình aûnh, coøn trong xöû lyù aûnh, ngöôïc
laïi thöôøng öùng duïng caùc kyõ thuaät khaùc nhau ñeå söûa ñoåi hay phaân tích moät taám hình cho
tröôùc. Hai öùng duïng caên baûn cuûa xöû lyù aûnh laø laøm taêng chaát löôïng hieäu quaû cuûa moät böùc
aûnh vaø taïo ra tri giaùc maùy ñoái vôùi nhöõng thoâng tin khaû kieán. Tuy nhieân, ñoà hoïa maùy tính
vaø xöû lyù aûnh thoâng thöôøng hay ñöôïc keát hôïp laïi trong cuøng moät öùng duïng, ví duï nhö trong
caùc öùng duïng cuûa y khoa, caùc kyõ thuaät cuûa ñoà hoïa maùy tính vaø xöû lyù aûnh thöôøng ñöôïc aùp
duïng ñoàng thôøi ñeå taïo neân nhöõng moâ hình nhaân taïo veà con ngöôøi nhaèm phuïc vuï cho vieäc
nghieân cöùu trong phaãu thuaät. Vaø ngaøy nay, hai laõnh vöïc ñoà hoïa maùy tính vaø xöû lyù aûnh
cuõng ñöôïc keát hôïp laïi ñeå hoã trôï cho vieäc thieát keá caùc heä phaãu thuaät vôùi söï trôï giuùp cuûa
maùy tính.
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 6
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
Chöông 2
CÔ SÔÛ TOAÙN HOÏC CUÛA CAÙC HEÄ TRUÏC TOÏA
ÑOÄ & NHÖÕNG PHÖÔNG THÖÙC HIEÄN THÖÏC
TRONG ÑOÀ HOÏA MAÙY TÍNH
Moät vaán ñeà voâ cuøng quan troïng trong neàn taûng lyù thuyeát cuûa ñoà hoïa trong maùy tính coù leõ
laø vaán ñeà heä truïc toïa ñoä. Bôûi moät leõ laø taát caû caùc vaán ñeà nhö ñònh vò, hieån thò, thöïc thi ñoà
hoïa ñeàu ñöôïc ñaët neàn taûng treân heä toïa ñoä ñònh tröôùc, cho neân tröôùc khi tieáp tuïc nghieân cöùu
caùc phaàn khaùc trong ñoà hoïa maùy tính, chuùng ta seõ baét ñaàu baèng vieäc nghieân cöùu cô sôû lyù
thuyeát cuûa heä truïc toïa ñoä, heä truïc toïa ñoä trong moäi tröôøng windows vaø caùc phöông thöùc
hieän thöïc chuùng trong ñoà hoïa maùy tính.
Ñaët Vaán Ñeà
Nhö chuùng ta ñaõ ñeà caäp trong chöông moät, baûn chaát cuûa ñoà hoïa maùy tính laø laøm theá naøo
ñeå coù theå moâ taû vaø thao taùc caùc ñoái töôïng cuûa theá giôùi thöïc baèng maùy tính. Ñeå thöïc hieän
ñöôïc ñieàu naøy, moät soá vaán ñeà caàn ñöôïc giaûi quyeát bao goàm:
- Caùc ñoái töôïng ñöôïc moâ taû trong toïa ñoä theá giôùi thöïc, trong khi ñoù heä toaï ñoä thieát bò
duøng ñeå hieån thò laïi duøng heä toïa ñoä nguyeân, ngoaøi ra caùch ñònh nghóa ñoái vôùi moãi
loaïi thieát bò khaùc nhau laø khaùc nhau. Vaäy caàn phaûi coù moät phöông phaùp chuyeån
ñoåi naøo ñoù ñeå coù theå chuyeån ñoåi deã daøng caùc moâ taû veà toïa ñoä cöïc giöõa caùc heä toïa
ñoä noùi treân.
- Do nhöõng giôùi haïn veà maët thieát bò neân ñeå coù theå hieån thò vaø thao taùc caùc ñoái töôïng
cuûa theá giôùi thöïc, caàn phaûi phaân tích caùc ñoái töôïng phöùc taïp thaønh caùc thaønh phaàn
ñôn giaûn hôn maø maùy tính coù theå hieån thò. Vaán ñeà ñaët ra ôû ñaây laø thaønh phaàn ñôn
giaûn ñöôïc ñònh nghóa nhö theá naøo ñeå töø ñoù coù theå xaây döïng laïi caùc ñoái töôïng phöùc
taïp ban ñaàu.
Trong chöông naøy, chuùng ta seõ laàn löôït tìm hieåu caùc phöông phaùp ñeå giaûi quyeát vaán ñeà
treân. Cuï theå laø tìm hieåu veà caùc heä toïa ñoä ñöôïc duøng ñeå moâ taû caùc ñoái töôïng vaø caùc caùch
chuyeån ñoåi giöõa chuùng; tìm hieåu veà caùc thaønh phaàn ñoà hoïa cô sôû; tìm hieåu veà nguyeân taéc
laøm vieäc cuûa caùc thieát bò duøng trong ñoà hoïa trong vieäc moâ taû vaø thao taùc caùc ñoái töôïng.
Vaán Ñeà Toïa Ñoä Ñeå Bieãu Dieãn Caùc Ñoái Töôïng
1. Heä toïa ñoä theá giôùi thöïc vaø heä toïa ñoä thieát bò
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 7
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
1.1 Heä toïa ñoä theá giôùi thöïc
Heä toïa ñoä theá giôùi thöïc (hay heä toïa ñoä thöïc) laø heä toïa ñoä ñöôïc duøng moâ taû caùc ñoái
töôïng cuûa theá giôùi thöïc. Moät trong caùc heä toïa ñoä thöïc thöôøng ñöôïc duøng nhaát ñoù laø
heä toïa ñoä Descartes. Vôùi heä toïa ñoä naøy, baát kyø moät ñieåm naøo trong maët phaúng
cuõng ñöôïc moâ taû baèng moät caëp toïa ñoä (x,y) trong ñoù x, y ∈ R; Goác toïa ñoä laø ñieåm
O coù toïa ñoä (0, 0). Caùc truïc toïa ñoä coù chieàu döông ñöôïc quy ñònh nhö hình veõ; Ox,
Oy laàn löôït ñöôïc goïi laø truïc hoaønh vaø truïc tung; x ñöôïc goïi laø hoaønh ñoä vaø y ñöôïc
goïi laø tung ñoä.
Caùc toïa ñoä theá giôùi thöïc cho pheùp ngöôøi duøng söû duïng baát kyø moät thöù nguyeân
(dimension) quy öôùc (foot, cm, mm, km, inch, …) naøo vaø coù theå lôùn nhoû tuøy yù.
P(x,y)
y
O
x
Hình 1.1. Heä toïa ñoä theá giôùi thöïc
1.2 Heä toïa ñoä thieát bò (device coordinates)
Heä toïa ñoä thieát bò laø heä toïa ñoä ñöôïc duøng bôûi moät thieát bò xuaát cuï theå naøo ñoù nhö
maùy in, maøn hình,… Ñaëc ñieåm chung cuûa heä toïa ñoä thieát bò ñoù laø:
Caùc ñieåm trong heä toïa ñoä thieát bò cuõng ñöôïc moâ taû bôûi moät caëp toïa ñoä (x,y), tuy
nhieân ñieåm khaùc vôùi heä toïa ñoä thöïc laø x,y ∈ N. Ñieàu naøy cho thaáy caùc ñieåm trong
heä toïa ñoä thöïc ñöôïc ñònh nghóa lieân tuïc, coøn caùc ñieåm trong heä toïa ñoä thieát bò laø
rôøi raïc do tính chaát cuûa taäp caùc soá töï nhieân.
y
O
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
x
Trang 8
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
Hình 1.2. Heä toïa ñoä thieát bò
Caùc toïa ñoä x, y cuûa heä toïa ñoä khoâng theå lôùn tuøy yù maø ñeàu bò giôùi haïn trong moät
khoaûng naøo ñoù. Moät soá thieát bò chæ cho x chaïy trong khoaûng [0, 640], y chaïy trong
khoaûng [0, 480]. Khoaûng giôùi haïn caùc toïa ñoä x, y laø khaùc nhau ñoái vôùi töøng loaïi
thieát bò khaùc nhau.
Chuùng ta cuõng neân löu yù, vôùi caùc heä toïa ñoä thieát bò hieän nay, ña soá ñeàu ñònh nghóa
goác toïa ñoä O laø goùc treân beân traùi cuûa maøn hình thieát bò. Tuy nhieân ñeå ñôn giaûn
trong caùc thao taùc tính toaùn, chuùng ta vaãn coi nhö heä toïa ñoä thieát bò ñöôïc ñònh
nghóa nhö hình 1.2
2. Heä toïa ñoä thieát bò ñöôïc chuaån (normalized device coordinates - NDC) - AÙnh
xaï vaøo toïa ñoä thieát bò.
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 xaây döïng moät heä toïa ñoä thieát bò ñöôïc chuaån (hay heä toïa ñoä ñöôïc chuaån) ñaïi
dieän chung cho taát caû 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ä chuaån, caùc toïa ñoä x, y seõ ñöôïc gaùn cho caùc gía trò trong khoaûng töø
[0, 1]. Nhö vaäy vuøng khoâng gian cuûa heä toïa ñoä ñöôïc 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 laø (1,1). Luùc naøy vieäc moâ taû caùc
ñoái töôïng thöïc ñöôïc thöïc hieän theo quaù trình sau:
- Chuyeån caùc toïa ñoä theá giôùi thöïc thaønh caùc toïa ñoä thieát bò ñaõ ñöôïc chuaån
hoùa.
- Chuyeån caùc toïa ñoä thieát bò ñöôïc chuaån hoùa thaønh caùc toïa ñoä thieát bò töông
öùng vôùi töøng thieát bò cuï theå.
Ñieàu naøy giuùp cho heä thoáng trôû neân linh hoaït hôn, coù khaû naêng thích nghi vôùi caùc
thieát bò xuaát khaùc nhau.
Maøn hình
AÛnh ñònh nghóa
theo caùc toïa ñoä
cuûa theá giôùi thöïc
Theo caùc toïa
ñoä chuaån hoùa
Toïa ñoä thieát bò
Maùy in
Caùc thieát bò
khaùc
y
Sinh vieân thöïc hieän:
1
ymax
x
Bieän Coâng Minh
0 - Nguyeãn Xuaân 1Sôn
0
x
max
Trang
9
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
Hình 1.3 - Caùc pheùp bieán ñoåi toïa ñoä
y
Maøn hình
thieát bò
1
(x2, y2)
y1
(x1, y1)
x1
1
x
Hình 1.4 - Caùch söû duïng heä toïa ñoä ñöôïc chuaån
3. Söï chuyeån ñoåi giöõa caùc heä toïa ñoä
3.1. Chuyeån ñoåi töø heä toïa ñoä thöïc sang heä toïa ñoä ñöôïc chuaån
Vieäc chuyeån ñoåi töø heä toïa ñoä thöïc sang heä toïa ñoä ñöôïc chuaån töông ñoái ñôn giaûn.
Ta chæ caàn xaùc ñònh hình vuoâng khoâng gian lôùn nhaát trong heä toïa ñoä thöïc maø ngöôøi
duøng duøng ñeå ñònh nghóa caùc ñoái töôïng, goïi caïnh cuûa hình vuoâng ñoù laø c(c>0). Luùc
naøy moät ñieåm P(x, y) thuoäc theá giôùi thöïc seõ ñöôïc aùnh xaï thaønh ñieåm Po(xo, yo)
trong heä toïa ñoä ñöôïc chuaån hoùa nhö sau:
xo = x/c
yo = y/c
Deã daøng kieåm chöùng ñöôïc xo, yo thay ñoåi trong khoaûng [0, 1]
3.2. Chuyeån ñoåi töø heä toïa ñoä ñöôïc chuaån sang heä toïa ñoä thieát bò
Thoâng thöôøng ta seõ aùnh xaï tröïc tieáp caùc ñieåm töø hình vuoâng ñôn vò cuûa NDC sang
hình vuoâng lôùn nhaát DS (device square) cuûa "maøn hình" thieát bò. Ñieàu naøy coù nghóa
laø vôùi moãi ñieåm Po(xo, yo) trong NDC chuùng ta seõ aùnh xaï noù thaønh ñieåm P1(x1, y1)
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 10
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
töông öùng trong hình vuoâng DS (ta coi DS naèm giöõa maøn hình thieát bò trong caùc tính
toaùn sau naøy).
Hình vuoâng lôùn
NDC
1
yo
y1
Po
xo
1
P1
x1
Heä toïa ñoä thieát bò
Hình 1.5. - Söï aùnh xaï töø NDC sang moät thieát bò cuï theå
Caùch aùnh xaï töø NDC sang DS phaûi laø aùnh xaï tuyeán tính ñeå ñaûm baûo tính caân xöùng.
Ta coù coâng thöùc chuyeån ñoåi (1.1):
x1 = Axo + B
y1 = Cyo + D
(1.1)
trong ñoù A, B, C, D laø caùc haèng soá ñöôïc xaùc ñònh nhö sau:
A = ymax
B = (xmax - ymax) / 2
C = ymax
D = 0
trong tröôøng hôïp xmax >= ymax vaø vôùi (0, 0), (xmax , ymax ) laàn löôït laø caùc toïa ñoä goùc
treân beân traùi vaø goùc döôùi beân phaûi cuûa maøn hình thieát bò.
Haàu heát caùc khoâng gian hieån thò cuûa caùc thieát bò coù daïng hình chöõ nhaät chöù khoâng
phaûi laø hình vuoâng, do ñoù vieäc aùnh xaï nhö treân seõ gaây laõng phí khi khoâng söû duïng
heát khoâng gian naøy vaø gaây khoù chòu cho ngöôøi söû duïng.
Trong moät hình chöõ nhaät, ta ñònh nghóa R laø tæ soá cuûa chieàu cao vaø chieàu roäng cuûa
noù:
R = height/width
Luùc ñoù, ñeå coù theå veõ ñöôïc baát kyø ñieåm naøo treân toaøn boä khoâng gian hieån thò cuûa
thieát bò, ta seõ thay ñoåi coâng thöùc aùnh xaï theo R nhö sau (giaû söû R < 1):
Thu nhoû khoâng gian NDC töø hình vuoâng thaønh hình chöõ nhaät RNDC sao cho noù
coù cuøng tæ soá phöông vôùi hình chöõ nhaät cuûa maøn hình thieát bò RDev. Deã thaáy raèng
vôùi gæa thieát R < 1, hình chöõ nhaät RNDC lôùn nhaát seõ thoûa maõn tính chaát treân laø seõ coù
chieàu x thay ñoåi töø 0 ñeán 1 vaø chieàu y thay ñoåi töø 0 ñeán R.
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 11
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
Luùc naøy:
Vôùi xo = 0, ta coù x1 = 0 vaø
x0 = 1, ta coù x1 = xmax
Töông töï
Vôùi yo = 0, ta coù y1 = 0 vaø
y0 = R, ta coù y1 = ymax
Do ñoù coâng thöùc aùnh xaï luùc naøy seõ laø (1.2):
x1 = xmax xo (A = xmax , B = 0)
y1 = xmax yo (C = xmax , D = 0)
Vôùi R = ymax / xmax
Heä soá R
NDC
1
R
1
RNDC
RDev
Hình 1.6. - Quùa trình môû roäng vuøng veõ treân maøn hình
Cöûa Soå Vaø Mieàn Xuaát
Cöûa soå (Windows) ñöôïc ñònh nghóa nhö laø moät vuøng khoâng gian hình chöõ nhaät trong ñoù
caùc phaàn töû hình hoïc seõ ñöôïc veõ ra. Nhö vaäy nhöõng hình aûnh ñöôïc theå hieän leân thieát bò seõ
ñöôïc goùi goïn trong vuøng cöûa soå naøy.
Mieàn xuaát (Viewport) ñöôïc ñònh nghóa nhö laø moät vuøng khoâng gian hình chöõ nhaät trong heä
toïa ñoä NDC theå hieän nhöõng thaønh phaàn seõ ñöôïc veõ. Mieàn xuaát seõ phaûi thuoäc vuøng heä toïa
ñoä NDC aùnh xaï leân toïa ñoä thieát bò. Nhöõng phaàn töû hình hoïc cuûa windows seõ töông xöùng
vaøo mieàn xuaát.
Nhö vaäy vieäc theå hieän hình veõ leân thieát bò thöïc chaát laø vieäc theå hieän hình veõ leân mieàn xuaát
ñaõ ñöôïc thieát laäp cuûa thieát bò ñoù.
Hieän Thöïc Vaán Ñeà Trong Moâi Tröôøng Windows
Moâi tröôøng Windows cho pheùp chuùng ta quaûn lyù ñoäc laäp caùc thieát bò. Ñaây laø moät trong
nhöõng tính naêng raát quan troïng cuûa Windows bôûi leõ chuùng ta coù theå xaây döïng öùng duïng
treân neàn caùc thieát bò thoâng qua tính naêng naøy maø khoâng caàn quan taâm ñeán vieäc theå hieän
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 12
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
öùng duïng treân heä toïa ñoä rieâng cuûa töøng thieát bò. Maët khaùc, laäp trình vieân cuõng khoâng caàn
quan taâm ñeán heä thoáng khi coù söï thay ñoåi hay di chuyeån thieát bò coù theå laøm sai leäch hieäu
quûa cuûa chöông trình nhö trong moâi tröôøng DOS.
Khoâng gian toïa ñoä logic
Khoâng gian toïa ñoä logic laø vuøng khoâng gian maø moâi tröôøng windows thieát laäp ñeå ngöôøi
laäp trình thao taùc, xöû lyù treân ñoù.
Windows cung caáp cho chuùng ta haøm aùnh xaï cheá ñoä toïa ñoä logic vaøo toïa ñoä thieát bò
(SetMapMode(int nMapMode)).
Vì ñôn vò khi xuaát vaên baûn vaø ñoà hoïa trong windows laø ñôn vò logic neân khi xuaát thoâng tin
ra thieát bò cuï theå ñôn vò logic ñöôïc chuyeån thaønh ñôn vò vaät lyù (pixel). Quaù trình chuyeån töø
ñôn vò logic ra ñôn vò vaät lyù ñöôïc xaùc ñònh baèng cheá ñoä hieån thò (mapping mode). Maëc
nhieân, moät ñôn vò logic seõ baèng moät pixel, nhöng khi thay ñoåi cheá ñoä hieån thò ta coù theå
thay ñoåi caû quan heä giöõa ñôn vò logic vaø ñôn vò vaät lyù.
Ngoaøi vieäc thay ñoåi cheá ñoä bieán ñoåi ñôn vò do toïa ñoä, coù theå caû vieäc xaùc laäp tham soá khaùc
cuõng laøm aûnh höôûng ñeán quaù trình hieån thò thoâng tin: thöù nhaát coù theå laø do chieàu roäng vaø
chieàu cao cuûa cöûa soå theo ñôn vò logic hieän thôøi; thöù hai laø chuùng ta coù theå cho kích thöôùc
cuûa mieàn xuaát.
Mapping Mode (Cheá Ñoä Hieån Thò)
Mapping Mode ñònh nghóa moät quan heä giöõa moät ñôn vò trong khoâng gian toïa ñoä logic vaøo
töøng pixel cuûa thieát bò. Windows cung caáp taùm mapping mode ñöôïc söû duïng trong caùc öùng
duïng cuûa Windows nhö sau:
Mapping Mode
MM_ANISOTROPIC
MM_HIENGLISH
MM_HIMETRIC
MM_ISOTROPIC
MM_LOENGLISH
MM_LOMETRIC
MM_TEXT
MM_TWIPS
YÙ Nghóa
AÙnh xaï moät ñôn vò logic vaøo moät ñôn vò vaät lyù tuøy yù. Tyû leä khaùc
nhau theo truïc x vaø y
AÙnh xaï moät ñôn vò logic baèng 1/1000 inch. Truïc y höôùng leân
AÙnh xaï moät ñôn vò logic baèng 1/100 mm. Truïc y höôùng leân
AÙnh xaï moät ñôn vò logic vaøo moät ñôn vò vaät lyù. Moät ñôn vò theo
truïc x luoân luoân baèng moät ñôn vò theo truïc y
AÙnh xaï moät ñôn vò logic baèng 1/100 inch. Truïc y höôùng leân
AÙnh xaï moät ñôn vò logic baèng 1/10 mm. Truïc y höôùng leân
AÙnh xaï moät ñôn vò logic vaøo moät pixel. Truïc y höôùng xuoáng
AÙnh xaï moät ñôn vò logic vaøo 1/1440 inch (1/20 point; vôùi 1 point
= 1/72 inch). Truïc y höôùng leân
Trong ñoù Windows cung caáp 6 mapping mode baét buoäc (ngoaïi tröø MM_ANISOTROPIC
vaø MM_ISOTROPIC). Nhöõng mapping mode naøy laø baét buoäc bôûi vì tyû leä chia laø coá ñònh,
do öùng duïng khoâng theå thay ñoåi soá ñôn vò logic aùnh xaï vaøo moãi ñôn vò thieát bò.
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 13
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
Cöûa Soå (Windows)
Cöûa soå laø vuøng ngöôøi laäp trình laøm vieäc vôùi caùc hình aûnh ñoà hoïa hay vaên baûn.
Trong cheá ñoä hieån thò khoâng baét buoäc (MM_ANISOTROPIC) vaø MM_ISOTROPIC)
windows cho pheùp chuùng ta aán ñònh kích thöôùc cöûa soå theo ñôn vò logic. Khi aán ñònh moät
trong soá cheá ñoä naøy ta caàn phaûi xaùc ñònh kích thöôùc cöûa soå baèng haøm (bôûi vì caùc cheá ñoä
naøy chæ ñöôïc söû duïng vôùi chöông trình maø ñôn vò logic ñöôïc ñònh nghóa bôûi ngöôøi söû duïng,
coøn kích thöôùc vaät lyù cuûa cöûa soå vaãn chöa ñöôïc xaùc ñònh cho ñeán thôøi ñieåm chuùng ta aán
ñònh chuùng moät caùch roõ raøng).
Haøm xaùc ñònh kích thöôùc cöûa soå trong cheá ñoä hieån thò MM_ANISOTROPIC vaø
MM_ISOTROPIC laø SetWindowExt(). Haøm SetWindowExt() ñònh nghóa caùch chuyeån ñoåi
töø toïa ñoä logic sang toïa ñoä thieát bò.
Thöïc chaát khi thay ñoåi kích thöôùc logic cuûa cöûa soå, ta khoâng thay ñoåi kích thöôùc vaät lyù cuûa
noù treân maøn hình maø ta chæ xaùc ñònh kích thöôùc cöûa soå theo ñôn vò logic do ta thieát laäp (hay
xaùc ñònh quan heä giöõa caùc ñôn vò logic do cöûa soå söû duïng vaø ñôn vò vaät lyù (pixel) do thieát
bò söû duïng).
Mieàn Xuaát (Viewport)
Mieàn xuaát laø mieàn chöông trình xuaát thoâng tin ra thieát bò. Ta coù theå thieát laäp kích thöôùc
baát kyø cho mieàn xuaát.
Ñoái vôùi cheá ñoä hieån thò MM_TEXT thì maëc nhieân kích thöôùc mieàn xuaát luoân luoân baèng
kích thöôùc cöûa soå.
Ñoái vôùi cheá ñoä hieån thò MM_ANISOTROPIC vaø MM_ISOTROPIC ta chæ ñònh kích thöôùc
mieàn xuaát baèng haøm SetViewportExt(hdc, nXExtent, nYExtent).
Kích thöôùc x vaø y cuûa mieàn xuaát ñònh nghóa caùch co giaõn ñôn vò heä toïa ñoä logic sao cho
phuø hôïp vôùi ñôn vò heä toïa ñoä vaät lyù. Maëc khaùc tham soá naøy cuõng ñònh nghóa chieàu cuûa hai
heä toïa ñoä.
Ví duï: Giaû söû x cuûa cöûa soå laø 4, x cuûa mieàn xuaát laø 8 thì windows seõ chuyeån ñoåi 4 ñôn vò
logic vaøo 8 ñôn vò vaät lyù vaø chieàu döông truïc hoaønh cuûa heä truïc toïa ñoä thieát bò seõ laø chieàu
döông truïc hoaønh cuûa heä toïa ñoä logic; neáu y cuûa cöûa soå laø 2 vaø y cuûa mieàn xuaát laø -8 thì 2
ñôn vò logic chuyeån ñoåi thaønh 8 ñôn vò vaät lyù vaø chieàu döông truïc tung cuûa heä toïa ñoä thieát
bò seõ laø chieàu aâm truïc tung cuûa heä truïc toïa ñoä logic.
Goác Toïa Ñoä
Goác toïa ñoä cuûa cöûa soå: laø goác toïa ñoä cuûa heä toïa ñoä logic
Ta coù theå thay ñoåi goác toïa ñoä cuûa cöûa soå baèng caùch söû duïng haøm SetWindowOrg(). Baèng
caùch thay ñoåi goác toïa ñoä, öùng duïng coù theå thay ñoåi caùch chuyeån töø heä toïa ñoä logic vaøo heä
toïa ñoä thieát bò. Ví duï nhö ñeå dòch moät ñieåm veà phiaù phaûi, ta coù theå cho hoaønh ñoä goác
windows moät giaù trò aâm vaø töông töï ñeå dòch moät ñieåm leân treân ta coù theå cho tung ñoä cuûa
goác cöûa soå moät giaù trò aâm.
Goác toïa ñoä cuûa mieàn xuaát laø goác toïa ñoä cuûa heä toïa ñoä thieát bò. Maëc nhieân, goác toïa ñoä cuûa
mieàn xuaát laø ñieåm (0,0) cuûa cöûa soå.
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 14
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
Ta coù theå di chuyeån goác toïa ñoä cuûa mieàn xuaát nhôø haøm SetViewportOrg().
Töông töï nhö thay ñoåi goác cöûa soå, thay ñoåi goác mieàn xuaát cuõng laøm thay ñoåi caùch chuyeån
ñoåi töø toïa ñoä logic vaøo toïa ñoä thieát bò.
Taát caû caùc ñieåm trong heä toïa ñoä logic ñöôïc chuyeån ñoåi vaøo heä toïa ñoä vaät lyù töông öùng vôùi
phöông thöùc chuyeån ñoåi goác.
Caùc Thaønh Phaàn Cô Sôû Cuûa Ñoà Hoïa
Caùc hình aûnh phöùc taïp hieån thò treân maùy tính bao giôø cuõng ñöôïc taïo töø caùc ñoái töôïng ñoà
hoïa cô sôû goïi laø caùc thaønh phaàn ñoà hoïa nguyeân thuûy (output graphics primitives). Goïi laø cô
sôû bôûi vì chuùng coù theå ñöôïc hoã trôï tröïc tieáp töø phaàn cöùng cuûa thieát bò hay beân trong caùc heä
ñoà hoïa cô sôû duøng ñeå phaùt trieån caùc öùng duïng ñoà hoïa (nhö GRAPH.TPU cuûa TURBO
PASCAL). Moãi ñoái töôïng ñeàu bao goàm moät soá thuoäc tính ñeå quy ñònh tính chaát hieån thò
cuûa chuùng. Ví duï ñoái vôùi ñoái töôïng laø ñöôøng thaúng ta coù caùc thuoäc tính: maøu ñeå veõ (color),
beà roäng (width), kieåu cuûa ñöôøng thaúng (line style) laø dashed, dotted, hay solid. Sau ñaây laø
caùc ñoái töôïng ñoà hoïa cô sôû cuøng caùc thuoäc tính (attributes) cuûa chuùng:
1. Ñieåm (Point), ñoaïn thaúng (Line), ñöôøng gaáp khuùc (Poly Line)
Ñieåm (point) laø thaønh phaàn cô sôû ñöôïc ñònh nghóa trong moïi heä toïa ñoä. Ñoái vôùi heä toïa
ñoä hai chieàu, moãi ñieåm ñöôïc xaùc ñònh bôûi caëp toïa ñoä (x,y).
Hai ñieåm seõ quyeát ñònh moät ñöôøng thaúng (line). Ta coù theå moâ taû caùc ñöôøng thaúng baèng
caùc phöông trình ñöôøng thaúng. Ñöôøng thaúng ñi qua hai ñieåm S(x1, y1) vaø E(x2, y2) coù
phöông trình ñöôøng thaúng laø
(x-x1)(y2-y1) = (y-y1)(x2-x1)
hay
(y2-y1)x - (x2-x1)y + x2y1 - x1y2 = 0
Nhöng thöïc teá maùy tính khoâng theå hieån thò toaøn boä moät ñöôøng thaúng maø chæ coù theå
hieån thò moät ñoaïn thaúng (line segment) naèm giöõa ñieåm S(x1, y1) vaø E(x2, y2) maø thoâi.
Hôn nöõa, khi hieån thò moät ñoaïn thaúng SE, do caùc thieát bò hieån thò thöïc chaát ñeàu laø moät
löôùi nguyeân neân caùc ñieåm treân SE ñeàu phaûi ñöôïc nguyeân hoùa. Coù nhieàu thuaät toaùn
khaùc nhau ñeå xaáp xæ caùc ñieåm veà toïa ñoä nguyeân nhöng trong ñoà hoïa hieän nay ngöôøi ta
thöôøng söû duïng thuaät toaùn Beresenham. Ñeå ñôn giaûn ta thöôøng goïi ñoaïn thaúng laø line.
Ñöôøng gaáp khuùc (Polyline) laø taäp caùc ñoaïn thaúng noái vôùi nhau moät caùch tuaàn töï. Caùc
ñoaïn thaúng naøy khoâng nhaát thieát phaûi taïo thaønh moät hình kheùp kín vaø caùc ñoaïn coù theå
caét laãn nhau. Ñieåm giao giöõa hai ñoaïn thaúng goïi laø ñænh (vertex). Caùc ñöôøng gaáp khuùc
ñöôïc xaùc ñònh qua danh saùch caùc ñænh, moãi ñænh ñöôïc cho bôûi moät caëp toïa ñoä
(x1, y1)(x2, y2)…(xn, yn)
Veà thöïc chaát, polyline khoâng phaûi laø moät ñoái töôïng cô sôû vì noù coù theå bieãu dieãn qua
taäp caùc ñoái töôïng cô sôû laø line nhöng ngöôøi ta vaãn xeáp noù vaøo dieän caùc ñoái töôïng cô
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 15
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
sôû vì noù laø moät trong nhöõng ñoái töôïng raát hay ñöôïc söû duïng trong ñoà hoïa vaø haàu heát
caùc GKS ñeàu hoã trôï cho ñoái töôïng naøy.
Moät ña giaùc (polygon) laø moät ñöôøng gaáp khuùc coù ñieåm ñaàu vaø ñieåm cuoái truøng nhau.
Caùc thuoäc tính cuûa polygon bao goàm: color - xaùc ñònh maøu ñeå veõ caùc ñoaïn thaúng; line
width - xaùc ñònh ñoä roäng cuûa neùt veõ; line type - xaùc ñònh kieåu cuûa ñöôøng thaúng ñang
veõ, coù theå laø solid, dashed, dotted, dot-dashed. Haàu heát caùc coâng cuï ñoà hoïa ñeàu ñònh
nghóa taäp caùc kieåu ñöôøng thaúng coù theå duøng vaø cho pheùp ngöôøi duøng ñònh nghóa kieåu
ñöôøng thaúng cuûa hoï thoâng qua moät maãu (pattern) goàm caùc soá 0, 1.
Ñoái vôùi polyline, caùc ñoaïn thaúng trong cuøng moät polyline thì coù cuøng moät thuoäc tính.
2. Vuøng toâ (Fill Area)
Xaùc ñònh vuøng toâ vôùi moät maøu hay moät maãu toâ naøo ñoù. Vuøng toâ ñöôïc xaùc ñònh baèng ña
giaùc (polygon): (x1, y1)(x2, y2)…(xn, yn). Caùc thuoäc tính: color - maøu toâ; pattern - maãu toâ.
Noù coù theå laø toâ thuaàn (solid) hay toâ theo caùc maãu nhö dash, dotted, dash-dotted,…
3. Vaên baûn (Text)
Text laø taäp caùc kyù töï giuùp hieån thò noäi dung caùc thoâng ñieäp theo moät ngoân ngöõ naøo ñoù.
Caùc thuoäc tính: color - xaùc ñònh maøu cuûa caùc kyù töï; font - xaùc ñònh boä kyù töï duøng ñeå
hieån thò, noù ñònh nghóa kieåu, kích thöôùc cuûa kyù töï hieån thò. Hình daïng cuûa moãi kyù töï coù
theå ñöôïc xaùc ñònh bôûi moät taäp caùc polyline (tröôøng hôïp font vector) hay laø moät pixel
pattern (font bitmap). Coù raát nhieàu loaïi font khaùc nhau nhö font bitmap, font truetype,
font CHR,…; character size - xaùc ñònh chieàu cao (height) vaø chieàu roäng (width) cuûa kyù
töï. Caùc kyù töï ñònh nghóa baèng polyline coù theå deã daøng thay ñoåi kích thöôùc hôn laø caùc
kyù töï ñöôïc ñònh nghóa baèng pixel pattern; character spacing - xaùc ñònh khoaûng caùch
giöõa caùc kyù töï; text justification - xaùc ñònh söï canh chænh cuûa vaên baûn theå hieän. Noù coù
theå laø canh traùi (left text), canh phaûi (right text), canh giöõa (center text), canh ñeàu nhau
(justify text); text path - xaùc ñònh caùch hieån thò tuaàn töï cuûa caùc kyù töï. Noù coù theå laø phaûi
sang traùi, töø treân xuoáng döôùi, töø traùi sang phaûi, töø döôùi leân treân.. Ngoaøi ra text coøn coù
moät thuoäc tính nöõa, ñoù laø phöông ñöôøng thaúng maø doøng text hieån thò treân ñoù.
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 16
Luaän AÙn Toát Nghieäp
Chöông 3
Phaàn thuyeát minh
CÔ SÔÛ TOAÙN HOÏC CUÛA CAÙC ÑOÁI
TÖÔÏNG ÑOÀ HOÏA & VIEÄC HIEÄN THÖÏC
TRONG MOÂI TRÖÔØNG WINDOWS
Nhö chuùng ta ñaõ bieát, hình aûnh coù theå ñöôïc moâ taû baèng nhieàu caùch khaùc nhau. Giaû söû
chuùng ta coù moät maøn hình rôøi raïc, luùc ñoù hình aûnh hoaøn toaøn coù theå ñöôïc bieãu dieãn baèng
moät taäp caùc ñieåm saùng treân maøn hình naøy. ÔÛ moät goùc ñoä khaùc, chuùng ta coù theå moâ taû hình
aûnh baèng moät taäp hôïp caùc ñoái töôïng phöùc hôïp ví duï nhö laø caây coái, ñòa hình hay nhö laø caùc
vaät duïng trong nhaø, caùc böùc töôøng thì hình aûnh coù theå ñöôïc theå hieän baèng caùch xaùc ñònh vò
trí töông öùng treân heä truïc toïa ñoä cuûa caùc vaät theå. Hình daùng vaø maøu saéc cuûa moät vaät theå coù
theå ñöôïc moâ taû baèng chuoãi caùc pixel hoaëc taäp hôïp caùc caáu truùc hình hoïc cô baûn ví duï nhö
laø ñoaïn thaúng vaø caùc ña giaùc.Vaø hình aûnh sau ñoù ñöôïc hieån thò baèng caùch hoaëc chuyeån taûi
caùc chuoãi pixel vaøo vuøng ñeäm khung daây hay baèng vieäc chuyeån ñoåi caùc ñaëc tính cuûa caùc
caáu truùc hình hoïc cô baûn thaønh caùc maãu pixel töông öùng. Ñaëc bieät, caùc goùi phaàn meàm
chuyeân duïng cho ñoà hoïa ngaøy nay coøn cung caáp cho chuùng ta caùc chöùc naêng moâ taû hình
aûnh baèng caùc caáu truùc hình hoïc cô baûn vaø xem nhö ñoù laø caáu truùc cô sôû vaø ñoâi khi laïi taäp
hôïp caùc caáu truùc cô sôû naøy laïi thaønh caùc caáu truùc khaùc phöùc taïp hôn. ÖÙng vôùi moãi ñoái
töôïng cô sôû nhö treân, chuùng ta seõ coù moät döõ lieäu ñaàu vaøo töông öùng vaø nhöõng thoâng tin
lieân quan khaùc chæ roõ caùch hieån thò caùc ñoái töôïng naøy. Ñieåm vaø ñoaïn thaúng chính laø thaønh
phaàn ñôn giaûn nhaát cuûa hình aûnh. Beân caïnh ñoù, caùc ñoái töôïng cô sôû ñeå kieán taïo neân hình
aûnh noùi treân coøn bao goàm luoân caû caùc ñöôøng troøn vaø ñoâi khi coøn laø caùc hình noùn, caùc maët
phaúng baäc hai, caùc hình truï, maët truï, caùc ña giaùc vaø keå caû caùc chuoãi kyù töï. Chuùng ta coù theå
baét ñaàu nghieân cöùu nhöõng thuû tuïc taïo hình baèng vieäc nghieân cöùu nhöõng thuaät toaùn taïo hình
aûnh hai chieàu vaø ñaëc bieät seõ taäp trung vaøo phöông phaùp taïo hình baèng vieäc chuyeån ñoåi tia
queùt trong nhöõng heä thoáng coù maøn hình hieån thò rôøi raïc.
Ñieåm Vaø Ñöôøng Thaúng
Trong maùy tính, ñieåm thöôøng ñöôïc hình thaønh baèng caùch chuyeån ñoåi caùc toïa ñoä töông öùng
cuûa chuùng - ñöôïc cung caáp bôûi caùc chöông trình öùng duïng – vaøo moät thao taùc thích hôïp
cuûa thieát bò xuaát trong traïng thaùi hoaït ñoäng. Ví duï nhö öùng vôùi maøn hình CRT, chuøm tia
ñieän töû seõ ñaäp vaøo maøn phosphor laøm phaùt saùng caùc ñieåm töông öùng. Vieäc caùc chuøm tia
ñieän töû seõ laøm phaùt saùng caùc ñieåm treân maøn hình nhö theá naøo coøn tuøy thuoäc vaøo caùc kyõ
thuaät hieån thò. Trong caùc heä queùt ngaãu nhieân, ñieåm seõ ñöôïc löu tröõ trong danh saùch hieån
thò vaø caùc giaù trò toïa ñoä seõ ñöôïc chuyeån ñoåi thaønh caùc sai leäch ñieän aùp taïi nhöõng ñieåm maø
chuøm tia ñieän töû treân maøn hình seõ queùt ngang trong moät chu kyø. Ngöôïc laïi, ñoái vôùi caùc heä
rôøi raïc ñen traéng, moät ñieåm seõ ñöôïc hình thaønh baèng caùch caøi ñaët giaù trò 1 cho vò trí töông
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 17
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
öùng cuûa maøn hình trong vuøng ñeäm khung. Sau ñoù, chuøm tia ñieän töû seõ queùt theo chieàu
ngang vaø phaùt ra caùc electron va ñaäp laøm phaùt saùng baát kyø vò trí treân maøn hình maø giaù trò
töông öùng trong vuøng ñeäm khung laø 1. Trong heä RGB, vuøng ñeäm khung seõ ñöôïc chuyeån
taûi ñoàng thôøi vôùi maõ maøu nhaèm coù theå hieån thò caùc vò trí ñuùng vôùi caùc maøu töông öùng cuûa
noù.
Ñoái vôùi ñöôøng thaúng, trong maùy tính, ñöôøng thaúng seõ ñöôïc veõ neân thoâng qua vò trí caùc
ñieåm trung gian chaïy doïc theo suoát chieàu daøi con ñöôøng noái hai ñieåm ñaàu cuoái. Thieát bò
xuaát sau ñoù seõ toâ maøu nhöõng ñieåm naøy vaø hình thaønh neân ñöôøng thaúng. Noùi moät caùch khaùc
ñöôøng thaúng seõ ñöôïc hình thaønh bôûi moät taäp hôïp caùc ñieåm lieân tuïc nhau noái hai ñaàu cuûa
ñöôøng thaúng ñoù. Trong nhöõng thieát bò tuaàn töï, ví duï nhö caùc thieát bò queùt ngaãu nhieân hay
caùc buùt veõ theo kieåu vector, ñöôøng thaúng ñöôïc veõ ra moät caùch lieân tuïc hôn töø ñieåm ñaàu
cho ñeán ñieåm cuoái nhôø söï sai leäch ñieän aùp bieán thieân theo chieàu doïc vaø chieàu ngang laøm
cho söï thay ñoåi caùc giaù trò theo truïc x vaø truïc y laø nhöõng söï thay ñoåi tuyeán tính.
Trong caùc thieát bò hieån thò söû duïng kyõ thuaät soá thì ñoaïn thaúng ñöôïc veõ baèng caùc ñieåm
rôûi raïc noái lieàn hai ñieåm ñaàu vaø cuoái. Vò trí caùc ñieåm rôøi raïc naøy thoâng thöôøng ñöôïc tính
toaùn thoâng qua phöông trình bieãu dieãn ñöôøng thaúng töông öùng. Ñoái vôùi maøn hình hieån thò
rôøi raïc thì maøu saéc cuûa ñöôøng thaúng seõ ñöôïc taûi vaøo vuøng ñeäm khung taïi caùc vò trí öùng vôùi
töøng pixel hình thaønh neân ñöôøng thaúng ñoù. Caùc thieát bò ñieàu khieån video seõ ñoïc caùc döõ
lieäu töø vuøng ñeäm khung naøy vaø seõ veõ neân caùc ñieåm saùng treân maøn hình. Vò trí töông öùng
cuûa caùc ñieåm saùng naøy seõ ñöôïc tham chieáu baèng caùc giaù trò soá töï nhieân vaø nhö theá caùc vò
trí naøy chæ ñöôïc tính toaùn moät caùch töông ñoái vaø thuoäc ñöôøng thaúng noái lieàn hai ñieåm ñaàu
vaø cuoái. Ví duï nhö ñeå tính toaùn cho vò trí (10.48, 20.59) thì heä thoáng seõ laøm troøn caùc giaù trò
noùi treân vaø tính toaùn cho vò trí (10, 21). Vieäc laøm troøn caùc giaù trò toïa ñoä cuûa töøng ñieåm nhö
theá seõ laøm cho ñöôøng thaúng taïo ra khoâng ñöôïc lieân tuïc maø coù hình daùng baäc thang, ñieàu
naøy seõ ñöôïc nhaän thaáy raát roõ trong caùc thieát bò hieån thò rôøi raïc coù ñoä phaân giaûi thaáp vaø
chuùng ta coù theå khaéc phuïc baèng caùch naâng cao ñoä phaân giaûi cuûa caùc thieát bò hieån thò naøy.
ÔÛ moät möùc ñoä khaùc, chuùng ta cuõng coù theå taïo neân caùc ñöôøng thaúng lieân tuïc hôn baèng caùch
ñieàu chænh ñoä saùng böùc xaï cuûa caùc ñieåm saùng.
Ñoái vôùi caùc giaûi thuaät hieån thò hình aûnh trong heä thoáng hieån thò rôøi raïc ôû caáp thieát bò,
vò trí cuûa caùc ñoái töôïng seõ ñöôïc chæ ra tröïc tieáp baèng caùc toïa ñoä nguyeân vaø nhö theá chuùng
ta seõ giaû thieát raèng vieäc tham chieáu ñeán caùc vò trí cuûa pixel laø phuï thuoäc vaø soá haøng vaø soá
coät cuûa heä thoáng queùt.
Ñeå coù theå chuyeån taûi maøu saéc vaøo vuøng ñeäm khung taïi vò trí töông öùng vôùi coät x vaø
haøng y, chuùng ta coù theå söû duïng thuû tuïc
SetPixel(x, y)
AÛnh höôûng baäc thang khi ñöôøng thaúng ñöôïc taïo baèng chuoãi caùc ñieåm
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 18
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
Ñoâi khi, chuùng ta cuõng muoán tham khaûo ñeán cöôøng ñoä saùng cuûa moät ñieåm cho tröôùc
naèm trong vuøng ñeäm khung, thuû tuïc coù theå söû duïng luùc ñoù laø
getPixel(x, y)
Giaûi Thuaät Veõ Ñöôøng Thaúng
Phöông trình ñöôøng thaúng cô baûn laø
y = m.x + b
(1)
trong ñoù m laø heä soá goùc cuûa ñöôøng thaúng vaø b laø ñoä dôøi theo truïc y.
Giaû söû nhö (x1, y1) vaø (x2, y2) laø hai ñieåm thuoäc
ñöôøng thaúng, luùc ñoù m vaø b seõ ñöôïc tính nhö sau:
y2
y2 - y1
m =
(2)
x2 - x1
y1
b = y1 - m.x1
x1
(3)
x2
Giaûi thuaät veõ ñöôøng thaúng seõ ñöôïc xaây döïng döïa
treân phöông trình ñöôøng thaúng cho trong bieåu thöùc
(1) vaø ñöôïc tính toaùn thoâng qua bieåu thöùc (2) vaø (3)
ÖÙng vôùi moät söï thay ñoåi ∆x theo chieàu truïc x ta coù theå tính ñöôïc söï thay ñoåi theo truïc
y töông öùng laø ∆y
vôùi
∆y = m.∆x
(4)
töông töï, ta coù theå tính toaùn ∆x theo ∆y nhö sau:
∆y
∆x =
(5)
m
Caùc phöông trình naøy seõ laø neàn taûng ñeå xaùc ñònh sai leäch ñieän aùp trong caùc thieát bò
tuaàn töï. Ñoái vôùi ñöôøng thaúng coù heä soá goùc |m| < 1, ∆x coù theå ñöôïc xem laø töông öùng vôùi
sai leäch ñieän aùp theo truïc x vaø söï sai leäch ñieän aùp theo truïc y laø ∆y coù theå cuõng deã daøng
tính ñöôïc theo ∆x baèng phöông trình (4). Coøn ñoái vôùi ñöôøng thaúng coù heä soá goùc |m| > 1, ∆y
coù theå ñöôïc xem laø töông öùng vôùi ñoä sai leäch ñieän aùp theo truïc y vaø khi ñoù ñoä sai leäch
ñieän aùp theo truïc x coù theå töông öùng ñöôïc tính theo ∆y baèng phöông trình (5). Coøn ñoái vôùi
ñöôøng thaúng coù heä soá goùc m = 1, sai leäch ñieän aùp theo chieàu doïc vaø chieàu ngang laø baèng
nhau (∆x = ∆y). Vaø nhö vaäy öùng vôùi moãi tröôøng hôïp, moät ñöôøng thaúng lieân tuïc vôùi heä soá
goùc laø m seõ ñöôïc veõ ra giöõa hai ñieåm cho tröôùc.
Tuy nhieân trong heä thoáng rôøi raïc, ñöôøng thaúng ñöôïc taïo ra baèng caùc pixel, do ñoù
khoaûng caùch caùc böôùc theo chieàu doïc vaø chieàu ngang seõ phuï thuoäc vaøo vieäc chia caét caùc
pixel naøy. Vaø nhö theá chuùng ta phaûi tieán haønh laáy maãu taïi caùc ñieåm rôøi raïc vaø xaùc ñònh
ñieåm caän keà vôùi caùc ñieåm ñaõ tieán haønh laáy maãu naøy. Quaù trình rôøi raïc hoùa moät ñoaïn thaúng
theo truïc x ñöôïc bieãu dieãn nhö hình veõ sau:
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 19
Luaän AÙn Toát Nghieäp
Phaàn thuyeát minh
y2
y1
x1
x2
Giaûi Thuaät DDA (Digital Differential Analyser)
Digital Differential Analyser (DDA) laø giaûi thuaät veõ ñöôøng thaúng döïa treân cô sôû tính toaùn
hoaëc ∆y hoaëc ∆x thoâng qua vieäc söû duïng caùc phöông trình (4) vaø (5). Chuùng ta seõ tieán
haønh laáy maãu ñoaïn thaúng theo ñoä dôøi ñôn vò töông öùng vôùi moät truïc toïa ñoä vaø xaùc ñònh giaù
trò nguyeân töông öùng cuûa vò trí naèm saùt ñöôøng thaúng nhaát theo truïc coøn laïi.
ÔÛ ñaây, chuùng ta giaû thieát laø heä soá goùc cuûa ñöôøng thaúng laø m vôùi m döông, tröôøng hôïp
m <= 1, chuùng ta seõ laáy maãu theo truïc x vôùi ñoä dôøi ∆x=1 vaø tính ñöôïc caùc giaù trò y keá tieáp
laø:
(6)
yk+1 = yk + m
Chæ soá k ôû ñaây seõ baét ñaàu baèng 1 cho ñieåm ñaàu tieân vaø taêng daàn cho ñeán khi ñaït ñeán
ñieåm keát thuùc. Vì m coù theå laø moät soá thöïc baát kyø naøo ñoù naèm giöõa 0 vaø 1, neân giaù trò töông
öùng y phaûi ñöôïc laøm troøn thaønh giaù trò gaàn nhaát thuoäc ñöôøng thaúng.
Ñoái vôùi ñöôøng thaúng coù heä soá goùc lôùn hôn 1, chuùng ta seõ ñoåi ngöôïc hai tham soá x vaø y.
Nghóa laø chuùng ta seõ laáy maãu theo y vôùi ñoä dôøi ñôn vò (∆y = 1) vaø tính toaùn caùc giaù trò keá
tieáp cuûa x nhö sau:
1
xk+1 = xk +
(7)
m
Phöông trình (6) vaø (7) ñöôïc xaây döïng döïa treân cô sôû laø caùc ñöôøng thaúng ñöôïc veõ töø
traùi qua phaûi. Neáu quaù trình veõ dieãn ra theo chieàu ngöôïc laïi nghóa laø ñieåm baét ñaàu naèm
beân tay phaûi thì ta coù ñoä dôøi ∆x = -1 vaø:
yk+1 = yk - m
(8)
hay khi heä soá goùc lôùn hôn 1, chuùng ta coù ∆y = -1 vôùi
1
(9)
xk+1 = xk m
Caùc phöông trình töø (6) ñeán (9) cuõng coù theå ñöôïc söû duïng ñeå tính toaùn vò trí cuûa caùc
pixel thuoäc ñöôøng thaúng khi heä soá goùc mang giaù trò aâm. Neáu giaù trò tuyeät ñoái cuûa heä soá goùc
laø nhoû hôn 1 vaø ñieåm baét ñaàu naèm ôû beân traùi, ta ñaët ∆x = 1 vaø tính toaùn giaù trò cuûa y theo
Sinh vieân thöïc hieän:
Bieän Coâng Minh - Nguyeãn Xuaân Sôn
Trang 20
- Xem thêm -