Racunarska Grafika

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 39

Glava 1

OSNOVNE KOMPONENTE GRAFIKE


OBRADE
Raunarska graka nije potpuno originalna tema, jer za denisanje i reavanje problema
koristi neke ve uspostavljene tehnike kao to su geometrija, algebra, optika i ljudska
psihologija. Geometrija se upotrebljava da obezbedi okvir za opisivanje 2D i 3D pros-
tora, dok se algebarske tehnike koriste za denisanje i evaluiranje jednakosti vezanih za
odreeni prostor. Nauka o optici postavlja modele za opisivanje ponaanja svetlosti,
dok ljudska psihologija nudi modele za ljudsku viziju i percepciju boja.
Iako pomenuti opseg tema navodi korisnika da pomisli da je re o kompleksnoj
nauci, raunarsku graku je, u stvari, relativno lako razumeti, zahvaljujui primeni
posebnih tehnika koje se koriste za simulaciju virtuelnog sveta oblika, za skaliranje,
boje i pokrete iako se te tehnike zasnivaju na nekim osnovnim tehnikim principima.
Drugaije se i ne moe oekivati kada se ima u vidu da raunarska graka koristi u tako
specinim oblastima kao to su modelovanje molekula ili medicinska dijagnostika mada
se u ovakvim sluajevima pomenuti osnovni principi unapreuju posebnim tehnikama.
Postoje aspekti animacije na raunaru koji zahtevaju posebno matematiko i nauno
znanje, ali to ne bi trebalo korisnike da sprei da eksperimentiu sa takvim sistemom.
Interfejs izmeu korisnika i raunara se neprekidno razvija u pravcu izolovanja korisnika
od irelevantnih unutranjih kompleksnosti samog sistema.
1.1 Hijerarhija grakog softvera
Postoje raznorazne podele grakog softvera, od kojih je svaka podela pria za sebe.
Podela grakih alata koja ovde sledi je jedna od moguih, koja se rukovodi kriteriju-
mima postojeih aplikacija.
1.1.1 Jednostavnije grake biblioteke
Grake biblioteke omoguavaju pristup grakim komandama ili funkcijama. Grake
komande su denisane u nekom programskom jeziku (C, Java, C++, ili neki drugi), a
2
mogu da se primenjuju na razliitim platoformama. Jednostavnije grake biblioteke,
odnosno grake biblioteke nieg nivoa predstavljaju softverski interfejs za hardver.
Treba napomenuti da svaki graki alat pripada nekoj jednostavnijoj grakoj biblioteci.
U ove jednostavnije grake biblioteke spadaju:
Direct3D (DirectX) predstavlja set nezavisnih API interfejsa za Windows plat-
forme. API je akronim od engleskog naziva za programski interfejs aplikacije.
Biblioteka DirectX predstavlja grupu API interfejsa, s tim to treba napomenuti
da tu pripada i biblioteka Direct3D.
GKS (GKS-3D) je bibloteka za 2D graku sa ANSI/ISO standardom koji denie
metode za pravljenje slika na rasterskim ili vektorskim izlaznim ureajima. Biblio-
teka GKS-3D je sastavni deo biblioteke GKS koja omoguava izradu 3D objekata.
Mesa je 3D biblioteka sa API interfejsom koji je slian API interfejsu biblioteke
OpenGL. Njeno zaduenje je da emulira OpenGL komande na platformama koje
ne podravaju OpenGL. Mesa moe da se upotrebljava kao direktna zamena za
OpenGL.
MicroSystem 3D Graphic Tools predstavlja 3D biblioteku koja moe da se
upotrebi za razvoj programskih jezika Visual Basic i Visual C++.
OpenGL predstavlja primarno okruenje za razvoj interaktivnih 2D i 3D grakih
aplikacija. OpenGL je akronim od engleskog naziva za otvoreni graki jezik.
OpenGL for Java (GL4Java) mapira kompletan OpenGL 1.2 API i kompletan
GLU 1.2 API za Javu i integrie sve njihove funkcije u Javu kako bi mogle da se
koriste u ovom okruenju.
PHIGS je standardni 3D graki API. Trebalo bi napomenuti da su OpenGL i
Direct3D graki standard danas, koji dolaze sa veom podrkom i hardvera i
softvera. PHIGS se koristi za kompleksnije 3D aplikacije u tehnikim i komerci-
jalnim oblastima, ukljuujui proizvodnju, industrijski dizajn, tehniku analizu i
naunu vizualizaciju.
QuickDraw3D je biblioteka novijeg datuma koja je ugraena u QuickTime od
strane rme Apple Computer.
XGL je biblioteka koju je razvila rma SUN Microsystems. Ova biblioteka po-
drava veliki broj API interfejsa, ali i biblioteke, kao to su GKS i PHIGS.
1.1.2 Alati za vizuelizaciju
Alati za vizuelizaciju podrazumevaju grake alate koji kao izlaz imaju sliku i na taj
nain predstavljaju podatke i odgovarajue informacije. Jednostavno reeno, vizue-
lizacija upoljava graku da pravi slike kako bi se predstavili eljeni podaci. Brojni
komercijalni i besplatni programski paketi za vizuelizaciju pokrivaju razliite naune
oblasti: medicinu, mehaniku uida, biologiju, hemiju, ziku itd. Ovde su navedeni
samo oni koji se najee koriste:
3
3D Grapher ilustruje i reava kompleksne matematike jednaine u ravni i pros-
toru;
3D Studio VIZ se koristi u arhitekturi i industrijskom dizajnu;
3DField omoguava vizuelizaciju podataka;
Amira omoguava rad sa podacima iz medicine, biologije, hemije, zike i main-
stva uopte;
AVS omoguava vizuelizaciju podataka, kao i njihovu analizu;
Blueberry omoguava modelovanje terena (zemljita) na osnovu realnih poda-
taka;
Dice omoguava organizaciju podataka, kao i vizuelizaciju;
Enliten omoguava prikazivanje, analiziranje i manipulisanje kompleksnim sce-
narijima vizuelizacije;
Ensight omoguava prikaz i proraun mehanike uida, strukturalne analize, sa-
gorevanja, kao i elektromagnetike;
FAST omoguava dobijanje podataka iz numerikih simulacija;
Ferret omoguava okeanolozima i meteorolozima da analiziraju ogromne koliine
sloenih podataka;
Geomview omoguava vizuelizaciju i manipulisanje 3D geometrijskim objektima;
GNUPlot omoguava tampanje naunih podataka u razliitim formama;
IDL omoguava analizu podataka, vizuelizaciju, kao i razvoj aplikativnih plat-
formi;
Iris Explorer omoguava vizuelizaciju 3D podataka, manipulisanje njima, kao i
njihovu animaciju;
J/View 3Dpro omoguava vizuelizaciju interaktivnih podataka;
LandForm mapira podatke terena dobijene sa satelita i pravi 3D povri kako bi
napravio model terena;
MapRender3D generie realistine prikaze terena i okoline;
Mathematica omoguava numerika i simbolika izraunavanja, vizuelizaciju i
simulaciju;
Matlab omoguava analiziranje podataka i njihovu vizuelizaciju, numerika i
simbolika izraunavanja, kao i simulaciju u realnom vremenu;
Mvox omoguava vizuelizaciju slika u medicini;
4
Ncar pristupa podacima, analizira ih i vizuelizuje;
OpenDX omoguava stvaranje i vizuelizaciju naunih, tehnikih, medicinskih i
poslovnih podataka;
OpenGL Volumizer spada u C++ klasu i omoguava manipulaciju i prikazivanje
odreenih podataka;
OpenInventor/VRML omoguava 3D vizuelizaciju i animaciju;
PV-Wave omoguava manipulisanje i vizuelizaciju kompleksnih ili ekstremno
velikih tehnikih baza podataka;
Realax VR Studio omoguava simulacije i vizuelizacije izuzetnog kvaliteta;
ROSS omoguava rekonstrukciju 3D preseka i njihovu vizuelizaciju;
SciAn omoguava vizuelizaciju, pravljenje lmskih sekvenci i rad sa vektorskim
crteima;
Tecplot vri vizuelizaciju tehnikih podataka dobijenih raznim analizama, simu-
lacijama i eksperimentima;
VisAD omoguava interaktivnu vizuelizaciju i analizu numerikih podataka;
VRCharts omoguava vizuelizaciju numerikih podataka;
VTK omoguava vizuelizaciju i procesiranje slika.
1.1.3 Alati za modelovanje
Modelovanje je proces stvaranja 3D objekata gledajui realne podatke ili baratajui ima-
ginarnim objektima. Alati za modelovanje omoguavaju kreiranje virtuelnih objekata i
okruenja za CAD (CAD je akronim od engleskog naziva za projektovanje primenom
raunara), vizuelizaciju, obrazovanje, razne vrste obuka, itd. Postoji mnogo alata za
modelovanje, ali ovde e biti pomenuti oni koji se najee koriste:
3D MeNow kreira ljudska lica;
3D Studio Max omoguava animaciju i renderovanje, kao i kreiranje efekata za
igrice;
3D Studio VIZ omoguava arhitektonski i industrijski dizajn;
3Dom kreira vrsta tela (solide);
AC3D kreira objekte i scene;
ACIS 3D Toolkit kreira rsta tela i 3D povri;
Amapi3D omoguava NURBS modelovanje (NURBS je akronim od engleskog
naziva za neuniformne racionalne B-krivulje), renderovanje i animaciju;
5
Amorphium omoguava kreiranje 3D skupltura i omoguava slikarima da se
pokau;
Animation Master omoguava kreiranje lmova, virtuelnu realnost i poslovne
prezentacije;
AutoCAD je najkompletniji programski paket za modelovanje i projektovanje u
ravni i prostoru;
bCAD omoguava dizajn i renderovanje;
Beyond 3D omoguava kreiranje VRML modela (VRML je akronim od engleskog
naziva za jezik za modelovanje virtuelne realnosti) i animacije;
Blueberry omoguava modelovanje terena (zemljita) na osnovu realnih poda-
taka;
Body Paint 3D omoguava mapiranje ljudskih i ivotinjskih tela;
Bryce 3D omoguava modelovanje terena i prirodnih pojava;
Cinema 4D omoguava kreiranje sekvenci za lmove i televiziju, omoguava
kreiranje ljudskih likova, kao i multimedijalne sadraje;
CyberMotion 3D Designer je odlian za igrice i virtuelnu realnost;
DMesh omoguava modelovanje organskih predmeta;
Flesh omoguava oslikavanje likova;
Genesis3D kreira igrice u realnom vremenu;
ImageModeler omoguava kreiranje 3D modela iz ravanske slike;
LandForm mapira podatke terena dobijene sa satelita i pravi 3D povri kako bi
napravio model terena;
MapRender3D generie realistine prikaze reljefa;
Maya omoguava animaciju i virtuelnu realnost;
MindsEye podrava NURBS dizajniranje za operativne sisteme Linux i Unix;
Natural Scene Designer omoguava kreiranje drvea, oblaka, stena, bunja,
jezera i atmosferskih pojava;
ProEngineer omoguava skiciranje, modelovanje i prezentaciju u svim tehnikim
oblastima;
Rhino3D omoguava modelovanje;
TrueSpace omoguava kreiranje igrica i animiranog virtuelnog okruenja;
ZBrush omoguava dizajniranje u prostoru i renderovanje u realnom vremenu.
6
1.1.4 Alati za renderovanje
Renderovanje je proces stvaranja slika na osnovu grakih modela. Ovi alati ili gener-
iu 3D modele ili ih uitavaju sa vrstog diska prilikom kreiranja eljenih slika. Pored
geometrije modela, alati za rendering u izlaznu sliku ugrauju i osvetljenje, senke, tek-
sture, boje, prozirnost, kao i neke napredne mogunosti pojedinih programskih paketa.
Postoji mnogo alata za renderovanje, ali ovde e biti pomenuti oni koji se najee
koriste:
3D Studio Max omoguava animaciju i renderovanje, kao i kreiranje efekata za
igrice;
Amorphium omoguava kreiranje 3D skulptura i omoguava likovno izraavanje;
ARTlantis Render omoguava renderovanje i animaciju;
Blueberry omoguava modelovanje terena (zemljita) na osnovu realnih poda-
taka;
Bryce 3D omoguava modelovanje terena i prirodnih pojava;
Cinema 4D omoguava stvaranje sekvenci za lmove i televiziju, ljudskih likova,
kao i multimedijalnih sadraja;
CyberMotion 3D Designer je odlian za igrice i virtuelnu realnost;
Genesis3D kreira igrice u realnom vremenu;
Geomview omoguava vizuelizaciju i manipulisanje 3D geometrijskim modelima;
Imagine omoguava vizuelizaciju za lm i TV, kao i u komercijalne svrhe;
LightScape omoguava vizuelizaciju modela programskih paketa AutoCAD i 3D
Studio MAX;
MapRender3D generie realistine prikaze reljefa;
Maya omoguava animaciju i virtuelnu realnost;
Natural Scene Designer omoguava kreiranje drvea, oblaka, stena, bunja,
jezera i atmosferskih pojava;
Panard Vision omoguava izuzetno kvalitetno renderovanje;
RenderMan omoguava izradu kadrova za lmove;
Sart omoguava vizuelizaciju fraktala i slino;
TrueSpace omoguava kreiranje igrica i animiranog virtuelnog okruenja;
ZBrush omoguava dizajniranje u prostoru i renderovanje u realnom vremenu.
7
1.1.5 Alati za animaciju
Animacija je integralni deo raunarske grake. Veina programskih paketa za vizueli-
zaciju, modelovanje, renderovanje i simulaciju ima ukljuenu i animaciju. U klasinoj
animaciji redosled posla je sledei: pravi se scenario, kreiraju se kljune slike, denie
se zvuk koji treba ukljuiti, povezuju se slike i zvuk i, na kraju, vri se interpolacija
izmeu kljunih slika kako bi se dolo do kvalitetne animacije. Trebalo bi napomenuti
da raunarska animacija predstavlja promenu razliitih slika u odreenom vremenskom
periodu. Da bi animacija bila kvalitetna (bez skokova slika) trebalo bi smestiti najmanje
24 kljune slike u sekundi. Postoji mnogo alata za animaciju, ali ovde e biti pomenuti
oni koji se najee koriste:
3D Choreographer omoguava animaciju za lmove;
3D Studio Max omoguava animaciju i renderovanje, kao i kreiranje efekata za
igrice;
AIR omoguava renderovanje i animaciju;
Anim8OR omoguava 3D modelovanje i animaciju tih modela;
Animation Master omoguava kreiranje lmova, virtuelnu realnost i poslovne
prezentacije;
ARTlantis Render omoguava renderovanje i animaciju;
Beyond 3D omoguava kreiranje VRML modela i animacije;
Carrara Studio omoguava modelovanje, renderovanje i animaciju;
Cinema 4D omoguava stvaranje sekvenci za lmove i televiziju, stvaranje ljud-
skih likova i multimedijalnih sadraja;
CyberMotion 3D Designer je odlian za igrice i virtuelnu realnost;
Imagine omoguava vizuelizaciju za lm i TV, kao i u komercijalne svrhe;
Internet Character Animator slui za animaciju 3D likova;
Iris Explorer omoguava vizuelizaciju 3D podataka, manipulisanje njima, kao i
njihovu animaciju;
LightWave 3D omoguava animacije za televiziju, lmove i video igrice;
Maya omoguava animaciju i virtuelnu realnost;
OpenInventor/VRML omoguava 3D vizuelizaciju i animaciju;
Realmotion omoguava realne animacije za nezgode (automobilske, avionske,
eleznike), za lmske efekte i za scene unutar igrica;
Softimage omoguava animacije za lmove i igrice;
8
TrueSpace omoguava kreiranje igrica i animiranog virtuelnog okruenja;
WorldUp omoguava kreiranje i animiranje raznih VR svetova (VR je skraenica
od Virtual Reality).
1.1.6 Alati za simulaciju
Simulacija predstavlja proces kreiranja, izvrenja i vizuelizacije modela kako bi se komp-
letirale informacije o onome to treba rei u realnom ili imaginarnom svetu. Pod mo-
delom se podrazumeva matematiko, ziko ili tehniko predstavljanje sistema sa svim
njegovim karakteristikama. Postoji mnogo alata za simulaciju, ali ovde e biti pomenuti
oni koji se najee koriste:
20-sim simulira ponaanje dinamikih sistema uz graki prikaz;
3D Grapher ilustruje i reava kompleksne matematike jednaine u ravni i pros-
toru;
GL Studio omoguava simulaciju i obuku u okruenju virtuelne realnosti;
LS-DYNA omoguava dizajn automobila i simulira njihovo ponaanje sudara;
Mathematica omoguava numerika i simbolika izraunavanja, vizuelizaciju i
simulaciju;
Matlab omoguava analiziranje podataka i njihovu vizuelizaciju, numerika i
simbolika izraunavanja, kao i simulaciju u realnom vremenu;
Maya omoguava animaciju, simulaciju i virtuelnu realnost;
Realax VR Studio omoguava simulaciju, dizajn i vizuelizaciju visokog kvaliteta;
Simul8 omoguava planiranje, modelovanje, animaciju i simulaciju;
VEGA omoguava vizuelnu i audio simulaciju, virtuelnu realnost, kao i kvalitetnu
vizuelizaciju.
1.1.7 Alati za virtuelnu realnost
Postoje dve kategorije virtuelne realnosti (VR): kompleksnija VR i jednostavnija VR.
Kod kompleksnije VR korisnik ima specijalni ureaj na glavi ili posebne naoare. Prikaz
na tom ureaju prati pokrete glave i ljudski pogled u realnom vremenu. Jednostavnija
VR je jeftinija i "siromanija", jer nema posebnih ureaja i prikaz ne prati pokrete glave,
ali korisnik diktira kretanje kroz virtuelni svet. Sistem VR je i sistem za simulaciju koji
opisuje i simulira odreene aktivnosti iz realnog sveta u oblastima kao to su obuka,
obrazovanje i radno okruenje. Postoji mnogo alata za VR, ali ovde e biti pomenuti
oni koji se najee koriste:
Cryonics omoguava razvoj virtuelnog okruenja i razmenu putem Interneta sa
ostalim korisnicima;
9
DIVERSE je zajedniki API za programe virtuelnog okruenja i za potreban
hardver;
Maya omoguava animaciju i virtuelnu realnost;
MR Toolkit je grupa potprogramskih VR biblioteka;
Summit 3D omoguava kreiranje kompleksnog virtuelnog sveta;
Unrealty omoguava kretanje kroz virtualno okruenje;
VEGA omoguava vizualnu i audio simulaciju, virtuelnu realnost, kao i kvalitetnu
vizuelizaciju;
WorldUp omoguava kreiranje i animiranje raznih VR svetova.
1.1.8 Alati Web3D
Alati Web3D su graki alati koji omoguavaju isporuivanje grake putem veb pre-
traivaa, a dostupna je svakom korisniku Interneta. Ovi alati su doiveli najveu
ekspanziju i nije teko zakljuiti da su to alati budunosti to se tie obrazovanja,
vizuelizacije, kupovine i prodaje, komunikacija i sveukupnog okruenja. Mnogi Web3D
alati su postali dopunski ili dodatni moduli za veb pretraivae. Veina alata, kao
to su VRML pretraiva i Java3D programersko okruenje, razvijeni su u OpenGL-u
ili Direct3D-u. Ovi alati su odlini za mreu i mreno okruenje, jer korisnicima u
mrei omoguavaju istovetno virtuelno okruenje u realnom vremenu. Ovih alata ima
mnogo, svakodnevno se menjaju i dopunjuju, svakodnevno se pojavljuju novi, tako da
je iluzorno nabrajati ih.
1.1.9 Alati za konvertovanje formata
Danas ljudi ne ive samo u realnom svetu nego i u 3D virtuelnom svetu. Provodi se
mnogo vremena u sistemima virtuelne realnosti, igraju se igrice, gledaju se lmovi o
imaginarnim svetovima, a tu su i interkativne simulacije. Da bi se napravili modeli za
VR i da bi se taj svet VR distribuirao Internetom za razliite platforme, moraju postojati
3D graki fajlovi u kojima se uvaju informacije o modelima, scenama, svetovima i
animacijama. Tu se radi o mnogo fajlova u razliitim formatima, jer razliiti korisnici
koriste razliite programske pakete. Da bi se u takvu raznovrsnost uveo red, tu su
programi koji omoguavaju konverziju jednog grakog formata u drugi, bez gubitaka
podataka. Postoji mnogo alata za konvertovanje formata, ali ovde e biti spomenuti
samo oni koji se najee koriste:
3D Exploration omoguava pretraivanje Interneta, pregled i renderovanje u
raznim grakim formatima;
3D Win, AccuTrans, Crossroads i Wilbur omoguavaju konverziju 3D fajlova;
10
Guru 3D-Converter omoguava konverziju fajlova iz programa 3D Studio MAX
u DirectX fajlove;
InterChange omoguava konverziju formata i podrava oko 40 formata;
Materialize3D omoguava konverziju modela i formata;
NuGraf omoguava komponovanje scena, pregled i konvertovanje modela;
Polytrans omoguava uvoz/izvoz 3D fajlova;
Quick3D omoguava pregled, organizovanje i konvertovanje 3D modela.
1.2 Graki API interfejs
Postavlja se pitanje ta je API. API predstavlja skup rutina koje aplikativni program
koristi da upravlja izvravanjem procedura od strane operativnog sistema raunara.
Podela programskih interfejsa aplikacija bie obavljena prema proizvoaima.
1.2.1 Jednostavni API
U grupu jednostavnih API interfejsa spadaju: IrisGL, OpenGL i MesaGL.
IrisGL je jednostavniji API koji je ranije bio poznat pod nazivom Iris 3D API.
Ovaj graki interfejs sadri u sebi 390 funkcija koje su implementirane u grakom
modu. Naslednik ovog APi-ja je OpenGL.
OpenGL je moda najpoznatiji graki API. Uvela ga je 1992. godine rma Silicon
Graphics, kao opti sistem za CAD i 3D API za X-terminale zasnovane na operativnom
sistemu Unix. OpenGL se razvio iz SGI-jeve vlasnike grake biblioteke IrisGL. U prvo
vreme, upotreba OpenGL bila je ograniena na poslovne primene, kao to su industri-
jsko, interno i mehaniko projektovanje, kao i na statistike i naune analize. Meutim,
API se utemeljio u oblasti raunarskih igara. Svi glavni PC paketi za 3D animaciju, pa
ak i neki od jeftinijih proizvoda te vrste, sada podravaju OpenGL.
OpenGL API je projektovan da moe da podri napredne grake tehnike za re-
alistian prikaz, kao to su preslikavanje tekstura (sposobnost da se primeni slika na
graku povrinu), uklanjanje nazubljenosti, transparentnost, zamagljivanje, osvetlja-
vanje (sposobnost da se prorauna obojenost povrine kada su na nju primenjeni razliiti
modeli osvetljavanja iz jednog ili vie izvora svetlosti), glatko senenje (sposobnost da
se proraunaju efekti senenja kada svetlost pada na povrinu pod uglom, to rezultuje
nim razlikama u nijansama boje na povrini), zamagljivanje pokreta i transformacija
za modelovanje (sposobnost promene mesta, veliine i perspektive objekta u trodimen-
zionalnom koordinatnom prostoru).
Skup njegovih osobina je slian onome koji ima Direct3D, ali je OpenGL API nieg
nivoa od svog rivala, obezbeujui vrlo no upravljanje osnovnim elementima 3D scene,
kao to su informacije o takama i trouglovima. Aplikacija u OpenGL mora da obezbedi
sve geometrijske informacije za svaku od primitiva (taka, linija ili trougao) u sceni,
kao i za efekte koji e se primeniti na primitive (boja, transparentnost, zamagljivanje
11
itd.). Nivo upravljanja koji se daje programerima je glavni inilac koji stoji iza tvrdnje
da je sa OpenGL API interfejsom mnogo lake praviti aplikacije nego sa Direct3D, kao
i da je to mnogo pouzdaniji proizvod na razliitim hardverskim platformama.
U sutini, postoje dva nivoa za hardverski ubrzanu podrku OpenGL-u. To su ICD
(instalabilni klijentski upravljaki programi) koji ubrzavaju osvetljavanje, transforma-
cije i rasterizaciju i MCD (mali klijentski upravljaki programi) koji podravaju samo
rasterizaciju. Dok su MCD laki za prodavce hardvera, ICD nude bolju performansu.
MesaGL je graka biblioteka sa API interfejsom i veoma je slina OpenGL-u.
Ovaj API koristi sintaksu OpenGL-a, s tim to je za to bila potrebna dozvola rme
Silicon Graphics, Inc. (SGI).
1.2.2 Kompleksniji API
U ovu grupu grakih programskih interfejsa aplikacija (API-ja) spadaju: Open In-
ventor, OpenGL Optimizer, Cosmo3D, OpenGL++ i Simple Scene Graph.
Open Inventor je objektno orijentisan API koji nudi reenja problema koji se jav-
ljaju prilikom programiranja interaktivne grake. Predstavlja programski modul koji se
zasniva na bazama podataka 3D scena to dramatino pojednostavljuje programiranje
grake. U sebi sadri bogat komplet objekata kao to su kocke, poligoni, tekst, mate-
rijali, kamere, svetla, 3D prikaze i editor koji poveava brzinu programiranja i poveava
programske sposobnosti samog korisnika.
OpenGL Optimizer poboljava vizuelizaciju kompleksnih 3D modela. Na taj
nain, programeru je omogueno da pravi aplikaciju koju moe vizuelno da kontrolie i
gde moe interaktivno da utie na bazu podataka. Ovom API-ju su dodate tehnologije
koje se zovu ClearCoat i RealityMapping. Tehnologija ClearCoat je revolucionarna nova
tehnologija koja proizvodi prirodan prikaz odlinih materijala kao to su boja, plastika i
staklo. Tehnologija RealityMapping je revolucionarno nova tehnologija 3D softverskog
renderovanja kako bi se sjajne povrine prikazale kako treba.
Cosmo3D je kratko vreme bio samostalanAPI, a onda je integrisan u OpenGL
Optimizer.
OpenGL++ predstavlja skup funkcija, koje su pisane u programskom jeziku C++,
koji omoguava 3D grakom sistemu OpenGL-a da podri objektno orijentisane struk-
ture podataka. Ovaj projekat je rezultat saradnje rmi SGI, IBM i Intel, koje su reile
da naprave kompleksni API koji e podravati OpenGL. Rad na ovom API interfejsu
prekinut je kada je rma SGI prekinula ovu saradnju i sa rmom Microsoft poela da
razvija API pod nazivom Fahrenheit, koji je, takoe, propao.
Simple Scene Graph (SSG) je API koji je trebalo da postane sastavni deo
OpenGL-a, koji je koristio programski jezik C++ i koji je mogao da radi sa GLUT-
om (OpenGL Utility Toolkit). SSG je sadrao biblioteku jednostavnih matrica i vektora
i podravao je neka testiranja.
1.2.3 Cosmo API
Treba napomenuti da Cosmo nije graki API. Pitanje je da li Cosmo moe da se
nazove grakim API-jem u pravom smislu zato to je Silicon Graphics, u nastojanju
12
da iskoristi prednosti Jave, VRLM 3D okruenja i raznih multimedijalnih elemenata
za razvoj prestinih aplikacija i prezentacija, napravio Cosmo. graki konglomerat
koji se, u stvari, sastoji od vizuelizacije kompleksnih naunih i poslovnih podataka,
poboljane vizuelne komunikacije, kao i mogunosti da razvijaju igrice ili interfejse za
igrice. Sastavni deo ovog API-ja predstavljaju sledei proizvodi:
Cosmo Create je sistem koji kombinuje 2D slike, 3D sekvence virtuelne realnosti,
tekst i ostale elemente kako bi napravio multimedijalnu stranicu za Internet ili
proizvod.
Cosmo Player omoguava prikazivanje ili pretraivanje prezentacije koja je razvi-
jena upotrebom Cosmo API-ja. Treba napomenuti da ovaj proizvod radi na svim
operativnim sistemima.
Cosmo Code omoguava vizuelno okruenje za ve postojee Java kodove pri-
likom stvaranja multimedijalne prezentacije.
Cosmo Worlds omoguava ukljuivanje sledeih stvari u multimedijalnu pre-
zentaciju: svetlosne efekte, vie izvora svetlosti, zvuk, ogromnu biblioteku boja,
materijala i tekstura, kao i primene slika iji je autor sm programer.
Cosmo MediaBase omoguava programeru lagano upravljanje fajlovima koji
uestvuju u prezentaciji.
1.2.4 Fahrenheit API
Prvobitno najavljen poetkom 1998. godine, Fahrenheit je trebalo da se sastoji od tri
komponente. Prva je Fahrenheit Scene Graph, koja je po funkciji slina reimu Retained
Mode iz Direct3D. Ona omoguava da se prilikom razvoja programer koncentrie na
pravljenje ukupne scene, a ne na realistino prikazivanje pojedinanih poligona. Gotovo
u isto vreme bio je uveden FLM (Fahrenheit Large Model Visualisation, za vizuelizaciju
velikih modela), to predstavlja kompleksniji API ili API vrlo visokog nivoa, projektovan
za CAD i profesionalne primene koje podrazumevaju strukture kao to su zakrivljene
povrine. Najznaajnija komponenta, meutim, bie uvedena malo kasnije. Ta kompo-
nenta je FLL (Fahrenheit nieg nivoa), to predstavlja jednostavniji API ili API niskog
nivoa. Bavi se osnovnim upravljanjem geometrijom ali, to je najvanije, zamenie
Direct3D Immediate Mode i radie zajedno sa OpenGL-om.
1.2.5 Microsoftov API
Graka tehnologija je oblast industrije PC raunara koja se posebno brzo razvija,
sa novim skupovima ipova, novim revizijama skupova ipova i ak potpuno novim
tehnologijama koje se pojavljuju tempom koji zvoni na uzbunu. Ovo predstavlja prob-
lem za primene u oblastima gde treba iskoristiti prednosti najnovijeg 3D hardvera, jer
je apsolutno nemogue za bilo koga ko radi na razvoju aplikacija da pie softver u
originalnom kodu za svaki graki procesor.
Reenje je u programskom interfejsu aplikacije, API-ju. API radi kao posrednik
13
izmeu aplikacionog softvera i hardvera na kome se on izvrava. Programer pie kd
koji na izlazu daje podatke API drajveru putem standardizovanih komandi, a ne direk-
tno preko hardvera. Drajver, napisan od strane proizvoaa hardvera, onda prevodi taj
standardni kd u originalni format koji poseban, dati model hardvera moe da razume.
Prvi put predstavljen 1995. godine, DirectX je integrisani skup alata za pro-
gramiranje, projektovan tako da pomogne programerima da naprave niz multimedijskih
aplikacija za platformu operativnog sistema Windows. On pokriva gotovo sve aspekte
multimedije i u vreme DirectX 7.0 obuhvatao je sledee glavne komponente:
Direct3D za 3D graku u realnom vremenu;
DirectDraw za 2D graku;
DirectSound za audio reprodukciju;
DirectPlay za mreno povezivanje (posebno za raunarske igre za vie uesnika
preko interneta);
DirectInput za komandne palice i druge sline ureaje;
DirectMusic za muzike podatke zanovane na porukama.
DirectX 8.0 je uveden krajem 2000. godine i spojio je DirectSound i DirectMusic u kom-
ponentu DirectX Audio, dok su do tada razdvojene funkcionalnosti za 2D i 3D graku,
DirectDraw i Direct3D spojene u komponentu DirectX Graphics. Tada je, takoe,
komponenta DirectShow, ranije implementirana kao poseban API, postala zvanina
komponenta DirectX.
Microsoft je uspeo da napravi i DirectX (verzija 9.0) kako bi zadovoljio veinu ko-
risnika koji su traili poboljanje performansi svojih raunara u igranju akcionih igrica
i korisnika koji su eleli da gledaju video prezentacije i animacije kod kue na svojim
personalnim raunarima.
Klju za nain na koji Direct3D dozvoljava razvijaocu raunarske igre da radi neza-
visno od hardvera PC raunara je njegov HAL (Hardware Abstraction Layer), sloj za
apstrakciju hardvera koji kao efekat ima nezavisno pisanje softvera. HAL obezbeuje
spregu sa pogodnostima koje su iroko implementirane u 3D grakom hardveru i
dozvoljava proizvoaima da naprave drajvere koji povezuju HAL sa hardverom. To
omoguava Direct3D aplikacijama da iskoriste osobine veine hardverskih ureaja hard-
vera bez potrebe da se piu za svaki posebno.
U protonoj obradi za realistian prikaz Direct3D, geometriju 3D objekata obrauje
centralna procesorska jedinica glavnog raunara pre nego to 3D akcelerator pone da
prikazuje scenu na ekranu. Tokom 1998. godine - kada su se proizvoai ipova suma-
nuto utrkivali za pravo da se mogu pohvaliti da imaju najbri 3D akcelerator - DirectX
(verzija 5) je brzo postao usko grlo u procesu 3D realistinog prikaza. Kako je situacija
postala jo gora sa pojavom 3D ipova tree generacije, Microsoft je paljivo preispitao
API u DirectX za transformaciju i osvetljavanje da bi poboljao ekasnost geometrijske
obrade i uravnoteio arhitekturu sistema. DirectX 6.0 (u stvari, njegovo peto izdanje),
bio je uveden u leto 1998. godine i ponudio je nove osobine za poboljanje realistinog
14
prikaza kod raunarskih igara i modelovanja.
esta verzija komponente Direct3D podrava mogunost novijih grakih kartica
da izvode renderovanje sa vie tekstura u jednom prolazu, to znaajno smanjuje vreme
potrebno da bi se primenile mape tekstura. Ona, takoe, ukljuuje novije tehnike za
dodavanje realnosti 3D scenama, kao to su anizotropno ltriranje, koje dodaje ele-
ment dubine trilinearnom ltriranju, i Bump preslikavanje, koje stvara iluziju "realnih"
tekstura i izvora svetlosti na ravnim povrinama. Trend za objedinjavanje osobina
OpenGL-a nastavio se sa operacijama postavljanja slika na 3D scenu, a ne tekstura na
pojedinane 3D objekte.
U borbi za prevlast u areni 3D grake za PC raunare, postoji Direct3D u jednom
uglu, takmiara koji se oslanja na Microsoftovu veliku industrijsku snagu, i OpenGL u
drugom, sa manje guenja na platformi operativnog sistema Windows, ali sa oigledno
veom podrkom ljudi iz razvoja. U fazama uobliavanja DirectX (verzija 7.0) izgledalo
je da e se te suprotnosti usmeriti ka razumnom reenju, sa vestima da su se Microsoft
i SGI udruili da naprave neto to se zove Fahrenheit. Meutim, kada je DirectX
(verzija 7.0) doao na trite 1999. godine, uprkos nastavljanju trenda objedinjavanja
osobina OpenGL-a, izgledalo je da su se izgledi za Fahrenheit smanjili.
Pored toga to je bio optimizovan da radi 20% bre od svog prethodnika, DirectX
(verzija 7.0) je ukljuio i izvestan broj novih osobina. Najvanija meu njima je podrka
za hardverski ubrzanu transformaciju i osvetljavanje koje podrava veina 3D grakih
kartica najnovije generacije, a posebno one zasnovane na skupovima ipova GeForce
256 rme nVidia i S3 rme Savage. S obzirom na to da transformacija i osvetljavanje
predstavljaju zadatke u savremenim raunarskim igrama koji zahtevaju najvie rada
centralne procesorske jedinice, preusmeravanje tog posla na namenski 3D akcelerator
oslobaa znaajnu koliinu procesorovog kapaciteta za druge zadatke - to dozvoljava
da se u razvoju ugradi vie detalja u realistino prikazivanje i vie specijalnih efekata
koji trae intenzivno angaovanje procesora.
DirectX (verzija 8), koji se pojavio krajem 2000. godine, uveo je vei broj vanih
promena u sledeim oblastima:
dalje pojednostavljenje inicijalizacije i upotreba Direct3D API-ja, prilagoava-
nje modela koje nudi Direct3D mogunostima najnovijeg hardvera i uklanjanje
podrke nasleenim spregama;
proirenje sprege Direct3D u nove 3D akceleratorske tehnologije, kao to su volu-
metrijske teksture, realistino prikazivanje sa vie uzoraka (ukljuujui i podrku
za T-bafer) i tako dalje;
uvoenje novih principa obrade podataka: senenja, kako na nivou piksela, tako
i na nivou geometrijskih podataka.
1.2.6 Intelov API
Kada se pomene rma Intel, prvo na ta se pomisli su procesori. Ova rma se bavi i
kreiranjem API-ja, a ovde e biti pomenuta dva: 3DRender i Intel Scene Manager.
3DRender (3DR) je Intelova 3D graka biblioteka koja je optimizirana za rad
15
sa Pentium procesorima. Ta biblioteka ima sledee osobine: podrava vie od esnaest
svetlosnih izvora, omoguava raznorazno mapiranje, omoguava primenu atmosferskih
uslova i padavina, omoguava primenu transparentnosti, podrava operativne sisteme
Windows 95 i Windows NT, besplatna je.
Intel Scene Manager (ISM) je API koji je jo uvek u razvojnoj fazi i slian je
OpenGL-u.
1.2.7 Sunov API
Internetove tehnologije i programski jezik Java doveli su do fundamentalnih promena
u nainu dizajniranja i razvoja aplikacija. Java ima slian izgled kao jezici C ili C++.
Programeri koji imaju iskustvo sa ovim jezicima nee imati problema da naue Javu.
Naredbe kontrole toka i funkcija operatora su skoro identine. Meutim, za razliku od
C-a, Java je objektno orijentisan programski jezik koji je redukovao neke funkcije C-a pa
je zato relativno mali. Java3D je API koji se koristi za pisanje 3D grakih aplikacija ili
3D apleta za veb. Ovaj API daje korisniku veliku slobodu pri kreiranju i manipulisanju
3D geometrijom i omoguava primenu mnogih alata za denisanje potrebnih struktura.
Java3D API je nastao kao posledica saradnje sledeih rmi: Silicon Graphics, Intel
Corporation, Apple Computers i Sun Microsystems.
1.2.8 Appleov API
Firma Apple Computers se bavi raunarima, ali odreeni njeni segmenti se bave i razvo-
jem softvera. Jedan segment je stvorioi API pod nazivom QuickDraw3D (QD3D).
Ovaj API omoguava kreiranje 3D grake na Apple raunarima i renderovanje u real-
nom vremenu. On podrava skoro sve matine ploe sa svim hardverskim dodacima
koje proizvodi pomenuta rma.
1.2.9 HP-ov API
to se tie rme HP i njenih API-ja koje razvija, vrlo je malo informacija. Najosnovnije
informacije postoje o sledea etiri API-ja:
Starbase je originalni 3D API rme HP i slian je OpenGL-u, ali je uraen na
viem nivou;
PHIGS je API koji je podravao stariji industrijski standard (ISO) i ovaj API se
vie ne koristi;
PEX je varijacija gore pomenutog API-ja pod nazivom PHIGS koji je predvien
da radi na serverima;
DirectModel je slian OpenGL Optimizeru, ali je, u meuvremenu, otkazan i
bie integrisan u ve pomenuti FLM za vizualizaciju velikih objekata.
16
1.2.10 Ostali API interfejsi
Ovde e biti pomenuti jo neki programski interfejsi koji se pominju u literaturi i u
raznim lancima, a proizvoai su razliiti. O nekima ima vie, a o nekima ima manje
informacija, ali ovde e biti samo nabrojani oni koji se najee pominju, uz osnovne
informacije:
Heidi je API rme Autodesk koji omoguava veu brzinu i ekasnost programa
da prikae i odtampa eljene informacije. Ovaj API je primarna komponenta
programa: AutoCAD, 3DS MAX, 3D Studio VIZ, Volo View, Volo View Express,
a sadran je i u DWF formatu i HDI razvojnom sistemu za kvalitetniju tampu.
RenderMan je API rme Pixar koji omoguava fotorealistino renderovanje i u
kome se nalazi moan programski jezik koji je senenje doveo do savrenstva.
RenderWare, BRender i GKS su stariji API-ji koji su omoguavali renderovanje,
s tim to vie nisu u upotrebi.
RealityLab je API koji omoguava softversko renderovanje. Razvio ga je Micro-
soft i implementirao u Direct3D.
MultiGens GameGen je ogroman i krajnje kompleksan API koji se koristi za
razvoj igrica, s tim to bi trebalo napomenuti da je i za dananje uslove preskup.
1.3 Geometrijske transformacije
Osnovne 2D i 3D geometrijske transformacije, koje se koriste u raunarskoj graci, kao
to sutranslacije, skaliranja i rotiranja veoma su bitne za veinu grakih aplikacija. Ove
transformacije su sastavni deo veine grakih programa, kao i mnogih potprograma.
1.3.1 2D transformacije
Korisnik moe da translira taku u XY ravni do nove pozicije dodavanjem neke veliine
koordinatama take. Ako treba taku sa koordinatama P(x, y) pomeriti za veliinu d
x
paralelno X osi i za veliinu d
y
paralelno Y osi do nove take P

