ÇÖ Ò ÓÖ Þ Ó ÖÙ ÒØÞ
ÂÓ× Å Þ 1
ÓÒÓר Ó ÁÒ ÓÖÑ Ø ÙÐØ Ø Ó Ö ×ÐÃ
ÓÒÔÙØ Þ Ó ÒØÞ Ø Ñ Ò ÖØ ¬Þ Ð Ë Ð Ó×
Ö Ä × 2
ÓÒÓר Ó ÁÒ ÓÖÑ Ø ÙÐØ Ø Ó ×Ð1
À Ð Ð ØÖÓÒ Ó ÔÑ Ó × º Ùº ×
2À Ð Ð ØÖÓÒ Ó ÑÙØ Ó ÓØÑ Ðº ÓÑ
iv
v
À ØÞ ÙÖÖL
iburu hau idaztearen ideia Informatika Fakultatean Ordenadore bidezko
Irudigintza irakasgaia hasi zenean sortu zitzaidan, gaiaren inguruan euskaraz
ezer ez aurkitzean hasi bainintzen liburu baten beharra ikusten.
Irakasgaiaren ardura nire esku zegoenez, han-hemenka liburu, artikulu
eta material bila jardun nuen. Gehiena, dena ez esatearren, ingelesez zegoen;
gerora, gazteleraz zenbait itzulpen azaldu dira, eta material horiek erabiliz
klaseak euskaraz emateko itxaropenaz, apunte-sortatxoa egiteari ekin nion.
Horretan nenbilela, Donostiako Euskararako Udal Patronatuak eskainitako
dirulaguntza lortzeko aukera sortu zen eta heldu egin genion aukera horri.
Dirulaguntzak, itzulpenez arduratu den Asier Lasari beka ordaintzeko balio
izan zigun. Horrela, apunte-sorta osatu eta esku artean daukazun liburua
idatzi dugu.
Euskaraz ikasten dutenek euskaraz idatzitako liburua edukitzea izan da
helburua, horrez gain, gaiaren inguruan zerbait jakin nahi duenak, beste
hizkuntzetara jo beharrik ez edukitzea ere buruan eduki dugu beti; horrega-
tik, azalpenak irudi eta adibideen bidez laguntzen saiatu gara, azalpenetan
errazenetik hasi eta zailagora joanez, gehiegi sakondu nahi ez duenak astune-
gia dela esan ez dezan.
Gaiaren inguruko terminologia gehiena ingelesetik datorkigu. Gainera,
askotan asmatutako hitzekin eta akronimoekin egin dugu topo; horrelakoe-
tan, euskaratzeko aukera ikusi badugu, euskaratu egin dugu, baina zenbaite-
tan ingelesezko akronimoa ere erabili dugu. Gaiaren inguruan euskaraz gauza
gehiegirik ez dago; terminologia erabileraren bultzadaz hazi egingo da; baina,
denean bezala, hazteko hasi egin behar!
Joseba Makazaga.
vi
vii
× ÖÖE
skertu beharra daukat Donostiako Euskararako Udal Patronatuak es-
kainitako dirulaguntza, horri esker Asier Lasari beka bat ordaindu ahal izan
baitiogu, eta klaseetarako prestatutako materialaz gain, Asierrek itzulitako
hainbat eta hainbat atalekin osatu ahal izan baitugu liburua.
UZEI ere ezin utziko dut aipamenik gabe, makina bat zalantza argitu
baitidate, eta horien antzera, zuzentzaile lanetan lagundutakoei ere eskerrak
eman behar dizkiet, Patxi Angulo, Xabier Artola (fakultateko euskaltzain
partikularra), X talde osoa, beren lana guk erabiltzeko moduan jartzeagatik,
eta horien artean ez dut Ruben Urizar ahaztu nahi, hainbat hitzen itzulpena
egitean eskainitako laguntzagatik, ez eta I~naki Alegria ere, zuzentzaile or-
tografikoa erabil nezan hartu behar izan zuen lanagatik. Eta oro har lan hau
egitera bultzatu eta animatu nauten guztiak eskertu behar ditut.
Azkenik, Joxerrra Etxeberriak egindako lan eskergaitza aipatu nahi nuke,
azken zuzenketaz bera arduratu baita. Idazkeraren zuzentasuna, testuen
argitasuna eta liburuak eduki lezakeen kalitatea berari zor diogu.
viii
Ù1
Sarrera 1
1.1 Liburu honi buruz . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Lan-eremua . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Garapena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Infografia-aplikazioen ezaugarriak . . . . . . . . . . . . . . . . 5
1.4.1 Eredua . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.2 Tratamendua . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.3 Ikustea . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.4 Elkarrekintza . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Grafikoen liburutegiak . . . . . . . . . . . . . . . . . . . . . . 8
2 Oinarrizko marrazketa-funtzioak 11
2.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Marra eta kurben marrazketa . . . . . . . . . . . . . . . . . . 13
2.2.1 Gehikuntzazko algoritmoak . . . . . . . . . . . . . . . 13
2.2.2 Analizatzaile Diferentzial Digitala: DDA . . . . . . . . 16
2.2.3 Brasenhamen algoritmoa . . . . . . . . . . . . . . . . . 17
2.3 Poligonoen marrazketa: betetzea . . . . . . . . . . . . . . . . 22
2.4 Aliasing delakoa ekiditeko bideak . . . . . . . . . . . . . . . . 27
2.4.1 Gain-laginketa . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.2 Azalera-laginketa . . . . . . . . . . . . . . . . . . . . . 31
2.4.3 Laginketa estokastikoa . . . . . . . . . . . . . . . . . . 31
3 Objektuen adierazpideak 35
3.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Poligonozko adierazpidea . . . . . . . . . . . . . . . . . . . . . 36
3.2.1 Poligonozko objektuak eraikitzen . . . . . . . . . . . . 38
3.3 Txatalen sareak . . . . . . . . . . . . . . . . . . . . . . . . . . 39
ix
x Ù3
.3.1 Objektuak txatal-sareen bidez eraikitzen . . . . . . . . 40
3.4 Solidoen geometria eraikitzailea edo CSG . . . . . . . . . . . . 42
3.5 Espazioaren partiketa-teknikak . . . . . . . . . . . . . . . . . 44
3.5.1 Octreeak . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.2 BSP zuhaitzak . . . . . . . . . . . . . . . . . . . . . . 47
3.6 Irudia sortzeko estrategiak . . . . . . . . . . . . . . . . . . . . 51
3.6.1 Poligonozko objektuen irudia sortzen . . . . . . . . . . 51
3.6.2 Txatal parametrikoen sarearen irudia sortzen . . . . . 58
3.6.3 CSG adierazpideko objektuen irudia sortzen . . . . . . 60
4 Gainazal eta kurben adierazpena 63
4.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2 Bi dimentsioko kurben adierazpena . . . . . . . . . . . . . . . 63
4.3 Interpolazioa, egokitzea eta itxuraren kontrola . . . . . . . . . 64
4.3.1 Interpolazioa . . . . . . . . . . . . . . . . . . . . . . . 65
4.3.2 Interpolazioaren arazoak . . . . . . . . . . . . . . . . . 66
4.3.3 Egokitzea . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.3.4 Itxuraren kontrola . . . . . . . . . . . . . . . . . . . . 70
4.4 Polinomioen oinarriak . . . . . . . . . . . . . . . . . . . . . . 71
4.5 Bezier kurbak . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.5.1 Bezier kurbak lotzen . . . . . . . . . . . . . . . . . . . 77
4.5.2 Bezier kurben propietateen laburpena . . . . . . . . . . 79
4.6 Spline funtzioak . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.6.1 Oinarrizko splineak . . . . . . . . . . . . . . . . . . . . 82
4.7 Ekuazio parametrikoetan oinarritutako inplementazioa . . . . 103
4.7.1 Interpolazioa . . . . . . . . . . . . . . . . . . . . . . . 104
4.7.2 Egokitzea . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.7.3 Itxuraren kontrola . . . . . . . . . . . . . . . . . . . . 104
4.8 Gainazal erregularrak eraikitzen . . . . . . . . . . . . . . . . . 106
4.8.1 Interpolazioa . . . . . . . . . . . . . . . . . . . . . . . 106
4.8.2 Itxuraren kontrola . . . . . . . . . . . . . . . . . . . . 109
4.9 Gainazal biparametriko kubikoak . . . . . . . . . . . . . . . . 109
4.9.1 Bezier gainazalak elkartzen . . . . . . . . . . . . . . . . 115
4.9.2 B-splineen txatalak . . . . . . . . . . . . . . . . . . . . 116
4.10 Gainazal parametrikoen irudigintza . . . . . . . . . . . . . . . 121
4.11 Poligonozko sareen bidezko gainazalen hurbilketa . . . . . . . 121
4.12 NURBak eta -splineak . . . . . . . . . . . . . . . . . . . . . 127
4.12.1 NURBak . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Ù xi
4.12.2 -splineak . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.13 Objektuak sare parametriko bikubikoen bidez eraikitzen . . . 130
4.13.1 Gainazalen egokitzea . . . . . . . . . . . . . . . . . . . 130
4.13.2 Zeharkako ebakiduraren bidezko diseinua . . . . . . . . 134
4.13.3 Kontrol-poligonoaren bidezko diseinua . . . . . . . . . 136
5 Geometri aldaketak 143
5.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.2 Bi dimentsiotako aldaketak . . . . . . . . . . . . . . . . . . . . 144
5.2.1 Leku-aldaketa . . . . . . . . . . . . . . . . . . . . . . . 145
5.2.2 Neurri-aldaketa . . . . . . . . . . . . . . . . . . . . . . 145
5.2.3 Biraketa . . . . . . . . . . . . . . . . . . . . . . . . . . 146
5.2.4 Islada . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.2.5 Aldaketen kateaketa . . . . . . . . . . . . . . . . . . . 152
5.2.6 Koordenatu homogeneoak . . . . . . . . . . . . . . . . 154
5.3 Hiru dimentsiotako aldaketak . . . . . . . . . . . . . . . . . . 155
5.3.1 Leku-aldaketa . . . . . . . . . . . . . . . . . . . . . . . 156
5.3.2 Neurri-aldaketa . . . . . . . . . . . . . . . . . . . . . . 156
5.3.3 Islada . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.3.4 biraketa . . . . . . . . . . . . . . . . . . . . . . . . . . 158
6 Ikuste-Sistemak 165
6.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
6.2 Bi dimentsiotako irudigintza . . . . . . . . . . . . . . . . . . . 165
6.2.1 Mugaketa . . . . . . . . . . . . . . . . . . . . . . . . . 166
6.2.2 laukiratzea . . . . . . . . . . . . . . . . . . . . . . . . . 173
6.3 Hiru dimentsiotako irudigintza . . . . . . . . . . . . . . . . . . 175
6.3.1 ikuslearen erreferentzi sistema . . . . . . . . . . . . . . 176
6.3.2 1. irudigintza-sistema . . . . . . . . . . . . . . . . . . . 178
6.3.3 2. irudigintza-sistema . . . . . . . . . . . . . . . . . . . 184
6.3.4 3. irudigintza-sistema . . . . . . . . . . . . . . . . . . . 186
6.3.5 4. irudigintza-sistema. PHIGS . . . . . . . . . . . . . . 186
6.3.6 Atze-aurpegien ezabapena . . . . . . . . . . . . . . . . 195
7 Errealitate-itxura 197
7.1 Ezkutuko azalerak . . . . . . . . . . . . . . . . . . . . . . . . 197
7.1.1 Z-buffer. . . . . . . . . . . . . . . . . . . . . . . . . . . 199
7.1.2 Spanning Scanline . . . . . . . . . . . . . . . . . . . . 202
xii Ù7
.1.3 Sakonerarekiko ordenazio-algoritmoa . . . . . . . . . . 208
7.1.4 Ray-casting . . . . . . . . . . . . . . . . . . . . . . . . 212
8 Argiztatze-ereduak 217
8.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
8.2 Oinarrizko ereduak . . . . . . . . . . . . . . . . . . . . . . . . 218
8.2.1 Ingurune-argia . . . . . . . . . . . . . . . . . . . . . . 218
8.2.2 Islada barreiatua . . . . . . . . . . . . . . . . . . . . . 219
8.2.3 Ispilu-islada: Phong-en eredua . . . . . . . . . . . . . . 220
8.3 Islada argi-iturri anitzekin . . . . . . . . . . . . . . . . . . . . 224
8.4 Warn-en eredua . . . . . . . . . . . . . . . . . . . . . . . . . . 224
8.5 Intentsitatearen ahuldura . . . . . . . . . . . . . . . . . . . . . 226
8.6 Koloreari dagozkion zuzenketak . . . . . . . . . . . . . . . . . 227
8.7 Gardentasuna . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
8.7.1 Errefrakziorik gabeko gardentasuna . . . . . . . . . . . 229
8.7.2 Errefrakziodun gardentasuna . . . . . . . . . . . . . . . 231
8.8 Itzalak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
8.9 Poligonoak argiztatzeko teknikak . . . . . . . . . . . . . . . . 233
8.9.1 Gouraud-en interpolazioa . . . . . . . . . . . . . . . . . 234
8.9.2 Phong-en interpolazioa . . . . . . . . . . . . . . . . . . 238
8.9.3 Gouraud versus Phong . . . . . . . . . . . . . . . . . . 239
9 Izpi-hedaketa 243
9.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
9.2 Oinarrizko algoritmoak . . . . . . . . . . . . . . . . . . . . . . 244
9.3 Ortzadarraren ezaugarri optikoak . . . . . . . . . . . . . . . . 245
9.4 Izpi-hedaketaren inplementazioa . . . . . . . . . . . . . . . . . 247
9.4.1 Prozeduraren eraginkortasuna . . . . . . . . . . . . . . 249
9.5 Izpi-hedaketaren geometria . . . . . . . . . . . . . . . . . . . . 253
9.5.1 Ebaketak . . . . . . . . . . . . . . . . . . . . . . . . . 253
9.6 Islada bidezko argiztatze-eredua . . . . . . . . . . . . . . . . . 261
9.7 Itzalak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
9.8 Izpiak desbideratuz . . . . . . . . . . . . . . . . . . . . . . . . 267
9.9 Izpi-hedaketa eta anti-aliasing . . . . . . . . . . . . . . . . . . 270
9.10 Izpi-hedaketa eraginkor bihurtzen . . . . . . . . . . . . . . . . 272
9.10.1 Moldaerazko sakonera-kontrola . . . . . . . . . . . . . 272
9.10.2 Borne-bolumenak . . . . . . . . . . . . . . . . . . . . . 273
9.10.3 Lehen talkaren azkartzea . . . . . . . . . . . . . . . . . 277
Ù xiii
9.10.4 Espazio-koherentzia . . . . . . . . . . . . . . . . . . . . 279
10 Erradiositatea 285
10.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
10.2 Erradiositate-ekuazioa . . . . . . . . . . . . . . . . . . . . . . 286
10.3 Forma-faktoreak kalkulatzen . . . . . . . . . . . . . . . . . . . 288
10.4 Txatalak azpitxataletan zatitzen . . . . . . . . . . . . . . . . . 293
10.5 Urratsez urratseko hobekuntza . . . . . . . . . . . . . . . . . . 295
10.6 Forma-faktore zehatzagoen kalkulua . . . . . . . . . . . . . . . 299
11 Kolore-espazioak 301
11.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
11.2 Hiru osagairen bidezko adierazpena . . . . . . . . . . . . . . . 302
11.3 Kolore-espazioak . . . . . . . . . . . . . . . . . . . . . . . . . 304
11.3.1 RGB eredua . . . . . . . . . . . . . . . . . . . . . . . . 306
11.3.2 HSV eredua . . . . . . . . . . . . . . . . . . . . . . . . 307
11.3.3 HLS eredua . . . . . . . . . . . . . . . . . . . . . . . . 310
11.3.4 CIE XYZ espazioa . . . . . . . . . . . . . . . . . . . . 313
11.3.5 CIE xyY espazioa . . . . . . . . . . . . . . . . . . . . . 317
11.3.6 CIE LUV espazioa . . . . . . . . . . . . . . . . . . . . 320
11.4 Monitore desberdinen azterketa . . . . . . . . . . . . . . . . . 322
11.4.1 Monitore desberdinak eta kolore berdinak . . . . . . . 322
11.4.2 Koloreen mugaketa . . . . . . . . . . . . . . . . . . . . 324
12 Animazio-teknikak 325
12.1 Sarrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
12.2 Ordenadore bidezko animazio-teknikak . . . . . . . . . . . . . 326
12.3 Behe-mailako kontrola . . . . . . . . . . . . . . . . . . . . . . 327
12.3.1 Gidoi-sistemak . . . . . . . . . . . . . . . . . . . . . . 327
12.3.2 Keyframing . . . . . . . . . . . . . . . . . . . . . . . . 327
12.3.3 Spline bidez zuzendutako animazioa . . . . . . . . . . . 328
12.4 Adierazpenaren animazioa . . . . . . . . . . . . . . . . . . . . 328
12.4.1 Objektu artikulatuen animazioa . . . . . . . . . . . . . 328
12.4.2 Objektu bigunen animazioa . . . . . . . . . . . . . . . 329
12.5 Prozedura bidezko animazioa . . . . . . . . . . . . . . . . . . 333
12.5.1 Partikula-multzoen animazioa . . . . . . . . . . . . . . 333
12.5.2 Portaeraren animazioa prozedura bidez . . . . . . . . . 334
12.5.3 Eredu analitikoen animazioa . . . . . . . . . . . . . . . 335
xiv ÙA
Spline marrazketarako programa 337
A.1 Zenbait definizio: globala.def . . . . . . . . . . . . . . . . . . . 337
A.2 Erazagupen globalak: globala.h . . . . . . . . . . . . . . . . . 338
A.3 Poligonoa marrazteko funtzioa . . . . . . . . . . . . . . . . . . 338
A.4 B-splinearen hasieraketa . . . . . . . . . . . . . . . . . . . . . 339
A.5 Ardatz- eta oinarri-marrazketa . . . . . . . . . . . . . . . . . . 341
A.6 B-splinearen marrazketarako funtzioa . . . . . . . . . . . . . . 342
A.7 Oinarriko splineen kalkulua . . . . . . . . . . . . . . . . . . . 343
A.8 Programaren hasieraketa . . . . . . . . . . . . . . . . . . . . . 345
A.9 Kontrol-puntuak mugitzeko funtzioak . . . . . . . . . . . . . . 347
A.10 Programa nagusia . . . . . . . . . . . . . . . . . . . . . . . . . 348
Aurkibidea 352
½º Ã Ô ØÙÐÙË
ÖÖ Ö½
º½ Ä ÙÖÙ ÓÒ ÙÖÙÞ
Esku artean daukazun liburu honen helburua ordenadore bidezko irudigin-
tzaren inguruko algoritmo, metodo eta filosofia ezberdinak azaltzea da. Ho-
rretarako metodo eta filosofia ezberdinek irudiak sortzeko erabiltzen dituzten
bideak zein diren eta lana nola egiten duten azalduko dugu.
Liburua kapitulutan banatuta dago; lehenengoa sarrera hau duzu, eta ber-
tan irudiekin lan egiten duten aplikazioen ezaugarriak aztertzen dira. Ezau-
garri horien artean gure arreta zeini eskainiko diegun azaltzen da, eta horrez
gain ordenadore bidezko irudigintzaren historiaren gainbegiratutxoa ere aur-
kituko duzu.
Oinarrizko marrazketa-funtzioen kapituluan zenbait teknika eta algoritmo
aurkituko dituzu; horiek pantaila batean marrak eta oinarrizko kurbak ma-
rrazteko erabil daitezke eta bakoitzaren azalpenak aurkitu ahal izango dituzu,
jakina, eduki ditzaketen arazo eta konponbideak esplikatuz.
Objektuen adierazpideei buruzko kapituluan, eszenatoki bat adierazteko
erabil daitezkeen metodo garrantzitsuenak zein diren eta bakoitzaren ezau-
garriak azaltzen dira, era berean metodo bakoitzaren erabilerari buruzko
azalpenak ere aurkitu ahal izango dituzu.
Gainazal eta kurben adierazpenei dagokien kapituluan, objektuak adie-
razteko metodo garrantzitsuenetako baten barrenak aztertzen dira. Gaina-
zalak eta kurbak adierazteko metodo erabilienak sakonki aztertzen ditu ka-
pituluak eta horretarako beharrezko diren oinarri matematikoak zein diren
eta nola erabiltzen diren azaltzen du.
1
2 ½º Ã Ô ØÙÐÙ Ë ÖÖ Ö
Geometri aldaketez hitz egiten duen kapituluan, objektu bati eragin die-
zazkiokegun oinarrizko aldaketak nola egiten diren azaltzen da. Oinarrizko
aldaketatzat leku-aldaketa, biraketa, neurri-aldaketa eta isladapena hartzen
ditugu, eta aldaketa horiek eragiteko bidea ulertzeko errazagoa izan dadin,
lehenengo bi dimentsioetan nola egiten diren azaltzen dugu, horrela, ondoren,
hiru dimentsioetan egiten dena errazago ulertzen baita.
Ikuste-sistemei buruzko kapituluan, kamera zer den azaltzen da. Orde-
nadore bidez irudiak sortu ahal izateko irudia nork eta nola ikusten duen
zehaztu beharko da, zehaztasun horien bitartez irudia sortu beharko baita.
Hori dela eta, zehaztasunak zein diren eta zehaztasun horiek erabiliz irudia
nola lortzen den azaltzen du kapituluak.
Errealitate-itxura lortzeko bide erabilienak zein diren eta bakoitzak iru-
dia nola lortzen duen irakurri ahal izango duzu hurrengo kapituluan. Objek-
tuen adierazpidearen eta kameraren arabera irudian agertu beharko lukeena
lortzeko bide ezberdinez hitz egiten dugu, eta bide bakoitzaren aldeko eta
kontrakoak zein diren ere argitu ahal izango duzu.
Argiztatze-ereduei buruzko kapituluak argiek eszenatokian duten eragina
aztertzen du, eta horiek lortzeko metodoak azaltzen ditu. Argi-isladak, gar-
dentasuna, itzalak eta horrelakoak lortzeko algoritmoen azalpenak irakurri
ahal izango dituzu kapitulu horretan.
Koloreei buruzko kapitulua ere aurki dezakezu liburuan, kapitulu horretan
koloreak adierazteko metodo ezberdinen gainbegiratua aurki zenezake, eta
era berean koloreak adierazteko metodo bakoitzak dauzkan mugak.
Irudiak sortzeko dauden beste bi filosofia ezberdinei dagozkien kapituluak
ere badaude liburuan: bata izpi-hedaketari dagokion kapitulua da, bestea
berriz erradiositatean oinarritutako filosofiaren metodoari buruzkoa. Bai
bata eta bai bestea metodo garestiak dira, hau da, kalkulu-kopuru handia
behar dute biek. Baina metodo horien bidez lortzen diren emaitzak oso onak
dira eta ordenadoreen ahalmenak gora doazen neurrian, metodo horiek in-
dar handiagoa hartzen ari dira. Bi kapitulu horietan oinarrizko metodoen
funtzionamendua eta egin daitezkeen zenbait hobekuntza azaltzen dira.
Hurrengo kapituluak animazioak lortzeko teknika ezberdinak azaltzen
ditu. Teknika bakoitzaren azalpentxoa irakurri ahal izango duzu baina sako-
nean sartu gabe.
Azkenik, eranskin gisa, splineak marrazten dituen programa ere azaltzen
da. Programak C lengoaia erabiltzen du eta Unix ingurunetarako idatzita
dago, X sisteman oinarritzen baita. Hala ere, edozein ingurunetara era-
mateko egin beharreko bakarra, leiho-sistemari dagozkion funtzioak aldatzea
½º¾º Ä Ò¹ Ö ÑÙ 3
izango litzateke.
½º¾ Ä Ò¹ Ö ÑÙ
Infografia edo ordenadore bidezko irudigintzaz hitz egitean, informatikaren
atala dela esan behar da. Atal hori grafikoak, irudiak edo marrazkiak erabil-
tzen edota sortzen dituzten aplikazioak sortzeaz arduratzen da.
Definizio hori oso zabala da; bertan irudiak erabiltzea sartzen da, eta era
berean irudiak sortzea ere barnean darama. Hala ere, aplikazio horien artean
bereizketa egitea komeni da:
1. Grafikoak eta irudiak manipulatzen dituzten aplikazioak. Horiek in-
formazio grafikoa erabiliko eta manipulatuko dute, eta horren arabera
irudi eta grafiko berriak ere sor ditzakete. Liburuan horrelako aplika-
zioez arduratuko gara.
2. Emaitzak adierazteko grafikoak erabiltzen dituztenak. Aplikazio horiek
informazioaren erabilera grafikoa egiten dute, baina informazioak berak
ez dauka grafikoa izan beharrik; zentzu grafikoa, emaitzak adierazteko
erak edo bideak ematen dio.
½º¿ Ö Ô Ò
Ordenadore bidezko irudigintzak sorrera geldoa izan zuen, hardwarearen
prezio altuengatik batez ere. Hasiera batean grafikoak karaktere alfabetikoe-
kin egin izan ziren, eta ondoren pantaila grafikoak sortu ziren; baina gares-
tiak zirenez, enpresa handietara mugatu zen erabilera. Hastapenetan erabil-
tzaileen eta ordenadoreen arteko informazioaren trukerako erabili izan ziren,
baina benetako bultzada CAD1
motako aplikazioek eman zieten, bai pantaila
grafikoei eta bai infografiako aplikazioei ere. Gainera, memorien prezioen
jaitsierak eta, oro har, hardwarearen prezioen jaitsierak erabilpen orokorra
bultzatu zuten, eta, ondorioz, gaur egun bitxia gertatzen da kolorerik edo
pantaila grafikorik gabeko ordenadorea.
Erabilera orokortzearen ondorioz, infografiako aplikazioak sortuz joan
ziren; baina hasiera guztietan gertatzen den bezala estandarrik gabeko aplika-
zio, liburutegi eta arauak sortu ziren, eta software-etxe bakoitzak bere aplika-
1
ordenadorez lagundutako diseinua
4 ½º Ã Ô ØÙÐÙ Ë ÖÖ Ö
zioak sortu zituen eta merkatuan sartzen saiatu zen. Estandarizatze-saioak
egon dira. Horien artean core, gks, phigs eta phigs+ dira aipagarrienak:
core eta gks izenekoek porrot egin zuten; geroago, phigs ISO estandarra egin
zuten eta hiru dimentsiotarako hedatu zuten, phigs+ izenez ezagutzen dena
sortuz. Hala ere, Open GL liburutegia asko hedatu da merkatuan; hori Si-
licon Graphics-ek erabiltzen duen liburutegia da eta dagoenekoz ordenadore
pertsonaletarako, LINUX sistema eragilerako eta abarretarako bertsioak lor
daitezke. Horrek guztiak argi azaltzen du betiko arazoa, software-sortzaileek
merkatua menperatzeko dauzkaten borrokak alegia. Eta horrek, beste kasu
askotan bezala, estandarren porrota dakar. Dena den, hardware bitartez
gauza asko egiten dira gaur egun eta horrek, nolabait, behe-mailako estan-
darrak sortzen ditu: horien artean Z-buffer izenekoa adibide modura har
daiteke.
Gaur egun erabiltzen den hardwarearekin sortutako irudien kalitatea ona
da. Bideogintzan erabiltzen diren irudien neurriak 720 x 512 pixelekoak dira,
pixel bakoitzarentzat 24 bit erabiltzen direlarik. Hala ere, oso normala da
neurri eta kalitate hobea daukaten irudiak erabiltzea, edozein ordenadorek
1024 x 1024 pixeleko irudiak (edo gehiagokoak) erabil baititzake eta gainera
pixel bakoitza adierazteko 96 bit edukitzea ere ez baita beste munduko ezer.
Baina oraindik arazoak ere badaude. Esate baterako, bideogintzan begiari
mugimendua dagoela sinestarazteko, segundoko 25 irudi erakutsi behar zaiz-
kio, eta horrenbeste irudi sortzeko behar den kalkulu-abiadura gaur egun
ere ez da lortzen. Ondorioz, azkartze-algoritmo eta metodoak garatu dira,
eta, jakina, algoritmo horiek azken finean irudia ez kalkulatzeko egiten diren
tranpatxoak dira.
Esandakotik irudigintzarako hardwarearen ezaugarriak atera ditzakegu.
Honako hauek izango lirateke:
· Memoria handia behar dugu. Irudi bakar bat adierazteko, bideogintzan
adibidez, 1.000.000 byte baino gehiago behar ditugu, eta kontuan eduki
segundoko 25 irudi behar ditugula!
· Kalkulu-abiadura handia. Nahiko memoria edukitzearekin ez dugu
ezer lortzen, memoria horretan gorde beharreko irudia kalkulatzeko,
denbora luzean zain egon behar badugu.
· Erakuste-abiadura handia. Irudiak kalkulatzeaz gain pantailan erakus-
teko abiadura ere behar dugu; kontuan eduki segundoko 25 irudi nahi
½º º ÁÒ Ó Ö ¬ ¹ ÔÐ Þ Ó Ò Þ Ù ÖÖ 5
ditugula, eta horiek jartzea eta kentzea abiadura handian egin behar
dela.
½º ÁÒ Ó Ö ¬ ¹ ÔÐ Þ Ó Ò Þ Ù ÖÖO
rdenadore bidezko irudigintzaren barnean mota askotako aplikazioak sar
genitzake; bakoitzak bere bete beharrak izango ditu, baina gehienetan ezau-
garri jakin batzuk ikus daitezke:
· Ereduren bat sortu edo erabiltzen dute.
· Ereduaren aldaketak, edo bere tratamendu eta prozesatzea egiten da.
· Emaitzak erakutsi behar dira; horretarako, ikuste-prozesua egongo da.
· Erabiltzailearekiko elkarrekintza egon ohi da.
½º º½ Ö Ù
Ordenadore bidezko irudigintzaren barnean sar daitezkeen aplikazioek gehie-
netan objektuekin egiten dute lan, eta azken finean objektu horiei dagozkien
irudiak lortu nahi izango ditugu. Hori ez da beti egia, kasu askotan lortu nahi
ditugun irudiak ez baitira objektuenak izango, baizik eta, beste modu bateko
informazioa erabiliz informazio hori adierazteko irudiak ulergarriago egiten
direnez, grafikoki azaltzea izango baitute helburutzat. Dena den, gehiene-
tan objektuekin egiten da lan eta objektu horiek nola edo hala adierazi be-
har dira. Benetako objektuak gehienetan oso konplexuak dira eta horiek
adieraztea zaila izan daiteke; baina gaur egun irudigintza aplikatzen den
alor gehienetako objektuak gizakiek sortutako objektuen alorrekoak dira eta
gehienetan oso geometrikoak izaten dira (gizakiak makinen bidez sortzeko
modukoak) eta, ondorioz, objektuen eredua sortzea ez da hain zaila izango.
Bestalde, konplexutasun handiko objektuentzat hurbilketak erabil daitezke:
poligono bidezko txatalak, azalera interpolatzaileak . . .
Horrelako objektuez gain adieraz erraza ez den objektu-mota asko dago.
Horientzat eredu edo modelo bereziagoak erabili beharko ditugu: adibide
bezala sua, kea edo lainoa izan daitezke. Beste zenbait objektu adierazteko
gutxi gora-beherazko ereduak erabil daitezke, prozedura ezagunen bidez sor-
tutakoak: esaterako, fraktalak horien artean sar genitzake.
6 ½º Ã Ô ØÙÐÙ Ë ÖÖ Ö
Azken finean irudiko osagaien barne-eredua beharko dute eta hori lortzeko
bide asko dago. Zenbaitetan eredua eskaner bidez, digitalizatzaile bidez, X
izpi bidez edo horrelako metodoen bidez hartuko dugu zuzenean; baina beste
askotan sortu egin beharko dugu eredua eta, horretarako, geometri infor-
mazioa edo topologi informazioa beharko dugu. Sortzeko bideak ere asko
dira, aipagarrienak prozeduretan oinarritutakoak eta geometrian oinarritu-
takoak dira, fraktalak prozeduran oinarritutakoak dira, baina nagusitasuna
geometri informazioan oinarritutakoen esku dago.
Geometrian oinarritutako ereduek betebehar gehienetarako balio dute,
eta erabiltzailearentzat ulerterraz eta erabilterrazak dira. Horren aurrean
eredu horiek sortzeko programaren zailtasuna dago, erabiltzaileari eman be-
harreko aukerak programatzea ez baita erraza. Horien oinarriak ondokoak
dira:
· Aldaketa afinak: neurriaren, kokapenaren eta antzeko aldaketak.
· Eragiketa boolearrak: oinarrizko objektuen batuketa, diferentzia, eba-
keta eta antzekoak.
· Eragiketa eulertarrak. Erpin berrien gehiketak, aurpegi-aldaketak eta
antzekoak.
Kasu askotan poligono bidezko hurbilketa ez da nahikoa izango. Esate
baterako, espazio-untzi, abioi edo itsasuntzien eraikuntzan lan egiten dute-
nek, azalera aerodinamikoak behar dituzte eta horiek leunak izan behar dute;
gainera, azalera horien arteko loturek ere leunak izan beharko dute. Hori
matematikoki ikusita, azalera auzokideek ukitze-puntuan deribatu jarraiak
eduki beharko dituztela esatea da; eta ez lehenengoak bakarrik, gehienetan
bigarrenak ere bai.
Horrelako ereduak eraikitzea ez da erraza izango. Erabiltzaileak zertan di-
harduen jakin beharra izango du, baina hala ere gauzak asko erraztu beharko
zaizkio eta horrek era intuitiboan lan egiteko aukera eskatuko du. Hori dela
eta, horrelako objektuen itxura kontrolatzeko bideak jorratu beharko ditu
aplikazioak; eta horrek bere zailtasunak izango ditu, bai programatzean, bai
eta, lehen aipatu dugun bezala, erabiltzean ere.
½º º¾ ÌÖ Ø Ñ Ò ÙT
ratamenduak ereduarekin zerikusi handia dauka: datu-egitura jakin bat
lortu ondoren, egitura horri aldaketak egin nahiko dizkiogu, irudi ezberdinak
½º º ÁÒ Ó Ö ¬ ¹ ÔÐ Þ Ó Ò Þ Ù ÖÖ 7
lortu ahal izateko. Aldaketa horiek mota askotakoak izan daitezke: geometri
aldaketak, ezaugarri aldaketak (bolumena, pisua, indarrak . . . ). Beraz, trata-
menduaren atalean kalkulu aldetik pisu handiko prozedurak egon ohi dira eta
denbora askokoak izan daitezke.
Beste aplikazio-mota batzuetan, aurretik hartutako irudiekin dihardute-
nak adibidez, dagoeneko eredua sortuta eduki dezakete, eta eredu hori nola
edo hala aldatzea izango da helburua. Digituzko imajinekin lan egiten duen
aplikazio batek irudiari iragazkiren bat pasa diezaioke, anti-aliasing algorit-
moekin jardun daiteke edo enfokatzen saia daiteke. Horrelakoetan trata-
mendua irudiari berari egingo zaio eta aplikazio horien eredua irudia bera
adierazteko eredua izango da.
½º º¿ Á ÙרE
redua lortu eta horri aldaketak eragitearekin, ez dugu ezer handirik lor-
tzen; garrantzitsuena eredua eta bere gaineko aldaketei dagozkien irudiak
lortzea izango da, izan ere atal horrek ematen baitio izena irudigintza edo
infografiari. Horren guztiaren barnean, azpiatal asko dago:
· Marra eta kurbak marraztea.
· Ikuste-leihoaren barnealdekoa mugatzea.
· Proiekzioak kalkulatzea.
· Azalerak betetzea.
· Ikustezinak diren zatiak kentzea.
· Errealitate-itxura lortzea. Argiztatuz, testura edo txantiloiak erabiliz
. . .
· Animatzea. Hori azken finean ereduaren tratamenduaren barnean sar
genezake, tratamenduaren ondoren berriz irudi berri bat sortzea izango
da-eta animatzea.
Azpi atal horiek guztiak hasieran software bidez egin izan dira, baina
gero eta VLSI zirkuitu integratu gehiago dago eta ikuste-prozesua azkartzeko
laguntza ikaragarria ematen dutela esan behar da. Hori dela eta, algoritmo
asko integratu ahal izateko moduan sortu izan da.
8 ½º Ã Ô ØÙÐÙ Ë ÖÖ Ö
½º º Ð ÖÖ ÒØÞ
Aplikazio gehienek erabiltzailearekin elkarrekintza-lanean jardun behar iza-
ten dute, eta jakina, grafikoak sortzeko aplikazioak izanik, erabiltzailearekin
egin behar dituen informazio-aldaketak ere grafikoki egiten dituzte. Hau da,
interfaze grafikoak dira nagusi. Interfaze horiek erabilterrazak izan behar
dute eta horrez gain erabiltzaileak egin ditzakeen hutsegiteak konpontzeko
bidea eman behar dute. Ezaugarri nagusiak ondokoak izan daitezke:
· Erabiltzen errazak.
· Azkarrak.
· Hutsegiteak konpontzeko bidea emango dutenak.
· Adimentsuak?
½º Ö ¬ Ó Ò Ð ÙÖÙØG
rafikoen liburutegiak irudiak sortzen lagunduko diguten funtzioen bildumak
dira; abstrakzio maila handiagoa eskaintzen digute eta bertako funtzioek oi-
narrizko irudi konplexuagoak erabiltzeko aukera ematen digute. Horrez gain
iturburu-programak ingurunez aldatu ahal izango ditugu; hori egin ahal iza-
teko erabili dugun liburutegia, ingurune berrian ere eduki beharko dugu,
baina horretaz liburutegi egileak arduratzen dira. Ingurune guztietan libu-
rutegi hori egon dadin aukera onena, estandarrak erabiltzea da, bai onartu-
takoak edo bai erabilera dela eta estandartzat har daitezkeenak ere.
Guk sortu nahi dugun aplikazioak liburutegirik erabiliko ez badu, aukera
onena geuk sortzea izango da; hau da, oinarrizko funtzioen liburutegi mini-
moa egitea izango litzateke zuzenena, eta bertan gutxienez hiru motatako
funtzioak eduki beharko genituzke:
1. Marrazteko eta poligonoak betetzeko oinarrizko funtzioak, hau da, ikus-
teko oinarrizko funtzioak.
2. Sarrera eta irteerako eragiketak egiteko funtzioak.
3. Egoeraren berri emateko funtzioak.
½º º Ö ¬ Ó Ò Ð ÙÖÙØ 9
Funtzio horietan guztietan parametroak erabili beharko dira; horrela, po-
sibilitate guztiak erabiltzeko aukera izango dugu eta ez dugu oso antzeko
prozedura piloa sortu beharko. Hiru mota horietan sartzen diren prozedu-
rak asko izan daitezke, batez ere sarrera, irteera eta egoeraren berri ematen
dutenak. Irteerako funtzioen artean zer eta nola ikusi nahi dugun adierazi
beharko dugu; horren barnean ereduaren erabilerarako funtzio guztiak ere
sar daitezke eta horri buruzko informazioa lortu eta aldatzekoak. Beraz libu-
rutegietan funtzio kopuru handia egongo da; gainera arazo horietan guztietan
ados jartzea zein zaila den ere imajina dezakegu, eta ondorioz estandarrak
lortzeko beste arazo bat ere uler dezakegu.
10 ½º Ã Ô ØÙÐÙ Ë ÖÖ Ö
¾º Ã Ô ØÙÐÙÇ
Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ Ó¾
º½ Ë ÖÖ ÖG
aur egun gehien erabiltzen den marrazte- edo erakuste-gailua ordenadore-
aren pantaila edo CRT delakoa da. Pantaila hori, azken finean, pixelez osa-
tutako matrizea besterik ez da, eta beraz, zerbait marrazterakoan bertako
pixelak piztu edo itzaltzea besterik ez dugu egin beharko. Hala ere piztea
era askotan kontsidera daiteke:
· Bi egoeratara mugatuz, hau da, piztuta ala itzalita egon daitekeela
kontsidera dezakegu.
· Aztertu nahi dugun arazoaren arabera ez da nahikoa izango piztuta
ala itzalita egon daitekeela pentsatzearekin; beraz, askotan zuri eta
beltzaren artean gris mota asko daudela edo lor ditzakegula kontsidera
genezake.
· Errealitatea irudikatu nahi dugunean, ez dugu aurrekoarekin nahikoa
izango, eta pixel bakoitzaren koloreaz hitz egin beharko dugu.
Dena den, pixelaren izaeraz gain, pantailan marrazterakoan argi eduki behar
da matrizearen kontzeptua eta, azken finean, marrazkia puntu zehatz batzue-
tara mugatzen dela. Pixelen artean ez dago ezer; jakina, tartea oso txikia
izango da, baina bi pixelen artean tartea egongo da. Horrek zenbait arazo
sor ditzake, guk irudiz agertu nahi dugunaren izaera jarraia izango baita,
baina horretarako erabiliko dugun dispositiboa, berriz, diskretua. Bataren
11
12 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ Ó0
1 3 4 5 6 7 8 9 10
0
1
2
3
4
5
6
7
8
9
10
2
x 0 1 2 3 4 5 6 7 8 9 10
y 10 9.9 9.7 9.5 9.1 8.6 8.0 7.1 6.0 4.3 0
biribilduz 10 10 10 10 9 9 8 7 6 4 0
¾º½ ÖÙ Þ Ö ÙÒ Ö ÒØÞ Ð ÙÖ Ò Ñ ÖÖ ÞØ Ó Ö ÞÓ º
eta bestearen arteko ezberdintasunak gainditzen baditugu, sortutako irudi-
aren itxura, guk nahi duguna bezalakoa izango da. Baina beti argi eduki
behar dugu ondoko arazoen gainditu beharra:
1. Informazio-galera. Hasieran jarraia zena jarraia ez den zerbait bihur-
tuko da, eta jakina, aldaketa horretan informazio-galera egongo da.
2. Sortutako irudiak hutsuneak edo jarraitasun ezak eduki ditzake; adi-
bide modura, 2.1 irudia har daiteke.
3. Aliasing. Gure garunak irudi diskretua ikustean ezaguna duen zer-
baitekin erlazionatzeko joera du, baina ikusten duen horretara ez dago
ohituta; beraz, antzekotasunak bilatzen ditu eta askotan adierazi nahi
zenaren ezberdina den zerbaitekin parekatzen du, hau da, beste zerbait
balitz bezala ikusten dugu. Irudikatu nahi duguna eta beste zerbait ho-
rren marrazki diskretuak berdinak direlako sortzen da arazoa.
4. Egin beharreko kalkulu-kopuru handia. Pixel bakoitzaren informazioa
jaso eta aldatu behar dugu; gainera, animazioaren kasuan segundoko
20 irudi sortu behar dira, eta eszena bakoitzak, bideoaren kasuan 720 x
¾º¾º Å ÖÖ Ø ÙÖ Ò Ñ ÖÖ Þ Ø 13
512 x 24 bit behar ditu. Argi dago informazio-kopuru handia sortu eta
maneiatu behar dela. Horren ondorio zuzena, oinarrizko algoritmoen
garrantzia da; horiek ahalik eta eraginkorrenak izan behar dute eta
ahal den neurrian zirkuitu integratu berezietan inplementatuko dira.
Batez ere poligonoak marraztu eta betetzeko algoritmoak integratzen
dira; baina horretarako algoritmo eraginkorrak lortu behar dira.
¾º¾ Å ÖÖ Ø ÙÖ Ò Ñ ÖÖ Þ Ø
Lan horietarako algoritmo asko sortu da. Hemen ez ditugu denak azalduko,
baina algoritmo horien ideia nagusiak azaltzen saiatuko gara.
¾º¾º½ ÙÒØÞ Þ Ó Ð ÓÖ ØÑÓB
atez era marra zuzenak egiteko erabiltzen dira eta ekuazio esplizitua erabili
beharrean marraztu behar den pixelaren aurrekoaren ezagutzan oinarritzen
dira.
Ekuazio esplizitua erabiliz eta malda 0 eta 1 artekoa dela suposatuz, x
bakoitzarentzat y lortu behar da eta gure kasuan:
xi = xi-1 + 1
y(xi) = mxi + k
y kalkulatzeko, biderkaketa, batuketa eta biribilketa egin behar da. Algo-
ritmo hori ikaragarri erabiliko dela kontuan hartzen bada, gehiegitxo dela
esan behar da, eta eraginkorragoa egitea komeni da.
Aurreko bi ekuazioetatik ondokoa esan dezakegu:
y(xi+1) = mxi+1 + k = m(xi + 1) + k = mxi + k + m = y(xi) + m
Ikus dezakegunez, marraren aurreko puntuan oinarrituz hurrengoa lor
dezakegu eta gainera, batuketa eta biribilketa eginez, biderkaketarik gabe.
Dena den, horrek guztiak malda 1 baino txikiagoa denean besterik ez du
balio, malda handiagoa balitz, marraren jarraitasuna galduko genuke, eta
hori gerta ez dadin x eta y-ren paperak aldatu beharko genituzke, eta honako
ekuazio hauek erabili:
yi = yi-1 + 1
14 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ Ó0
1 3 4 5 6 7 8 9 10
0
1
2
3
4
5
6
7
8
9
10
2
y 0 1 2 3 4 5 6 7 8 9 10
x 10 9.9 9.7 9.5 9.1 8.6 8.0 7.1 6.0 4.3 0
biribilduz 10 10 10 10 9 9 8 7 6 4 0
¾º¾ ÖÙ Ð ¹Ö Ò ÙÒØÞ Ó ÑÓ ÙÖ Ñ ÖÖ ÞØÙÞº
x(yi) =
1
m
yi + h
Zirkunferentzien kasurako horrelako algoritmoak ez digu balioko. Adi-
bide modura 2.1 eta 2.2 irudiak erabil ditzakegu. Bertako zirkunferentziaren
ekuazioa x2
+ y2
= 100 da; lehenengoan aldagai aske modura x erabili dugu
eta bestean y, baina hala ere hutsuneak gelditu zaizkigu. Zirkunferentzian
bi aldagaien aldaketa ez da finkoa eta momentu batzuetan x azkarrago han-
ditzen da, baina beste batzuetan y aldagaiaren aldatze-abiadura handiagoa
da; beraz, ezin dugu bataren eta bestearen arteko paper-trukaketarekin hu-
tsuneen arazoa konpondu.
Pentsa genezakeen irtenbidea, tarteko pixel gehiago kalkulatzea izan dai-
teke. Beharbada, horrela pixelen arteko hutsuneak bete ahal izango geni-
tuzke; baina hori ez da nahikoa. Diametroaren arabera tarteko puntu gehi-
ago edo gutxiago kalkulatu beharko genituzke eta, gainera, alferrikako lan
gehiegi egin beharko genuke. Adibide modura, gure zirkunferentzi laurde-
nari dagozkion pixel-kopuruaren bikoitza kalkulatuz lortuko genukeena, 2.3
irudiak adierazten du. Pixel-kopurua bikoiztu arren, bertan hutsuneak ager-
tzen zaizkigu oraindik. Ondorioz, beste algoritmo-mota batzuk erabili be-
¾º¾º Å ÖÖ Ø ÙÖ Ò Ñ ÖÖ Þ Ø 15
0 3 4 6 7 8 9 10
0
1
2
3
4
5
6
7
8
9
10
21 5
Taula horretako balioak 2.1 irudikoarekin osotu behar dira.
x 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
y 9.9 9.8 9.6 9.3 8.9 8.3 7.6 6.6 5.2 4.3
biribilduz 10 10 10 9 9 8 8 7 5 4
¾º¿ ÖÙ ÔÙÒØÙ¹ ÓÔÙÖÙ Ó ØÞ Ö Ð Þº
16 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ Óh
arko ditugu.
¾º¾º¾ Ò Ð Þ ØÞ Ð Ö ÒØÞ Ð Ø ÐM
etodo horiek 1. mailako ekuazio diferentzialetan oinarritzen dira. Kurba,
ekuazioaren soluzioa izango da, eta ekuazioaren ebazpena zenbakizko metodo
bidez egiten dute. Ekuazio diferentziala y =
F(x, y) modukoa izango da eta
hasierako balioa ezaguna da, hau da, y(x0) = y0.
Gure helburua kurbako (xi, yi) bikoteak lortzea da; horretarako, zenba-
kizko metodoren bat erabili beharko dugu. Eulerrena izan daiteke posibi-
litateetako bat. Gogoratu Eulerren metodoak deribatua maldaren bitartez
hurbiltzen duela, hau da, (xi, yi) eta (xi+1, yi+1) direlakoak kurbako pun-
tuak izanik, deribatua lehenengo puntuan bi puntuak lotzen dituen zuzenaren
malda dela suposatzen du:
yi
=
yi+1 - yi
xi+1 - xi
Demagun x0, x1, . . . xn balioei dagozkien y0, y1 . . . yn lortu nahi ditugula.
Euskarriko balioen arteko aldea xi+1 - xi = hi eran adieraziko dugu, balio
horiek zenbat eta txikiago izan, orduan eta hurbilketa hobea lortuko dugu.
Eulerren metodoarekin, hau da, deribatua lortzeko malda erabiliz honako
hau daukagu:
yi
= F(xi, yi) =
yi+1 - yi
hi
Ondorioz:
yi+1 = yi + hi F(xi, yi) (2.1)
xi+1 = xi + hi
Hasierako balioak ezagunak direnez, ekuazioan F(xi, yi) balioa besterik
ez zaigu falta, eta hori kurba bakoitzaren arabera egongo da. Marra zuzenen
kasuan deribatua balio konstantea da, hau da, y/x; beraz, marrako pun-
tuak lortzea berehalakoa da. Puntuen artean hutsunerik egoterik nahi ez
badugu, x-ren kasuan hi balioa begiratu behar da. Ezin da 1 baino han-
diagoa izan; bestela x ardatzean hutsuneak sortuko lirateke. y ardatzaren
kasuan, puntu batetik bestera pasatzean hiF(xi, yi) gehitzen zaionez, balio
hori da zaindu beharrekoa; ezin izango du horrek bat baino handiagoa izan.
¾º¾º Å ÖÖ Ø ÙÖ Ò Ñ ÖÖ Þ Ø 17
a
b
x
i
x
i+1
ri+1
ri
¾º ÖÙ Ñ ÖÖ ÞÙÞ Ò Ñ ÖÖ ÞØ Ò ÔÙÒØÙ Ø Ò ÙÞÓ Þ Ò Ø Þ º
Zirkunferentziaren kasuan deribatuari dagokion ekuazioa y =
-x/y da;
beraz, 2.1 ekuazioan F(xi, yi) dagoen lekuan -xi/yi jarri beharko dugu. Kon-
tuan eduki behar da, horrek errorea sortzen duela, eta ondorioz ez ditugula
benetako kurbaren puntuak lortzen, egindakoa hurbilketa baita.
¾º¾º¿ Ö × Ò Ñ Ò Ð ÓÖ ØÑÓ
Hori DDA motako algoritmoen artean sar genezake, eta marra zuzenak ma-
rrazteko sortutako metodoa da. 2.2.2 atalean azaldu dugun bezala, marrako
puntuak aurkitu behar ditugu. Marraren malda 1 edo txikiagoa bada, hu-
tsunerik ez sortzeko, xi+1 = xi + 1 egitearekin nahikoa da; eta 2.1 ekuazioan
deribatuaren balioa jartzean, hau da, malda jartzean yi+1 = yi + m lortzen
dugu. Hasierako balioak jakinak direnez, marrako balioak lor ditzakegu; dena
den, yi+1 balioa biribildu egin beharko da, eta biribilketan errorea sortzen da.
Puntu batetik bestera pasatzerakoan, azken finean, bi aukeren artean
bat hartzea besterik ez dugu egiten; 2.4 irudian ikus daiteke argiago horren
esanahia. xi balioari ri egokitu badiogu, marraren malda 1 edo txikiagoa
denez, xi+1 balioari ri edo ri+1 egokitu behar diogu. Egokitze horretan sor-
tutako errorea ei+1 = yi+1 - ri+1 izango da. Beraz, bai a kasuan eta bai b
kasuan bete behar diren baldintzak begiratuz gero:
a kasurako:
ri+1 = ri int(yi+1 + 0.5) = ri
Hau da:
ri yi+1 + 0.5 < ri + 1
18 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ ÓB
aina ri = yi - ei eta yi+1 = yi + m direnez:
yi - ei yi + m + 0.5 < yi - ei + 1
-ei m + 0.5 < -ei + 1
-0.5 m + ei < 0.5 (2.2)
Bi baldintza horiek betetzen direnean, marra zuzenaren hurrengo puntua
aurrekoaren eskuinekoa izango da. Hala ere biribiltze-errorea balio absolu-
tuan 0.5 baino txikiagoa izango da, hau da, -0.5 ei < 0.5, eta ondorioz,
-0.5 ei + m beti beteko da, malda 0 eta 1 artekoa baita. Beraz, 2.2
ekuazioko baldintza honako honetara mugatzen da:
m + ei < 0.5 (2.3)
b kasurako:
ri+1 = ri + 1 int(yi+1 + 0.5) = ri + 1
Hau da:
ri + 1 yi+1 + 0.5 < ri + 2
Baina ri = yi - ei eta yi+1 = yi + m direnez:
yi - ei + 1 yi + m + 0.5 < yi - ei + 2
-ei + 1 m + 0.5 < -ei + 2
0.5 m + ei < 1.5 (2.4)
2.4 inekuazioaren bigarren zatia beti egiazkoa dela konturatzea komeni
da; hau da, m bat baino txikiagoa edo berdina da eta ei 0.5 baino txikiagoa
da. Ondorioz, hauxe geratzen da:
m + ei 0.5 (2.5)
Laburbilduz, aukera egiterakoan kontuan eduki beharrekoa ondokoa bes-
terik ez da:
¾º¾º Å ÖÖ Ø ÙÖ Ò Ñ ÖÖ Þ Ø 19
zuzena-marraztu(int x0,int y0,int x1,int y1)
{
int xi,ri;
double ei,m;
m = (y1 - y0) / (x1 - x0);
ei = 0;
ri = y0;
marraztu(x0, ri);
for(xi = x0 + 1;xi < x1;xi++)
{
ei+ = m;
if (ei 0.5);
{
ri + +;
ei - -;
}
marraztu(xi, ri;)
}
}
¾º ÖÙ ÞÙÞ Ò Ø ÓÞ ÓÒ Ô Ü Ð Ò Ð ÙÐÙÖ Ó Ð ÓÖ ØÑÓ º
1. ei+m < 0.5. Orduan eskuineko pixela hartu behar da. Gainera, aukera
horrekin egindako errorea ei+1 = yi+1 - ri+1 = yi + m - ri = ei + m da.
Hori kalkulatzeko, aurreko errorea erabil dezakegu eta malda gehitze
hutsarekin errore berriaren balioa lortuko genuke; horrela, hurrengo
puntua kalkulatzeko erabili ahal izango dugu, erroreari malda gehitzean
zer gertatzen den ikusi behar baita pixel berria aukeratzeko.
2. ei + m 0.5. Orduan eskuineko pixelaren gainekoa hartu behar da.
Oraingoan errorea ei+1 = yi+1 - ri+1 = yi + m - ri - 1 = ei + m -
1 da. Berriz ere, aurreko errorean oinarrituz, batuketa eta kenketa
eginez lortzen dugu. Eta berriro, hurrengo puntua kalkulatzeko prest
geundeke.
Hori guztia algoritmo erraz batean jaso dezakegu. 2.5 irudian agertzen
den algoritmoak, aipamen horiek jarraituz marra bati dagozkion puntuak
marraztuko lituzke.
20 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ ÓA
lgoritmo horretan ikus daitekeenez, eragiketa oso gutxi eginez, puntu
guztiak lor ditzakegu; gainera, bi aldagai izan ezik beste guztiak integer mo-
takoak dira. Bi aldagai horiek koma higikorreko aritmetika erabiltzera be-
hartzen gaituzte, baina zenbait aldaketa eginez, algoritmoak zenbaki osoekin
lan egitea lor daiteke. Algoritmoak koma higikorreko aldagaiak if aginduak
egiten duen konparaziorako behar ditu. Bertan, ei balioa 0.5 balioarekin
konparatzen du, baina horren baliokide dira ondoko konparazioak:
ei 0.5 2ei 1 2ei - 1 0
Hau da, 2ei - 1 balioaren ikurra begiratzearen baliokidea da. Bestalde,
balio horri zenbaki positiboren bat biderkatuz gero, ikurra ez da aldatzen
eta ondorioz x balioa aurreko guztiari biderkatuz jartzean aurreko algorit-
moaren if aginduan ondoko konparazioa egin behar da:
if(x(2ei - 1) 0)
Horren guztiaren balioa Ei aldagaian jaso genezake. Horrela, hasieran ei = 0
betetzen denez, E0 = -x beteko da, eta balio horrekin hasiera dezakegu.
Algoritmoak for aginduan bira bat ematean, bi kasu gerta daitezke:
1. ei < 0.5 kasua: Kasu horretan ei+1 balioa ei + m da, eta ondorioz,
Ei+1 = x(2ei+1 - 1) denez:
Ei+1 = x(2(ei + m) - 1) = x(2ei - 1) + 2mx = Ei + 2
y
x
x =
= Ei + 2y
2. ei 0.5 kasua: Kasu horretan ei+1 balioa ei + m - 1 da, eta ondorioz,
Ei+1 = x(2ei+1 - 1) denez:
Ei+1 = x(2(ei + m - 1) - 1) = x(2ei - 1) + 2mx - x =
= Ei + 2y - x
Beraz, for aginduaren barneko bi kasuetan, hurrengo birarako Ei+1 nola
kalkulatu behar den badakigu. Gainera, E0 integer motakoa izan daiteke,
eta horren aldaketa zenbaki osoak gehituz eta kenduz egiten denez, Ei alda-
gaia integer motakoa izan daiteke; gainera m aldagaia ez dugu behar, x
¾º¾º Å ÖÖ Ø ÙÖ Ò Ñ ÖÖ Þ Ø 21
zuzena-marraztu(int x0,int y0,int x1,int y1)
{
int xi,ri,x,y,Ei;
x = (x1 - x0);
y = (y1 - y0);
Ei = -x;
ri = y0;
marraztu(x0, ri;)
for(xi = x0 + 1;xi < x1;xi++)
{
Ei+ = 2y;
if (Ei 0);
{
ri + +;
Ei- = x;
}
marraztu(xi, ri;)
}
}
¾º ÖÙ Ò Ó×ÓÞ Ó Ö ØÑ Ø Ö Ð Þ ÞÙÞ Ò Ø Ò Ô Ü Ð Ð ÙÐ ØÞ Ó
Ð ÓÖ ØÑÓ º
22 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ Óe
ta y erabiltzen baititugu. Hori dela eta, 2.5 irudiko algoritmoa alda deza-
kegu, eta zenbaki osoekin lan egiten duen 2.6 irudiko algoritmoa erabili ahal
izango dugu marraren puntuak kalkulatzeko. Algoritmo hori Brasenhamen
algoritmo izenaz ezagutzen da.
Brasenhamen algoritmoa hardware bitartez eragin daiteke; horrela marra
zuzenak marraztea ikaragarri azkarra izango da.
¾º¿ ÈÓÐ ÓÒÓ Ò Ñ ÖÖ Þ Ø Ø ØÞP
oligonoak marraztea bi eratara uler daiteke. Alde batetik, poligonoaren
mugak marraztea izan daiteke; horretarako, Brasenhamen algoritmoa erabil-
tzearekin nahikoa izango genuke, poligonoaren muga bakoitza marra zuzena
izango baita. Baina poligonoak marraztean, gehienetan, bere barnealdean
koloreren bat edo ehunduraren bat jartzea nahi izango dugu, eta horretarako
barneko puntuak zehaztu beharko ditugu.
Era batera zein bestera poligonoa adierazteko, erpin-multzoa beharko
dugu eta erpinetik erpinera doan marra, poligonoaren muga izango da. Er-
pinak zehazterakoan, ordenatuta egon beharko dute; eta gainera, beti no-
rantza berean ordenatzea komeni da, erabakia hartu eta beti berdin egiteko.
Horrela, poligonoak zuloak baldin badauzka, zuloari dagozkion erpinak al-
derantzizko norantzarekin ordenatu beharko lirateke, zuloa dela adierazteko.
Puntu bat poligonoaren barnean dagoen ala ez erabakitzeko, algoritmoren
bat beharko dugu, eta horretan Jordanen teoremak lagun diezaguke: teo-
remak dioenez, puntu horretatik infinitura doan zuzenak poligonoaren mu-
gak zenbat aldiz zeharkatzen dituen begiratu behar da; kopuru hori bakoitia
bada, puntua barnealdean dago; bestela, poligonotik kanpoko puntua izango
da.
Jordanen teoremaren arabera barneko puntuak zehazteak erraza dirudi,
baina praktikan jartzerakoan zenbait arazo aurki dezakegu. Marrak poligo-
noa zenbat aldiz mozten duen jakiteko, poligonoaren albo bakoitza mozten
ote duen begiratu behar da; baina kontu handiz jokatu beharko dugu. 2.7 iru-
dian bi adibide agertzen dira. Kasu batean marra erpin baten gainetik pasa-
tzen da, eta ondorioz poligonoaren bi albo mozten dituela erabaki dezakegu,
erpina bi poligonotakoa baita. Arazo hori konpontzeko, bi alboetako bakarra
kontatzea erabaki dezakegu. Baina bigarren kasuan ikus daitekeen bezala,
horrela ere arazoak sortzen dira; poligonoarekiko ukitzailea bada, irtenbide
horrek ez baitu arazoa konpontzen. Arazo horiei irtenbidea emateko bi marra
¾º¿º ÈÓÐ ÓÒÓ Ò Ñ ÖÖ Þ Ø Ø ØÞ 23
(P ,P )x y
(P ,P )x y
b kasuaa kasua
¾º ÖÙ ÔÙÒØÙ ÖÒ Ò Ó Ò Ð Þ Ö ØÞ Ò ×ÓÖ Ø Þ Ò Ö ÞÓ º
erabil daitezke; baina horrek kalkulu-kopurua bikoiztuko luke eta ez da hori
komeni. Beraz, benetako irtenbidea marraren eta poligonoaren arteko ebake-
tak zehazki aztertzea izango da; horretarako, marra horizontala erabiltzea da
errazena.
Kasu gehienak 2.8 irudian agertzen direnak izango dira, Irudian P =
(px, py) puntutik hasita eskuinerantz doan marrak irudiko lau alboak mozten
dituenentz begiratu behar dugu: a kasuan, marra behetik pasatzen da, py <
y0, y1, eta ez du mozten poligonoaren alboa izango litzatekeen zatia; b ka-
suan, gainetik pasatzen da, py > y0, y1, eta, beraz, ez dago ebaketarik.
c kasua konplexuagoa da: py balioa y0 eta y1 balioen artean dago, baina
ebaketa-puntuari dagokion x balioa px baino ezkerrerago dago; beraz, ez
dago ebaketarik. Azken kasuan, ebaketa dagoela esan dezakegu: py y0 eta
y1 balioen artean dago eta ebaketa puntua px baino eskuinerago. Lau kasu
horiez gain, ebaketa-puntua alboaren erpina izatea gerta liteke, eta kasu hori
era berezian aztertu beharko dugu, marra poligonoarekiko ukitzailea den ala
benetan ebaketa dagoen erabaki beharko baitugu. Ukitzailea bada, ukitzen
duen erpinera heltzen diren bi ertzak, marra baino gorago (ala biak beherago)
egongo dira; eta ebaketa balego bat gainean eta bestea azpian egongo lirateke.
Beste era errazagorik ere erabiltzen da: pixela ertzaren maximoa bada, ez
da kontuan hartzen, eta minimoa bada, kontuan hartuko litzateke. Erabaki
hori erabiliko bagenu, poligono baten goreneko muturra kasualitatez lerro
batek ukituko balu, ez genuke marraztuko; eta, era berean, poligono horrek
gainean marra horizontala baleuka eta lerroan kokatuta balego, ez genuke
24 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ ÓP
=(P ,P )
a
b
c
d
x y
¾º ÖÙ Ñ ÖÖ ÓÖ ÞÓÒØ Ð Ö Ò Ø ÔÓÐ ÓÒÓ Ö Ò ÖØÞ Ò ÖØ Ó Ø Ö Ò Ð Ù¹
ÐÙ Ò Ö Ø Þ Ò Ó Ö Ò Ù× º
marraztuko. Baina marra hori kasu gehienetan poligono auzokide baten be-
heko ertza izango da eta poligono horren barneko pixel gisa har daitezke.
Azken finean, gure aukera izango da erabaki bat ala bestea hartzea.
Aipatu ditugun testen bidez zehazki esan daiteke puntua poligonoaren
barnean ala kanpoan dagoen; baina denbora alferrik galtzea izango litzateke,
marrazguneko pixel bakoitzeko azterketa horiek guztiak egitea. Hori egin
beharrik ez izateko, objektuen koherentzia-ezaugarriak erabili ahal izango
dira. Poligonoak goren daukan erpina baino gorago ez da poligono barneko
punturik egongo, eta alderantziz, erpinen Ymin baino beheragoko lerroetan
ere ez da poligonoaren barnealdeko pixelik egongo. Ezaugarri horrek lerroz
lerroko azterketarako lerro askotan ezer egin behar ez izatea dakar, eta kasu
askotan, poligonoa lerro gutxi batzuetara mugatzen denean, azterketa askoz
ere azkarragoa izango da.
Objektuen koherentziaz gain, lerro bakoitzaren koherentzia-ezaugarriak
kontuan hartzea komeni da; hau da, lerro bakoitza poligono barneko pixel-
-ilaraz eta poligonoz kanpoko ilaraz osatzen da, 2.9 irudian agertzen den
bezala. Hori horrela izanik, lerro bakoitzean barne eta kanpo arteko mu-
gak zein diren jakingo bagenu, mugatik mugara dauden pixelen kasuan ez
genuke azterketarik egin beharko; muga igarotzean poligono barnera sar-
tzen gara (ala poligonotik irteten gara) eta hurrengo mugara arteko pixelak
barnekoak (edo kanpokoak) direla badakigu, ondorioz azterketarik egin be-
harrik ez dugu izango. Beraz, gure arazoa mugak kokatzea da, baina egia
esan, arazo hori konpontzeko bide erraza ezagutzen dugu. Hau da, mugak po-
ligonoaren ertzak marraztean jaso genitzake, horrela, lerro bakoitzeko, lerroa
¾º¿º ÈÓÐ ÓÒÓ Ò Ñ ÖÖ Þ Ø Ø ØÞ 25
¾º ÖÙ Ð ÖÖÓ Ó ØÞ Ò Ù Ò Ô Ü Ð¹ Ð Ö Ö ÞØ Ò ÙØ ÔÓÐ ÓÒÓ º
mozten duten ertzen zerrenda jaso ahal izango dugu; zerrenda hori orde-
natuz gero lerroko lehenengo pixeletik hasi eta azkenekoraino joan gaitezke,
mugatik mugarainoko pixel-ilarak marraztuz. Azaldutako hori ongi ulertu
behar da: ertz bakoitzak lerroa non mozten duen jaso behar dugu, ez ertz
bakoitza adierazteko lerro horretan marraztutako pixelak; ertz bati lerro ba-
tean pixel bat baino gehiago egoki diezaiokegu, baina ertzak lerroa puntu
bakarrean mozten duela kontuan eduki behar da, bestela, ertza marrazteko
erabili diren pixel denak hartuko bagenitu, poligonoak lerro horretan be-
har baino ebaketa-puntu gehiago eduki ahal izango lituzke eta aipatutako
metodoa gaizki erabiliko genuke. Hori egiten duen algoritmoa ulerterraza
da; hiru betebehar nagusi izango ditu:
1. Aztertzen ari garen lerroak poligonoaren ertzekin dituen ebaketa-pun-
tuak lortu.
2. Ebaketa-puntuak x koordenatuaren arabera ordenatu.
3. Ebaketa-puntuen bikoteen arteko pixelak, poligono barnekoak bezala
marraztu, lehen esandakoaren arabera.
Orain arte azaldutakoaren arabera, objektuen koherentzia eta lerroaren
koherentzia kontuan hartzeak abiadura azkartzen duela ikus daiteke; baina
bada beste koherentziarik ere, lerro auzokideen arteko koherentziarena hain
zuzen. Hau da, lerro batetik hurrengora dauden ezberdintasunak oso txikiak
izan ohi dira, eta nolabait aurreko lerroaren informazioa erabiltzea lortuko
26 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ Ób
agenu, ziur aski abiadura azkartzea lortuko genuke. Horrek ez dauka ho-
rrela izan beharrik, baina memoria-arazoa daukaten makinekin lerro guztiei
dagozkien ebaketa-puntu guztiak jaso beharrean, lerroz lerro joaten diren al-
goritmoak erabili izan dira; horientzat lerro baten informazioa hurrengorako
berriz erabilgarria dela ikus daiteke, lerro bat mozten duen ertzak hurrengoa
ere moztu egingo baitu, aurrekoan bukatzen ez bada behintzat, eta gainera
ebaketa-puntua aurrekotik oso gertu egongo da, eta maldaren arabera kalku-
latu ahal izango dugu. i lerroan ertzak ebaketa xi puntuan baldin bazeukan,
orduan i + 1 lerroan xi+1 = xi + 1/m puntuan edukiko du ebaketa berria.
Beste era batera esateko, xi-ri x/y gehitu behar zaio. Jakina, hori marra
bat kalkulatzearen parekoa da eta, nahi izanez gero, zenbaki osoak erabil-
tzen dituen algoritmo baten bidez adieraz daiteke. Horretarako, xi balioari
gehitu behar zaion balioa zein den begiratzea komeni da. Hor zenbakitzailea
eta izendatzailea ageri dira, biak zenbaki osoak. Lerro bakoitzean ebaketa-
-puntua, xi, eta zenbakitzailea jaso behar dira, eta lerro batetik bestera
pasatzean aurreko lerroko zenbakitzaileari x gehitu behar zaio; horrela, lor-
tutako zenbakitzailea izendatzailea baino handiagoa bada, ebaketa-puntuari
1 gehitu eta zenbakitzaileari izendatzailea kendu behar zaio. Horrek ebaketa-
-puntuaren zati osoa emango digu. Zati osoa beharrean biribilketa lortu nahi
badugu, bi bider zenbakitzailea izendatzailea baino handiago denean gehi-
tuko dugu ebaketa-pixelaren balioa; eta, jakina, zenbakitzaileari izendatzai-
lea kentzean zenbaki negatiboa lor daiteke, baina beti ere izendatzailearen
erdia baino txikiagoa. Era horretan lan egitean, malda 1 baino txikiagoa
izateak ez du arazorik sortzen; zenbakitzailea handiagoa bada, agian, behin
baino gehiagotan kendu beharko diogu izendatzailea, eta ondorioz, 1 baino
gehiago gehitu beharko zaio ebaketa-pixelari. Hori guztia 2.10 algoritmoan
ikus daiteke.
Lerro auzokideen arteko koherentzia erabiliz, lerro-azterketaren algorit-
moa berehalakoa da. Ezagutu behar den informazioa, lerro horretan parte
hartzen duten ertzei dagokiena da. Bakoitzarentzat, 2.10 algoritmoak behar
dituen datuak jaso beharko dira; horrela, hurrengo lerrora pasatzean, ertza
bukatu ez bada behintzat, ebaketa-puntu berria kalkulatuko dugu. Algorit-
moak bi taula erabiltzen ditu; lehenengoan irudiko ertz guztiak jasoko dira,
bakoitza zein lerrotan hasten den adieraziz; bigarrenean, berriz, momentuko
lerroan parte hartzen duten ertzen informazioa edukiko dugu. Hasieran lerro
guztiak irudiko ertzen taulan egongo dira, eta lerroko ertzen taula hutsik
egongo da. Lerro bakoitza aztertzeko lerroari dagokion taulan, lerro horre-
tan hasten diren ertzak sartuko ditugu eta ertzen taulatik kendu; gainera,
¾º º Ð × Ò Ð Ó Ø Ó 27
void ebaketa berria( int *x,int *zbkitzailea,int x int y)
{
*zbkitzailea += x;
while (*zbkitzailea >= y) /* x > y gerta daiteke */
{*x ++;
*zbkitzailea- = y;
}
}
¾º½¼ ÖÙ ÖØÞ Ø Ò Ø ¹ÔÙÒØÙ Ø Ñ Ð Ö Ò ØÙ Ò Ø ¹ÔÙÒØÙ
ÖÖ Ð ÙÐ ØÞ Ò Ù Ò Ð ÓÖ ØÑÓ º
aurreko lerroko ertzak ere kontuan hartuko ditugu, baina ertz horietako-
ren bat bukatu egin bada, lerroaren taulatik kendu egin behar da. Horrela,
lerroaren taulan aurreko lerrotik datozen ertzak eta lerroan hasten direnak
egongo dira, lerroa zeharkatzen duten guztiak alegia. Ertz berriei dagokien
ebaketa-puntua berehalako da, lerro horretan baitaukate hasiera, eta aurre-
kotik datozenen ebaketa 2.10 algoritmoa erabiliz kalkula baitaiteke. Ebaketa
horiek guztiak kalkulatu ahala, lista ordenatu atean sar genitzake eta, ho-
rrela, binaka hartuz, poligonoaren barneko eta kanpoko pixel-ilarak berehala
marraztu ahal izango genituzke.
¾º Ð × Ò Ð Ó Ø ÓA
liasing izenez ezagutzen dena, gure garunean gertatzen den zerbait da: ob-
jektu bati dagokion marrazki diskretuan oinarrituz, beste objekturen bat
ikusten dugunean gertatzen da. Hau da, marrazki diskretu horren alias bat
ikusten dugu. Horren adibide garbia, marra zuzena bereizmen txikiko pan-
tailan adierazi nahi dugunean gertatzen da, marra zuzenaren ordez eskailera
moduko zerbait ikusten baitugu.
Aliasing efektuaren arrazoi nagusia, espazioko eremuaren laginketa bi-
dezko irudien adierazpidea da; hau da, irudia pixel-matrize baten bidez adie-
razi behar dugunez, espazioaren laginketa egin behar dugu, eta izatez jarraia
den irudia, jarraia ez den eta azalera jakin bateko pixel-matrizera itzuli be-
har dugu. Laginketa modura ulertzea garrantzitsua da, pixelaren azaleraren
zentroari dagokion intentsitatea baitagokio pixel osoari.
Beste era bateko aliasing berezirik ere ager daiteke; hori animazioan ger-
28 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ Ót
atzen da, eta hori ere jarraia den zerbait diskretu bihurtzearen ondorioa
da, denboran zehar (denbora jarraia da) pixel baten intentsitatearen gaineko
laginketa egiten baitugu. Segundoan 20 irudi erabiliko bagenitu, irudi ba-
koitzak segundoaren hogeiren bat bete behar luke, eta irudi hori sortzeko
denbora-zati horretako momentu jakin bat erabiltzen dugunez, momentu
horretan mugitzen ari den objektu txiki bat pixel batean egokituko balitz,
denbora-zati batean objektu txiki hori ikusiko genuke; gainera, posiblea da
objektu horrek hurrengo irudietako pixelen zentrorik ez ukitzea eta pixka ba-
tera, lauzpabost irudi beranduago, berriz ere pixelen baten zentroan agertzea.
Hori gertatuko balitz, pixel horiek dir-dir eginez ikusiko genituzke eta hori
ere aliasing modura har daiteke. Efektu horiek simulazio-kasuetarako oso
kaltegarriak izan daitezke, zeren horrelakoetan, batez ere aldaketen aurreko
jokaeren trebatzea baita helburua eta dir-dir egitea aldaketa baita. Aliasing
efektua zenbait kasutan oso erraz gertatzen da:
· Argitasun-aldaketa dagoenean. Batez ere objektuen borneetan, horiek
argitasun-aldaketen mugak izaten baitira eta gure begiek argitasunaren
aldaketak jasotzeko gaitasun handia baitaukate. Kolore-aldaketa baino
errazago bereizten dugu argitasun-ezberdintasuna; horrexegatik ger-
tatzen da batez ere borneetan. Kasu horren barnean sar genitzake
eskailera moduan ikusten diren marra zuzenak.
· Kolore-aldaketa askoko azaleretan ere gertatzen da, nahiz eta ez izan
aurrekoa bezain nabarmena.
· Objektu txikien eraginez animazioan dir-dir eginez ager daitezkeen pi-
xelak.
Irudien eraikuntza laginketa modura hartzeak, seinale-teoria erabili ahal
izatea dakar, eta horrela Fourierren teoria erabil dezakegu anti-aliasing al-
goritmoak garatzeko. Irudia f(x) funtzioak adierazten badu, bertako goi-
-frekuentziak kentzea komeniko litzateke; hori, k(x) iragazkiarekin konbolu-
zioa egitea izango litzateke. Konboluzioa egitea, Fourierren transformatuari
iragazkiari dagokion funtzioa biderkatzea eta ondoren alderantzizko trans-
formatua lortzea izango litzateke. Horrek irudia lausotzen du eta aldaketa
handiak (frekuentzia jakin batetik gorakoak) ezabatzen ditu. Ez gara era ho-
rretako azterketa teorikoetan sartuko, baina ordenadore bidezko irudigintzan
aliasing efektua desagertarazteko edo gutxitzeko erabiltzen diren metodo na-
gusiak azalduko ditugu:
¾º º Ð × Ò Ð Ó Ø Ó 29
· Gain-laginketa edo supersampling.
· Bi dimentsiotako anti-aliasing motako iragazkien hurbilketa egin eta
goi-frekuentzien ezabaketa egitea.
· Laginketa estokastikoa.
Aliasing efektuaren jatorria laginketa dela esan dugu; beraz, hori gerta
ez dadin onena laginketa hori ahalik eta jarraiena izatea komeni da. Horre-
tarako, ikuste-gailuaren menpe gaude eta teknologia muga da. Bereizmena
handituz doa baina hala ere bide horrek ez du arazoa konpontzen; irudiak
hobetu egingo ditugu, baina aliasing efektuarekin ezingo dugu bukatu.
¾º º½ Ò¹Ð Ò Ø
Hiru urratsetan egiten den prozesua da, urrats horiek ondokoak dira:
1. Irudi jarraiari ikuste-gailuaren bereizmena baino handiagoko laginketa
eragiten zaio; hau da, dauzkana baino pixel gehiago dauzkala suposatuz
irudi diskretua kalkulatzea izango litzateke, berezko pixel bakoitzeko
n × n kalkulatuz.
2. Laginketa horri iragazkiren bat eragiten diogu.
3. Horrela lortutako irudi diskretuarekin, ikuste-gailuari dagokion bereiz-
mena duen irudi diskretua lortzen da. Azken bi urratsak batera egiten
dira.
Ondorioz, azken irudiko pixel bakoitzaren balioa, bereizmen handiagoko
irudiaren zenbait pixel erabiliz lortu da. Ohikoa da ikuste-gailua baino hiru
aldiz handiagoko bereizmena erabiltzea, horrela pixel bakoitzerako 3 × 3 az-
pipixel erabil daitezke. Jakina, zenbat eta azpipixel gehiago kalkulatu, or-
duan eta lan handiagoa izango dugu gain-laginketari dagokion irudi diskretua
kalkulatzean, kalkuluen denbora n2
ordenan handitzen baita. Pixela kalku-
latzeko, azpipixel bakoitzari pisu bat egoki diezaiokegu; hau da, pisudun
iragazkia erabil daiteke.
Gain-laginketa metodoak n-ren balioan eta erabilitako iragazkiaren ara-
bera aldatzen dira. Batzuek batezbestekoa kalkulatzen dute; hala ere, emai-
tza hobeak lortzen dira pixelaren zentroaren inguruko azpipixelei pisu handi-
agoa ematen dieten iragazkiekin. Adibide gisa, 2.11 irudian dagoena ikus dai-
teke. Pixel baten balioa kalkulatzeko, azpipixel bakoitzaren balioa iragazkiak
30 ¾º Ã Ô ØÙÐÙ Ç Ò ÖÖ Þ Ó Ñ ÖÖ Þ Ø ¹ ÙÒØÞ Ó1
1
11
2
2
2
2 4
Bereizmen haundiarekin sortutako irudia
egokitutako pisuekin lortutako
pixelen balioak
pisua egokitzen dio
Iragazkia. Azpipixel bakoitzari
Iragazkiak azpipixelei
¾º½½ ÖÙ Ò¹Ð Ò Ø Ö Ò ÙÖÖ Ø× º
¾º º Ð × Ò Ð Ó Ø Ó 31
egokitzen dion pisuaz biderkatu behar da, eta ondoren guztiak batu. Beraz,
hori ere kontuan eduki beharreko eragiketa-multzo bihurtzen da. Adibidez
512 ×512 pixeleko irudia kalkulatzeko eta pixel bakoitzarentzat 5×5 azpipi-
xel erabili badira, 512 × 512 × 25 biderkaketa eta beste horrenbeste batuketa
egin behar dira. Horrelako iragazkiak erabiltzean, irudia lausotzen dugu,
gehiegizko aldaketak ekidinez. Zenbat eta iragazki zabalagoa erabili, orduan
eta gehiago lausotuko dugu; baina, era berean, orduan eta aliasing gutxi-
ago edukiko dugu. Bestalde, metodo horrek eskatzen duen memoria-tamaina
asko handitu daiteke Z-buffer bidezko irudi kalkulurako, eta horrek ez du
metodo horren alde jokatzen.
¾º º¾ Þ Ð Ö ¹Ð Ò Ø
Algoritmo horren oinarrian pixelaren azalera baino txikiagoko objektuen geo-
metria dago. Pixel bakoitzean irudi jarraiko zein azalera agertzen diren
kalkulatzen da eta bakoitzak pixelaren azaleraren zein zati betetzen duen.
Horrela pixel bati dagokion intentsitatea eta kolorea, bertan agertzen di-
ren azalera-zatien kolore eta intentsitateen araberakoak izango dira; azalera
gehien betetzen duenak eragin gehien izango du pixelean. Hori 2.12 irudian
ikusten da.
Horrela azalduta, algoritmoak oso erraza dirudi, baina egin behar dituen
kalkulu guztietan pentsatzen hasiko bagina, garestiegia dela konturatuko gi-
nateke. Kontuan izan behar dugu, pixel bati dagokion azaleraren arabera,
hor barnean zein objektu ikusten diren erabaki behar dugula; hau da, pixe-
laren azaleraren mugen barnean zein objektu ikus daitezkeen erabaki behar
da, ondoren, objektu horiek sakoneraren arabera ordenatu eta zeinek zein
estaltzen duen erabaki. Metodo hori azkartzeko, algoritmo ezberdinak sortu
izan dira. Horietako batek pixel baten azaleraren zatiak zein itxura izan
dezakeen mugatuta dauka (pixel osoa hartzen duena, hiruki-itxurakoa...) eta
bakoitzari pisu jakin bat egokitzen dio; horrela eginez, eOrdenadore bidezko irudigintza