(x

, y

), onda to moe
da se denie izrazima:
x

= x +d
x
y

= y +d
y
(1.1)
Ako se deniu matrice
P =
_
x
y
_
P

=
_
x

_
T =
_
d
x
d
y
_
(1.2)
onda izrazi (1.1) mogu preciznije da se izraze kao:
P

= P +T (1.3)
17
Korisnik moe da translira ceo objekat primenjujui izraze (1.1) na svaku taku ob-
jekta. Svaka linija objekta je sastavljena od beskonano mnogo taaka, onda bi proces
translacije trajao izuzetno dugo. Dovoljno je da se transliraju krajnje take linija i da se
iscrta linija izmeu novih, transliranih taaka; ovaj princip vai i za skaliranje i rotiranje.
Na slici 1.1 prikazano je transliranje kuice za vrednost (3, 4).
Slika 1.1. Transliranje
Take mogu da budu skalirane ili mogu da im se promene veliine (vrednosti) samo
po x ili samo po y osi (neproporcionalno) ili i po x i po y osi za istu vrednost (propor-
cionalno). Promena veliine se postie mnoenjem sa s
x
du X ose i mnoenjem sa s
y
du Y ose:
x

= s
x
x y

= s
y
y (1.4)
U formi matrica izraz postaje:
_
x

_
=
_
s
x
0
0 d
y
_

_
x
y
_
ili P

= S P (1.5)
gde S predstavlja matricu u izrazu (1.5).
Na slici 1.2 kuica je skalirana vrednou
1
2
po X osi i vrednou
1
4
po Y osi.
Slika 1.2. Skaliranje
Treba napomenuti da se skaliranje obavlja oko koordinatnog poetka, to znai da je
kua manja i blia koordinatnom poetku. Ako je faktor skaliranja vei od 1, onda je
kuica vea i udaljenija od koordinatnog poetka. Proporcije kuice se menjaju ako su
faktori skaliranja razliiti po osama, tj. s
x
= s
y
. Proporcije kuice se ne menjaju ako
18
su faktori skaliranja isti po osama, tj. s
x
= s
y
.
Take mogu da se rotiraju oko koordinatanog poetka za neki ugao . Matema-
tika denicija rotiranja je:
x

= x cos ysin y

= x sin +ycos (1.6)


U formi matrica izraz postaje:
_
x

_
=
_
cos sin
sin cos
_

_
x
y
_
ili P

= R P (1.7)
gde R predstavlja matricu u izrazu (1.7). Na slici 1.3 prikazana je rotacija kuice za
45

oko koordinatnog poetka.


Slika 1.3. Rotiranje
Pozitivne vrednosti ugla rotacije se mere u suprotnom smeru od smera kretanja kazaljke
na satu, od pozitivnog smera X ose. Za negativne vrednosti (mere se u smeru kretanja
kazaljke na satu) mogu jednakosti
cos() = cos i sin() = sin
da se iskoriste kako bi se modikovali izrazi (1.6) i (1.7). Izraz (1.6) je lako dobiti sa
slike 1.4, gde se taka P(x, y) rotiranjem za ugao transformie u taku P

(x

, y

).
Slika 1.4. Jednaina rotiranja
Zbog toga to se radi o rotiranju oko koordinatnog poetka, rastojanje od koordinatnog
poetka do taaka P i P

je isto (na slici 1.16 oznaeno je sa r). Primenom osnovnih


pravila trigonometrije, dolo se do izraza:
x = r cos i y = r sin (1.8)
19
i
x

= r cos( +) = r coscos r sinsin


y

= r sin( +) = r cossin +r sincos (1.9)


Zamenom izraza (1.8) u izraz (1.9) dobija se izraz (1.6).
1.3.2 Homogene koordinate i matrice u 2D transformacijama
O matrinim prezentacijama transliranja, skaliranja i rotiranja ve je bilo rei, i one
imaju oblik: za transliranje P

= P+T, za skaliranje P

= S P, i za rotiranje P

= R P.
Oigledno je da se transliranje tretira drugaije (kao zbir lanova) od skaliranja i roti-
ranja (kao proizvod lanova). Da bi se ovo pojednostavilo, ide se na to da se sve tri
transformacije tretiraju identino. U tom pogledu bitnu ulogu su imale homogene
koordinate i tu se sve transformacije tretiraju kao proizvodi. Homogene koordinate su
razvijene zbog raunarske grake i najpre su primenjene tu. Razni graki potprogrami
i procesori rade primenjujui homogene koordinate i pomenute transformacije.
U homogenim koordinatama take imaju i treu koordinatu. Umesto da taka bude
prikazana parom brojeva (x, y), u homogenim koordinatama taka je prikazana sa tri
broja (x, y, W). U isto vreme, za dve homogene koordinate (x, y, W) i (x

, y

, W

)
se kae da su iste ako se jedna koordinata dobija mnoenjem druge. Tako koordinate
(2, 3, 5) i (4, 6, 10) predstavljaju istu taku, koja je prikazana sa dva razliita kompleta
brojeva. Oigledno je da svaka taka ima neogranien broj prezentacija unutar ho-
mogenih koordinata. Vano je napomenuti da barem jedna homogena koordinata mora
da bude razliita od nule, to znai da nije dozvoljena taka (0,0,0). Ako je koor-
dinata W razliita od 0, onda vrednosti taaka mogu da se podele sa tom vrednou i
da se dobije jednakost:
(x, y, W) =
_
x
W
,
y
W
, 1
_
Kada je W = 0, onda moe da se obavi ovo deljenje i brojevi x/W i y/W se zovu
Dekartove koordinate homogenih taaka. Take sa W = 0 se nazivaju take u besko-
nanosti i takve take se nee ovde razmatrati.
Uobiajeno je da tri koordinate predstavljaju taku u 3D prostoru, ali ovde te
koordinate predstavljaju taku u 2D prostoru. Veza je sledea: ako se uzmu u obzir
sve koordinate koje predstavljaju istu taku, sve koordinate tipa (tx, ty, tW), gde je
t = 0, onda se dobija linija u 3D prostoru. Zakljuak je da svaka homogena taka
predstavlja liniju u 3D prostoru. Ako se homogenizuju take (deljenjem sa W),
onda se dobijaju take sa koordinatama (x, y, 1). To znai da homogenizovane take
formiraju ravan koja je denisana jednainom W = 1 u (x, y, W) prostoru. Slika 1.5
prikazuje ovu relaciju. Take u bekosnanosti nisu prikazane u ovoj ravni.
20
Slika 1.5. XYW homogeni koordinatni prostor
Kada se tako predstave homogene take, onda transformaciona matrica, koja mnoi
vektor jedne take kako bi se dobio vektor druge take, mora da bude 3 3. U formi
matrice 3 3 za homogene koordinate, izraz transliranja (1.1) postaje:

1 0 d
x
0 1 d
y
0 0 1

x
y
1

(1.10)
Transponovana matrica je matrica kod koje redovi i kolone menjaju svoja mesta i kod
koje mora da se zadovolji jednakost:
_
A
T
_
1
=
_
A
1
_
T
Ako se primene transponovane matrice, onda je:
(M P)
T
= P
T
M
T
Jednaina (1.10) moe da se predstavi u obliku:
P

= T (d
x
, d
y
) P (1.11)
gde je:
T (d
x
, d
y
) =

1 0 d
x
0 1 d
y
0 0 1

(1.12)
ta se deava kada se taka P translira pomou T (d
x
1
, d
x
2
) do take P

, a onda se
translira pomou T (d
x
2
, d
y
2
) do take P

? Ono to se intuitivno oekuje je transliranje


tipa T (d
x
1
+d
x
2
, d
y
1
+d
y
2
). Da bi se ovo potvrdilo, mora da se krene od:
P

= T (d
x
1
, d
y
1
) P (1.13)
P

= T (d
x
2
, d
y
2
) P

(1.14)
Ako se izraz (1.13) zameni u izrazu (1.14), dobija se:
P

= T (d
x
2
, d
y
2
) [T (d
x
1
, d
y
1
) P] = [T (d
x
2
, d
y
2
) T (d
x
1
, d
y
1
)] P (1.15)
21
Proizvod matrica T (d
x
2
, d
y
2
) T (d
x
1
, d
y
1
) je:

1 0 d
x
2
0 1 d
y
2
0 0 1

1 0 d
x
1
0 1 d
y
1
0 0 1

1 0 d
x
1
+d
x
2
0 1 d
y
1
+d
y
2
0 0 1

(1.16)
Oekivano transliranje je zaista tipa T (d
x
1
+ d
x
2
, d
y
1
+d
y
2
). Ovaj proizvod matrica
ima razne nazive, ali ovde e se koristiti naziv kompozicija matrica T (d
x
1
, d
y
1
) i
T (d
x
2
, d
y
2
).
Slino ovome, jednaina skaliranja (1.4) moe da se predstavi u matrinoj formi:

s
x
0 0
0 s
y
0
0 0 1

x
y
1

(1.17)
Denisanjem
S(s
x
, s
y
) =

s
x
0 0
0 s
y
0
0 0 1

, (1.18)
dobija se
P

= S(s
x
, s
y
) P (1.19)
Kao to je ranije uspeno transliranje predstavljeno sabiranjem, ovde se oekuje da e
se uspeno skaliranje predstaviti mnoenjem. Ako je poznato:
P

= S(s
x
1
, s
y
1
) P (1.20)
P

= S(s
x
2
, s
y
2
) P

(1.21)
i ako se izraz (1.20) zameni u izrazu (1.21), onda se dobija:
P

= S(s
x
2
, s
y
2
) [S(s
x
1
, s
y
1
) P] = [S(s
x
2
, s
y
2
) S(s
x
1
, s
y
1
)] P (1.22)
Proizvod matrica S(s
x
2
, s
y
2
) S(s
x
1
, s
y
2
) je:

s
x
2
0 0
0 s
y
2
0
0 0 1

s
x
1
0 0
0 s
y
1
0
0 0 1

s
x
1
s
x
2
0 0
0 s
y
1
s
y
2
0
0 0 1

(1.23)
I zaista, uspeno skaliranje je predstavljeno mnoenjem.
Na kraju, jednaina rotiranja (1.6) moe da se predstavi kao:

cos sin 0
sin cos 0
0 0 1

x
y
1

(1.24)
Denisanjem
R() =

cos sin 0
sin cos 0
0 0 1

(1.25)
22
dobija se
P

= R() P (1.26)
Ako je poznato:
P

= R(
1
) P (1.27)
P

= R(
2
) P

(1.28)
i ako se izraz (1.26) zameni u uzraz (1.27), dobija se:
R(
1
) R(
2
) =

cos
1
sin
1
0
sin
1
cos
1
0
0 0 1

cos
2
sin
2
0
sin
2
cos
2
0
0 0 1

=
=

cos(
1
+
2
) sin(
1
+
2
) 0
sin(
1
+
2
) cos(
1
+
2
) 0
0 0 1

(1.29)
Oigledno je iz izraza (1.28) da je:
R(
1
) R(
2
) = R(
1
+
2
) (1.30)
U gornjoj levoj 2 2 podmatrici u jednaini (1.25) dva reda mogu da se smatraju
vektorima. Da bi vektori bili prikazani, moraju da zadovolje tri uslova:
da je svaki vektor jedinini;
da vektori meusobno zaklapaju ugao od 90

, tj. da su meusobno normalni; i


da se prvi i drugi vektor rotiraju pomou R() kako bi leali du pozitivnih
smerova x i y osa (ako se potuju prethodna dva uslova, onda to znai da
determinanta podmatrice ima vrednost 1).
Prva dva uslova vae i za kolone podmatrice 2 2. Denisani pravci su zaista oni
koji se poklapaju sa pozitivnim smerovima x i y osa kada se vektori zarotiraju. Ovi
uslovi omoguavaju dva korisna naina za odreivanje matrice rotacije kada se zna ta
ta rotacija treba da omogui. Matrica koja ispunjava ove uslove naziva se specijalna
ortogonalna matrica.
Transformaciona matrica, ija je forma

r
11
r
12
t
x
r
21
r
22
t
y
0 0 1

(1.31)
i ija je gornja leva 22 podmatrica ortogonalna, sadri i uva informacije o uglovima i
duinama. Posle primene ovakve matrice, jedinina povrina (jedinini kvadrat) ostaje
jedinina povrina, samo se menja oblik (ne dobija se ni romb ni pravougaonik). Ovakve
transformacije su poznate pod nazivima transformacije vrstih tela (solida) zato to
23
se telo ili objekat transformie, ali nema izoblienja u bilo kom pravcu. Kombinacijom
matrica rotacije i translacije dolazi se do ovakve matrice.
Proizvodi proizvoljnih delova matrica za transliranje, rotiranje i skaliranje nazivaju
se i ane transformacije, jer se kod njih vodi rauna o paralelnosti linija, a ne o
duinama i uglovima. Na slici 1.6 prikazan je rezultat primene rotacije jedinine kocke
za 45

, a onda je na tu kocku primenjeno neuniformno skaliranje. Oigledno je sa slike


1.6 da su paralelne linije ostale paralelne, ali uglovi i duine nemaju vie iste vrednosti.
Dalje transformacije tipa rotiranja, skaliranja i transliranja ne garantuju paralelnost
linija. Veliine R(), S(s
x
, s
y
) i T (d
x
, d
y
) su, takoe, ane transformacije.
Slika 1.6. Ane transformacije
Jo jedan tip primitivne transformacije, transformacija smicanjem, je, takoe, ana
transformacija. Postoje dve vrste transformacije smicanjem: smicanje du x ose i
smicanje du y ose. Slika 1.7 prikazuje efekte transformacije smicanjem du pomenutih
osa tekueg koordinatnog sistema.
Slika 1.7. Trasnformacija smicanjem
Ova operacija moe da se predstavi matricom
SH
x
=

1 a 0
0 1 0
0 0 1

. (1.32)
lan a u matrici smicanja predstavlja proporcionalnu konstantu, tj. koecijent propor-
cionalnosti. Na primer, proizvod
SH
x
_
x y 1

T
=
_
x +ay y 1

T
jasno pokazuje srazmernu promenu u pravcu x ose kao funkciju y, tj. jasno pokazuje
smicanje du x ose. Slino ovome, matrica
SH
y
=

1 0 0
b 1 0
0 0 1

(1.33)
denie smicanje du y ose.
24
1.3.3 Kombinovanje 2D transformacija
Korisnik moe da kombinuje osnovne R, S i T matrice kako bi dobio eljeni rezultat.
Osnovna prednost kombinovanja transformacija je u poveanju ekasnosti primenom
jedne komponovane transformacije na taku, nego promena vie transformacija, jedne
za drugom.
Na primer, pretpostavka je da treba zarotirati objekat oko neke take P
1
. Uobia-
jeno je da se rotiranje vri oko koordinatnog poetka tekueg koordinatnog sistema, jer
veina grakih paketa tako i radi. Zbog toga se ovaj problem razbija na tri jednos-
tavnija koraka:
1. Transliranje objekta i denisanje koordinatnog poetka u taki P
1
.
2. Rotiranje objekta.
3. Transliranje objekta kako bi se taka iz koordinatnog poetka vratila na poziciju
P
1
.
Ovaj nain ilustrovan je na slici 1.8 gde se "kuica" rotira oko take P
1
(x
1
, y
1
). Prvo
transliranje se vri za (x
1
, y
1
), dok se poslednje transliranje obavlja za inverznu
vrednost (x
1
, y
1
). Rezultat je drugaiji nego da je obavljeno samo rotiranje oko take.
Slika 1.8. Rotacija oko take P
1
za ugao
Sloena transformacija ima sledei oblik:
TRT = T (x
1
, y
1
) R() T (x
1
, y
1
) (1.34)
TRT =

1 0 x
1
0 1 y
1
0 0 1

cos sin 0
sin cos 0
0 0 1

1 0 x
1
0 1 y
1
0 0 1

(1.35)
TRT =

cos sin x
1
(1 cos) +y
1
sin
sin cos y
1
(1 cos) x
1
sin
0 0 1

(1.36)
Slian pristup primenjuje se kada korisnik hoe da skalira objekat oko zadate take
P
1
. Najpre treba translirati objekat da se taka P
1
poklopi sa koordinatnim poetkom,
25
nakon toga se objekat skalira i, na kraju, objekat se translira nazad u taku P
1
. U
takvom sluaju, sloena transformacija ima sledei oblik:
TST = T (x
1
, y
1
) S(s
x
, s
y
) T (x
1
, y
1
) (1.37)
TST =

1 0 x
1
0 1 y
1
0 0 1

s
x
0 0
0 s
y
0
0 0 1

1 0 x
1
0 1 y
1
0 0 1

(1.38)
TST =

s
x
0 x
1
(1 s
x
)
0 s
y
y
1
(1 s
y
)
0 0 1

(1.39)
Ako korisnik hoe da skalira, rotira i translira kuicu sa takom P
1
kao centrom skali-
ranja i rotiranja, kao to je to prikazano na slici 1.9, onda je postupak sledei: najpre
se translira kuica i to tako da se taka P
1
poklopi sa koordinatnim poetkom, nakon
toga se skalira i rotira i, na kraju, vri se transliranje kuice iz koordinatnog poetka
do nove take P
2
, gde je zavrna pozicija.
Slika 1.9. Translacija, skaliranje i rotacija kuice do eljenog poloaja
Ovakva transformacija mora da sadri faktor(e) skaliranja, ugao rotacije, kao i pomeraje
tokom transliranja, tako da ova sloena transformacija ima sledei oblik:
TRTS = T (x
2
, y
2
) R() S(s
x
, s
y
) T (x
1
, y
1
) (1.40)
1.3.4 Transformacija prozor/vizir
U raunarskoj graci prozor (engleski naziv je Window) je deo ekrana u aplikativnim
i grakim interfejsima koji moe da sadri sopstveni dokumenat ili poruku. U okru-
enjima zasnovanim na prozorima, ekran moe da se podeli na nekoliko okana tako da
svaki od njih ima svoje granice i da sadri razliit dokument (ili razliit prikaz istog
dokumenta). Izraz vizir (engleski naziv je Viewport) u raunarskoj graci predstavlja
odreeni pregled (na) dokument(a) ili sliku(e). Vizir je slian prozoru, ali se u njemu
obino vidi samo deo dokumenta ili grake slike, i iz odreene take posmatranja.
Neki graki paketi zahtevaju od korisnika da denie izlazne koordinate u svetskom
koordinatnom sistemu (WCS-u), i to u razliitim jedinicama: mikronima, metrima,
miljama, svetlosnim godinama itd. Termin svetski se koristi, jer je to okruenje koje
apliakcija stvara i prikazuje korisniku.
26
Ako se deniu izlazne koordinate kao svetske koordinate, onda graki potprogrami
moraju da konvertuju te koordinate u ekranske koordinate. Pretvaranje jednih u druge
koordinate moe da se obavi na dva naina:
Prvi nain je da programer denie transformacionu matricu koja e izvriti redi-
rekciju ekranskih koordinata u svetske, i obrnuto.
Drugi nain je da programer denie pravougaonu povrinu u svetskom koor-
dinatnom sistemu i pravougaonu povrinu u ekranskom koordinatnom sistemu,
tj. u viziru, u koji e se mapirati sadrina prozora u svetskom koordinatnom
sistemu. Transformacije prenosa iz prozora u svetskom koordinatnom sistemu u
vizir u ekranskom koordinatnom sistemu primenjuju se na sve objekte prilikom
mapiranja, iz prozora u vizir. Slika 1.10 prikazuje ovaj koncept.
Slika 1.10. Prebacivanje iz prozora u vizir
Kao to se vidi sa slike 1.10, ako nije isti odnos visine (po y osi) i irine (po x osi)
prozora i vizira, onda se pojavljuje skaliranje objekata sa razliitim faktorima skaliranja
po svakoj osi. To znai da se objekti u viziru deformiu. Ako aplikacioni program menja
prozor ili vizir, onda se te promene manifestuju i na objekte unutar tih povrina. Ako
se vri prebacivanje iz prozora u vie razliitih vizira, onda se transformacije primenjuju
za svaki vizir posebno i na osnovu geometrije. To znai da su objekti razliiti u vizirima
razliitih dimenzija (slika 1.11).
Slika 1.11. Prebacivanje iz prozora u vie vizira
Ako su poznate dimenzije prozora i vizira, kako izgleda transformaciona matrica koja
mapira sadrinu prozora u svetskom koordinatnom sistemu u sadrinu vizira u ekran-
27
skom koordinatnom sistemu? Ova matrica moe da se razvije kao sloena matrica koja
obavlja tri koraka, kao to je to prikazano na slici 1.12.
Slika 1.12. Tri koraka za prebacivanje iz prozora u vizir
Prozor, koji je denisan donjim levim i gornjim desnim temenom, se, najpre, translira
u koordinatni poetak svetskog koordinatnog sistema. Sledei korak je da se prozor
skaliranjem svede na veliinu vizira. Na kraju se vri transliranje vizira kako bi se
pozicionirao u nalni poloaj. Sloena matrica M
wv
denisana je kao:
M
wv
= T (u
min
, v
min
) S
_
u
max
u
min
x
max
x
min
_
T (x
min
, y
min
)
gde je:
T (u
min
, v
min
) =

1 0 u
min
0 1 v
min
0 0 1

S
_
u
max
u
min
x
max
x
min
_
=

u
max
u
min
x
max
x
min
0 0
0
v
max
v
min
y
max
y
min
0
0 0 1

T (x
min
, y
min
) =

1 0 x
min
0 1 y
min
0 0 1

Konaan izgled sloene matrice je:


M
wv
=

u
max
u
min
x
max
x
min
0 x
max
u
max
u
min
x
max
x
min
+u
min
0
v
max
v
min
y
max
y
min
y
min
v
max
v
min
y
max
y
min
+v
min
0 0 1

(1.41)
Mnoenjem matrice M
wv
sa
_
x y 1

T
dolazi se do eljenog rezultata:
P =
_
(x x
min
)
u
max
u
min
x
max
x
min
+u
min
(y y
min
)
v
max
v
min
y
max
y
min
+v
min
1

28
Mnogi graki paketi kombinuju transformaciju na relaciji prozora i vizira sa isecanjem
objekata u prozoru sa svetskim koordinatnim sistemom. Ovaj koncept isecanja e
biti naknadno obraen. Na slici 1.13 ilustrovano je isecanje sadrine prozora i njeno
prikazivanje u viziru.
Slika 1.13. Isecanje objekata u prozoru i njihovo prikazivanje u viziru
1.3.5 Ekasnost
Veina kompozicija R, S i T operacija proizvode matricu ija je forma:
M =

r
11
r
12
t
x
r
21
r
22
t
y
0 0 1

. (1.42)
Gornja leva podmatrica 22 predstavlja kompozitnu matricu rotiranja i skaliranja, gde
t
x
i t
y
predstavljaju komponente kompozitnog transliranja. Ako se rauna M P kao
vektor koji se mnoi matricom 33, onda se pojavljuje 6 sabiranja i 9 mnoenja. Poto
su vrednosti poslednjeg reda matrice u jednaini (1.41) ksne, onda to pojednostavljuje
operacije:
x

= x r
11
+y r
12
+t
x
y

= x r
21
+y r
22
+t
y
, (1.43)
i dolazi se do 4 sabiranja i 4 mnoenja. Na ovaj nain se poveava brzina rada, posebno
kada treba primeniti ove operacije na hiljade taaka po slici. Matrice 33 su korisne za
komponovanje 2D transformacija, ali je ekasnije koristiti nalne matrice za specijalne
i specine strukture podataka.
Jo jedna oblast gde je ekasnost bitna je stvaranje potrebnih pogleda na objekat
ili objekte, kao to su molekuli ili avion, gde se svaki pogled rotira za nekoliko stepeni.
Ako treba kreirati i prikazati svaki pogled dovoljno brzo (od 30 do 100 milisekundi
svaki), onda e se objekti prikazivati i rotirati dinamiki. Da bi se poveala brzina
prikazivanja, korisnik mora da obezbedi brzo transformisanje svake take i linije na
objektu ili objektima. Jednaine rotiranja (1.6) zahtevaju 4 mnoenja i 2 sabiranja.
Treba smanjiti ove operacije, i to reorganizujui jednaine: ugao je mali (nekoliko
stepeni), tako da je cos

= 1. Ovakvom aproksimacijom, jednaine (1.6) postaju:
x

= x ysin y

= x sin +y (1.44)
29
i za njihovo reavanje treba 2 mnoenja i 2 sabiranja. Neutralisanje 2 mnoenja dopri-
nosi brzini rada raunara.
Jednaine (1.44) donose aproksimaciju samo vrednosti x

i y

, to znai da je
greka mala. Svaki put kada se jednaine primenjuju na nove vrednosti x i y, greka
postaje vea. Ako se ove jednaine primenjuju mnogo puta, greka postaje ozbiljna i
rotiranje slike poinje da lii na kolekciju proizvoljno nacrtanih linija. Ako se posmatraju
jednaine (1.44), onda je bolje da se koristi x

umesto x u drugoj jednaini:


x

= x ysin
y

= x

sin +y = (x ysin) sin +y = x sin +y(1 sin


2
) (1.45)
Ovo je bolja transformacija nego to su to jednaine (1.44), jer determinanta odgovara-
jue matrice 2 2 ima vrednost 1, to znai da vrednosti transformisane jednainama
(1.45) nisu promenjene.
1.3.6 Matrice u 3D transformacijama
Kao to je pokazano, 2D transformacije mogu da budu prikazane 33 matricama kada
se koriste homogene koordinate, tako i 3D transformacije (ako se koriste homogene
koordinate) mogu da budu prikazane 4 4 matricama. Umesto da se prikazuje u formi
(x, y, z), taka e se prikazivati u formi (x, y, z, W). U isto vreme, za dve homogene
koordinate (x, y, z, W) i (x

, y

, z

, W

) kae se da su iste ako se jedna koordinata dobija


mnoenjem druge. Tako koordinate (2, 3, 5, 1) i (4, 6, 10, 2) predstavljaju istu taku,
koja je prikazana sa dva razliita skupa brojeva. Oigledno je da svaka taka moe da
se predstavi na bezbroj naina unutar homogenih koordinata. Pored toga, barem jedna
homogena koordinata mora da bude razliita od nule, to znai da nije dozvoljena
taka (0,0,0,0). Ako je koordinata W razliita od 0, onda vrednosti taaka mogu da
se podele sa tom vrednou, to daje jednakost:
(x, y, z, W) =
_
x
W
,
y
W
,
z
W
, 1
_
.
Transformisanje taaka u ovaj oblik naziva se homogenizacija. Sve take ije su
koordinate W = 0 nazivaju se takama u beskonanosti. Svaka taka u 3D pros-
toru je predstavljena linijom kroz koordinatni poetak 4D prostora, a homogenizovana
prezentacija ovih taaka u formi 3D potprostora 4D prostora, predstavljena je jedin-
stvenom jednainom W = 1.
Kod 3D koordinatnog sistema, koji se ovde koristi, vai pravilo desne ruke, kako je
prikazano na slici 1.14. Kako je usvojeno, pozitivno rotiranje u desnom koordinatnom
sistemu je takvo da kada korisnik stoji na pozitivnom delu ose i gleda ka koordinat-
nom poetku, rotiranjem za 90

u smeru suprotnom od smera kretanja kazaljke na


satu, pozitivni smer jedne ose se pretvara u pozitivni smer druge ose. Sledea pravila
proizilaze iz ove konvencije: ako je osa rotacije x osa, onda je pozitivan smer rotacije
od ose y ka osi z; ako je osa rotacije y osa, onda je pozitivan smer rotacije od ose
z ka osi x; i ako je osa rotacije z osa, onda je pozitivan smer rotacije od ose x ka
osi y. Postoji jo jedna denicija, koja je odomaena kod nas. Ako korisnik stegne
30
pesnicu i palac poklopi sa pozitivnim smerom ose, onda prsti stegnute pesnice pokazuju
pozitivan smer rotacije oko te ose. Ove dve denicije, u stvari, govore isto.
Slika 1.14. Desni koordinatni sistem
Ovde se koriste desni koordinatni sistemi, jer je to standardna matematika konvencija
mada mnogi misle da su bolji levi koordinatani sistemi (slika 1.15), jer je kod ovakvih
koordinatnih sistema pozitivan smer z ose od korisnika, to je prirodnije. Usvojeno
je da je pozitivno rotiranje u levom koordinatnom sistemu takvo da, kada korisnik
stoji na pozitivnom delu ose i gleda ka koordinatnom poetku, obavlja se rotiranje za
90

u smeru kretanja kazaljke na satu. Ovakva denicija pozitivne rotacije omoguava


primenu istih matrica rotacije, bez obzira na to da li se radi o levim ili desnim koordinat-
nim sistemima. Konverzija levog koordinatnog sistema u desni i desnog koordinatnog
sistema u levi bie kasnije objanjena.
Slika 1.15. Levi koordinatni sistem
Transliranje u 3D predstavlja jednostavno proirenje matrice za 2D transformacije:
T (d
x
, d
y
, d
z
) =

1 0 0 d
x
0 1 0 d
y
0 0 1 d
z
0 0 0 1

(1.46)
U tom sluaju je:
T (d
x
, d
y
, d
z
)
_
x y z 1

T
=
_
x +d
x
y +d
y
z +d
z
1

T
.
Skaliranje u 3D predstavlja jednostavno proirenje matrice za 2D transformacije:
S(s
x
, s
y
, s
z
) =

s
x
0 0 0
0 s
y
0 0
0 0 s
z
0
0 0 0 1

(1.47)
31
U tom sluaju je:
S(s
x
, s
y
, s
z
)
_
x y z 1

T
=
_
s
x
x s
y
y s
z
z 1

T
.
Jednaina (1.26), kojom je opisano rotiranje u ravni, predstavlja 3D rotiranje oko z
ose, gde je:
R
z
() =

cos sin 0 0
sin cos 0 0
0 0 1 0
0 0 0 1

(1.48)
Ovo je lako dokazati. Ako se izvri rotacija
_
1 0 0 1

T
za 90

, to predstavlja
jedinini vektor du x ose, dolazi se do jedininog vektora
_
0 1 0 1

T
du y ose.
Ako se ovo prikae brojkama, onda proizvod

0 1 0 0
1 0 0 0
0 0 1 0
0 0 0 1

1
0
0
1

daje oekivani rezultat


_
0 1 0 1

T
.
Matrica koja opisuje rotiranje oko x ose je:
R
x
() =

1 0 0 0
0 cos sin 0
0 sin cos 0
0 0 0 1

. (1.49)
Matrica koja opisuje rotiranje oko y ose je:
R
y
() =

cos 0 sin 0
0 1 0 0
sin 0 cos 0
0 0 0 1

(1.50)
Kolone i redovi u gornjim 3 3 podmatricama matrica R
x
(), R
y
() i R
z
() pred-
stavljaju normalne jedinine vektore i te podmatrice imaju vrednost determinante 1,
to znai da su tri matrice ortogonalne, o emu je ve bilo rei. Sve tri transformacione
matrice imaju inverzne matrice. Inverzna T matrica dobija se postavljanjem negativnih
vrednosti d
x
, d
y
i d
z
; inverzna S matrica se dobija postavljanjem recipronih vrednosti
s
x
, s
y
i s
z
; inverzne R
x
, R
y
i R
z
matrice dobijaju se postavljanjem negativne vrednosti
ugla rotacije.
Neogranien broj matrica transliranja, skaliranja i rotiranja moe da se mnoi.
Rezultat tog mnoenja je proizvod koji uvek ima sledeu formu:
M =

r
11
r
12
r
13
t
x
r
21
r
22
r
23
t
y
r
31
r
32
r
33
t
z
0 0 0 1

. (1.51)
32
Kao to je to bio sluaj u 2D transformacijama, gornja leva 33 podmatrica R prikazuje
skupno rotiranje i skaliranje, gde T prikazuje sloeno transliranje. Radi poboljanja
ekasnosti neki raunarski programi preporuuju transformacije eksplicitno u formi:

= r

x
y
z

+T, (1.52)
gde su R i T podmatrice iz jednaine (1.51).
Dvodimenzionalnoj matrici smicanja odgovara 3D matrica smicanja. Smicanje
(x, y) je:
SH
xy
(sh
x
, sh
y
) =

1 0 sh
x
0
0 1 sh
y
0
0 0 1 0
0 0 0 1

(1.53)
Ako se izraz (1.53) za SH
xy
primeni na taku
_
x y z 1

T
, onda se dobija kao
odgovor
_
x +sh
x
z y +sh
y
z z 1

. Smicanja u pravcu x i y ose imaju slinu
formu.
1.3.7 Kombinovanje 3D transformacija
Sledi primer komponovanja 3D transformacione matrice. Trebalo bi transformisati dui
P
1
P
2
i P
2
P
3
na slici 1.16, od poetne do zavrne pozicije. Najpre treba taku P
1
translirati u koordinatni poetak, du P
1
P
2
treba da lei na pozitivnom delu z ose i du
P
1
P
3
treba da lei u yz ravni, u delu koji obrazuju pozitivni smerovi osa y i z. Duine
dui nisu bitne za ove transformacije.
Slika 1.16. Transformisanje taaka od poetnog do krajnjeg poloaja
Postoje dva naina da se ove transformacije predstave. Prvi nain je komponovanje
primitivnih transformacija T, R
x
, R
y
i R
z
. Ovaj nain je dui, ali se lako ilustruje
i razume. Drugi nain je korienje osobina ortogonalnih matrica, to je bre, ali i
kompleksnije.
Rad sa primitivnim transformacijama je jednostavniji i sastoji se od razbijanja
problema na jednostavnije faze. U ovom sluaju eljena transformacija moe da se
odradi u etiri koraka: 1) transliranje take P
1
u koordinatni poetak; 2) rotiranje oko
y ose kako bi du P
1
P
2
leala u yz ravni; 3) rotiranje oko x ose kako bi du P
1
P
2
legla
na pozitivan deo z ose; i 4) rotiranje oko z ose kako bi du P
1
P
3
legla u specicirani
33
deo yz ravni. Slede detaljna objanjenja svakog pojedinanog koraka.
Korak 1: Transliranje take P
1
u koordinatni poetak. Translacija je:
T (x
1
, y
1
, z
1
) =

1 0 0 x
1
0 1 0 y
1
0 0 1 z
1
0 0 0 1

. (1.54)
Primenom T na take P
1
, P
2
i P
3
dobija se:
P

1
= T (x
1
, y
1
, z
1
) P
1
=

0
0
0
1

, (1.55)
P

2
= T (x
1
, y
1
, z
1
) P
2
=

x
2
x
1
y
2
y
1
z
2
z
1
1

, (1.56)
P

3
= T (x
1
, y
1
, z
1
) P
3
=

x
3
x
1
y
3
y
1
z
3
z
1
1

. (1.57)
Korak 2: Rotacija oko y ose. Slika 1.17 pokazuje poloaj dui P
1
P
2
posle prvog
koraka, sa projekcijama ove dui na xz ravan.
Slika 1.17. Rotacija oko y ose
Ugao rotacije je (90 ) = 90. Tada je:
cos( 90) = sin =
z

2
D
1
=
z
2
z
1
D
1
sin( 90) = cos =
x

2
D
1
=
x
2
x
1
D
1
(1.58)
gde je
D
1
=
_
(z

2
)
2
+ (x

2
)
2
=
_
(z
2
z
1
)
2
+ (x
2
x
1
)
2
(1.59)
34
Kada se ove vrednosti zamene u izraz (1.50), dobija se:
P

2
= R
y
( 90) P

2
=
_
0 y
2
y
1
D
1
1

T
. (1.60)
Kao to se i oekivalo, x komponenta take P

2
je jednaka nuli, a z komponenta pred-
stavlja duinu D
1
.
Korak 3: Rotacija oko x ose. Slika 1.18 pokazuje du P
1
P
2
posle primenjenog
drugog koraka.
Slika 1.18. Rotacija oko x ose
Za ugao rotacije sledi:
cos =
z

2
D
2
sin =
y

2
D
2
(1.61)
gde D
2
= |P

1
P

2
| predstavlja duinu dui P

1
P

2
. Duina dui P

1
P

2
je jednaka duini
dui P
1
P
2
zato to transformacija rotacijom i translacijom ne utie na duinu, tako da
je:
D
2
= |P

2
P

1
| = |P
2
P
1
| =
_
(x
2
x
1
)
2
+ (y
2
y
1
)
2
+ (z
2
z
1
)
2
. (1.62)
Rezultat rotacije u treem koraku je:
P

2
= R
x
() P

2
= R
x
() R
y
( 90) P

2
=
= R
x
() R
y
( 90) T P
2
=
_
0 0 |P
1
P
2
| 1

T
. (1.63)
Na ovaj nain se dolazi do toga da se du P
1
P
2
poklapa sa pozitivnim smerom z ose.
Korak 4: Rotacija oko z ose. Slika 1.19 prikazuje dui P
1
P
2
i P
1
P
3
posle treeg
koraka, sa takom P

2
na z osi i sa takom P

3
na poziciji:
P

3
=
_
x

3
y

3
z

3
1

T
= R
x
() R
y
( 90) T (x
1
, y
1
, z
1
) P
3
(1.64)
Izvrena je rotacija za ugao , gde je:
cos =
y

3
D
3
sin =
x

3
D
3
D
3
=
_
x

3
3
+y

2
3
(1.65)
Rezultati etvrtog koraka ve su prikazani na slici 1.16 u zavrnom poloaju.
35
Slika 1.19. Rotacija oko z ose
Kompozitna matrica
R
z
() R
x
() R
y
( 90) T (x
1
, y
1
, z
1
) = R T (1.66)
denie traene transformacije, s tim to je R = R
z
() R
x
() R
y
(90). Sada treba
ovu transformaciju primeniti na take P
1
, P
2
i P
3
kako bi se verikovale predviene
izmene: taka P
1
je transformisana u koordinatni poetak, taka P
2
je transformisana
da lei na pozitivnom delu z ose, a taka P
3
je transformisana da lei u delu yz ravni
koji formiraju pozitivni delovi y i z ose.
Drugi nain za dobijanje matrice R je korienjem osobina ortogonalnih matrica.
Ako se u matrici u jednaini (1.51) preimenuju indeksi (drugi po redu) po usvojenoj
konvenciji, dolazi se do:
R =

r
1x
r
2x
r
3x
r
1y
r
2y
r
3y
r
1z
r
2z
r
3z

. (1.67)
Poto je R
z
jedinini vektor du P
1
P
2
, onda e se izvriti rotacija ka pozitivnom smeru
z ose:
R
z
=
_
r
1z
r
2z
r
3z

T
=
P
1
P
2
|P
1
P
2
|
(1.68)
Sledi da je R
x
jedinini vektor koji je normalan na ravni P
1
, P
2
i P
3
i treba ga zarotirati
do pozitivnog dela x ose, tako da R
x
mora biti normalizovan proizvodom dva vektora
u ravni:
R
x
=
_
r
1x
r
2x
r
3x

T
=
P
1
P
3
P
1
P
2
|P
1
P
3
P
1
P
2
|
(1.69)
Konano,
R
y
=
_
r
1y
r
2y
r
3y

T
= R
z
R
x
(1.70)
e rotirati do pozitivnog dela x ose. Kompozitna (sloena) matrica ima oblik:

r
1x
r
2x
r
3x
0
r
1y
r
2y
r
3y
0
r
1z
r
2z
r
3z
0

T (x
1
, y
1
, z
1
) = R T, (1.71)
gde su R i T isti kao u jednaini (1.66). Na slici 1.20 prikazani su individualni vektori
R
x
, R
y
i R
z
. Kao to je ve reeno, postoje dva naina da se transformacije predstave.
36
Prvi nain je komponovanje primitivnih transformacija, s tim to je ovo dui nain, ali
se lako ilustruje i razume. Drugi nain je pomou ortogonalnih matrica, to je bre, ali
i kompleksnije.
Slika 1.20. Jedinini vektori R
x
, R
y
i R
z
1.3.8 Transformacije kao promene koordinatnog sistema
Do sada je bilo govora o transformacijama jednog skupa taaka nekog objekta, u drugi
skup taaka, ali oba skupa taaka su se nalazila u istom koordinatnom sistemu. Sa
takvim pristupom koordinatni sistem ostaje nepromenjen i objekat se transformie u
odnosu na koordinatni poetak tekueg koordinatnog sistema. Alternativni, ali i ekviva-
lentni nain razmiljanja o transformacijama je promena i izmena koordinatnog sistema.
Ovaj nain je koristan kada se radi sa vie objekata, gde je svaki objekat denisan u
sopstvenom lokalnom koordinatnom sistemu, i kada treba te objekte iskombinovati, a
zatim i izraziti koordinate objekata u jedinstvenom, globalnom koordinatnom sistemu.
Ako se sa P
(i)
denie prezentacija take u koordinatnom sistemu i, sa P
(j)
se
denie prezentacija take u koordinatnom sistemu j, i sa P
(k)
se denie prezentacija
take u koordinatnom sistemu k, onda vai:
P
(i)
= M
ij
P
(j)
i P
(j)
= M
jk
P
(k)
(1.72)
Zamenom se dobija
P
(i)
= M
ij
P
(j)
= M
ij
M
jk
P
(k)
= M
ik
P
(k)
, (1.73)
tako da sledi
M
ik
= M
ij
M
jk
. (1.74)
Slika 1.21 prikazuje etiri razliita koordinatna sistema. Ako se obrati panja na sliku,
vidi se da je transformacija od koordinatnog sistema 2 do koordinatnog sistema 1:
M
12
= T (4, 2)
Slino ovome, sledi:
M
23
= T (2, 3) S(0, 5; 0, 5)
M
34
= T (6, 7; 1, 8) R(45

)
M
13
= M
12
M
23
T (4, 2) T (2, 3) S(0, 5; 0, 5)
37
Slika 1.21. Taka P i koordinatni sistemi 1, 2, 3 i 4
Sa slike 1.21 je jasno da taka P ima sledee koordinate:
P
(1)
= (10, 8) P
(2)
= (6, 6) P
(3)
= (8, 6) P
(4)
= (4, 2)
od koordinatnog sistema 1 do koordinatnog sistema 4, respektivno. Veoma je lako
verikovati da je:
P
(i)
= M
ij
P
(j)
za 1 i, j 4.
Treba registrovati i sledeu relaciju:
M
ij
= M
1
ji
Odatle sledi
M
21
= M
1
12
= T (4, 2)
i zbog toga je:
M
13
= M
12
M
23
,
M
1
13
= M
1
23
M
1
12
= M
32
M
21
Ve je bilo rei o levim i desnim koordinatnim sistemima. Matrica koja konvertuje take
iz jednog koordinatnog sistema (levog ili desnog) u drugi (levi ili desni) ima oblik:
M
RL
= M
LR
=

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

(1.75)
Ranije je spominjan sledei pristup: denisanje objekata se vrilo u svetskom koor-
dinatnom sistemu, a onda se vrilo njihovo transformisanje na eljena mesta; ovo je
malo nerealistian pristup, jer su svi objekti, inicijalno, smetani jedan iznad drugog u
istom koordinatnom sistemu. Mnogo je prirodnije da se razmilja kako je svaki objekat
denisan u sopstvenom koordinatnom sistemu, a onda se vri skaliranje, rotiranje i
transliranje kako bi se redenisale koordinate koje bi odgovorale svetskom koordinat-
nom sistemu. Neki ovakav pristup posmatraju kao posebne listove papira, sa objektima
na njima, koji mogu da se skupljaju, razvlae, rotiraju i smetaju na ravan sa aktivnim
svetskim koordinatnim sistemom. Drugi ovakav pristup posmatraju kao mogunost da
38
se ravan razvlai, skuplja i relativno premeta u odnosu na svaki papir. Matematiki,
oba gledita su identina.
Sledi jednostavan primer transliranja skupa taaka, koje deniu kuicu prikazanu
na slici 1.22, u koordinatni poetak. Ova transformacija je denisana kao T (x
1
, y
1
).
Slika 1.22. Kuica i dva koordinatna sistema
Ako se oznae dva koordinatna sistema kao na slici 1.22, vidi se da transformacija koja
prevodi koordinatni sistem 1 u koordinatni sistem 2 ima oblik:
M
21
= T (x
1
, y
1
) = T (x
1
, y
1
)
1
.
Generalno pravilo je da transformacije koje transformiu set taaka u jednom koor-
dinatnom sistemu upravo odgovaraju inverznim transformacijama prilikom promene
koordinatnog sistema u kojima su take predstavljene. Ova relacija moe da se vidi na
slici 1.23, a direktno proistie iz slike 1.9.
Slika 1.23. Originalna i transformisana kuica
Transformacije za predstavljene take u jedinstvenom koordinatnom sistemu su:
T (x
2
, y
2
) R() S(s
x
, s
y
) T (x
1
, y
1
) (1.76)
Sa slike 1.23 vidi se da transformacija koordinatnog sistema ima oblik:
M
51
= M
54
M
43
M
32
M
21
=
= [T (x
2
, y
2
) R() S(s
x
, s
y
) T (x
1
, y
1
)]
1
=
= T (x
1
, y
1
) R() S(s
1
x
, s
1
y
) T (x
2
, y
2
), (1.77)
tako da je
P
(5)
= M
51
P
(1)
= T (x
1
, y
1
) R() S(s
1
x
, s
1
y
) T (x
2
, y
2
) P
(1)
(1.78)
39
Za transformacije koordinatnih sistema vana je promena transformacija. Neka oznaka
Q
(j)
predstavlja transformaciju u koordinatnomsistemu j, i mogla bi da bude, na primer,
sloena (kompozitna) transformacija dobijena u nekom prethodnom koraku. Ako je
potrebno izraunati transformaciju Q
(i)
u koordinatnom sistemu i koja se primenjuje na
take P
(i)
u sistemu i koja treba da proizvede iste rezultate kao kada se transformacija
Q
(j)
primeni na odgovarajue take P
(j)
u sistemu j, onda za takvu jednakost vai
sledei izraz:
Q
(i)
P
(i)
= M
ij
Q
(j)
P
(j)
Zamenom
P
(i)
= M
ij
P
(j)
gornji izraz postaje:
Q
(i)
M
ij
P
(j)
= M
ij
Q
(j)
P
(j)
Pojednostavljujui gornji izraz dobija se:
Q
(i)
= M
ij
Q
(j)
M
1
ij

You might also like