Praćenje zrake
Iscrtavanje (eng. rendering) je jedan od temeljnih pojmova računalne grafike. Iscrtavanje je računalno stvaranje slika pomoću geometrijskih oblika uz uporabu boja i sjenčanja (eng. shading ) t.j. davanja slici dodatne dimenzije promjenom njenog izgleda pomoću svjetla i sjene. Takve slike su vrlo stvarne, a na suvremenim računalima njihova kakvoća je usporediva sa kakvoćom fotografija.
Jedna od tehnika iscrtavanja je praćenje zrake.Praćenje zrake (engl. ray tracing) je klasična i izuzetno često upotrebljavana metoda iscrtavanja 3D scena. Metoda je zasnovana na zakonima optike (refleksija, refrakcija) uz korištenje pojednostavljenog modela osvjetljenja za izračunavanje intenziteta svjetlosti u određenoj točki.Metodom praćenja zrake dobivaju se vrlo impresivne slike 3D scena koje uključuju efekte zrcaljenja, prozirnosti i sjena. Pritom je osnovna metoda vrlo jednostavna za implementaciju jer se sastoji od rekurzivnog ponavljanja nekoliko osnovnih operacija.
Praćenje zrake funkcionira na način da za svaku točku ekrana šaljemo jednu zraku u scenu, zraka se sudara sa nekim predmetom na sceni te za svaki sudar računamo osvjetljenje. Nakon prvog sudara za elementima scene nastaju nove zrake, lomljena zraka i reflektirana zraka, koje također pridodaju elemente osvjetljenja. Postupak se rekurzivno do određene dubine koju sami određujemo. Elementi scene su geometrijski oblci predstavljeni matematičkim formulama, a zraka predstavlja pravac kroz dvije točke. Točke sudara se dobivaju kao sjecišta zrake i elementa scene.
POV-Ray
POV-Ray je shareware program (slobodno dijeljeni) koji koristi tehniku iscrtavanja pomoću praćenja zrake za stvaranje 3D računalne grafike fotografske kakvoće. POV-Ray paket je slobodan za korištenje na različitim platformama i operacijskim sustavima (UNIX, MS Windows,...). Baš zbog slobode korištenja, lakoće uporabe i jednostavnosti vrlo je rasprostranjen i često rabljen program za iscrtavanje. PovRay predstavlja alat za "programiranje" slike: slika se reprezentira programskim kodom koji prilikom izvršavanja generira sliku u BMP, TGA (Targa) ili nekom od drugih
podržanih formata.
POV-Ray prilikom rada čita tekstualnu datoteku s korisnikovim naredbama i kao izlaz daje 3D računalnu sliku. Tekstualna datoteka sadrži položaj i vrstu izvora svjetla, promatračev položaj, teksturu objekta (izgled "površine" grafičke slike kojim se dobiva prividni dojam fizičke tvari: metal, staklo, drvo i td.), atmosferske prilike, izgled objekta i itd.
Slika je opisana kao niz objekata u 3D prostoru, sa definiranim položajem izvora svjetlosti i položajem promatraca (kamere). Na osnovnu tih podataka izračunavamo sliku.
Osnovni objekti u POV-Ray-u su sfera, cilindar, kvadar, ravnina, konus, torus.Objekti se definiraju uz pomoć naredbi koje sadrže osnovne informacije o njima, npr. sphere {<0,0,0>, 1 pigment{ color rgb <0,0,1> } } označava sfere sa središtem u ishodištu koordinatnog sustavna radijusa 1, sa bojom površine (pigment) izražene pomoću RGB oznake, u ovom slučaju plava boja.
Kompleksniji objekti se prezentiraju kao presjek (intersection), unija (union) ili razlika (difference) jednostavnijih objekata.
Primjer slike dobivene korištenjem POV-Ray alata
PovRay se može koristiti za animiranje scene. O animaciji trebamo razmišljati kao o nizu stacionarnih scena. Spajanje generiranih (izracunatih) stacionarnih scena (ili frame-ova) u kontinuirani tijek rezultira filmom (ova operacija mora se obaviti izvan PovRay-a). Najjednostavnija verzija animacije je ona u kojoj se 3D koordinatama koje opisuju scenu pripisuje vremenska ovisnost ("gibanje" karakteristicnih koordinata). Vremenska ovisnost u PovRay-u specificirana je rezerviranom skalarnom varijablom clock. Tako bismo npr. jednoliko gibanje sfere duž x-osi mogli napisati kao
sphere{<0,0,0>, 1 translate <4*clock,0,0>}. Interval u kojem se varijabla clock mijenja kao i broj slika (frame-ova) koje je potrebno generirati unutar tog intervala tipicno su zadani u file-u odvojenom od .pov file-a koji opisuje scenu, u kratkom inicijalizacijskom file-u (.ini) koji sadrži referencu na .pov file scene. Kad želimo proizvesti animaciju, PovRay-evim kompajlerom procesiramo .ini file.
Interaktivna multimedijska simulacija elektromotora
Prikazat ćemo primjer korištenja programiranja slike i praćenja zrake na modelu Teslinog sinkronog motora. Model je započet u programu kpovmodeler na operacijskom sustavu Linux, i potom je prenesen u POV-Ray 3.6.1 sustav za raytracing renderiranje. Da bi se omogućila "skalabilnost", odnosno promjene dimenzije modela pomoću mijenjanja parametara i varijabli, inicijalni je model ponovno vraćen do primitiva i parametri su iz numeričkih "reverznim inženjerstvom" pretvoreni u varijable.
Animacija je renderirana na cluster sustavu koji omogućava upotrebu Linux, Mac OS X i Windows strojeva pod Cygwin okolinom. Koristilo se tipično 3 do 8 strojeva različitog hardware-a i operacijskog sustava prilikom renderiranja. Za razliku od velikih clustera sa nekoliko desetaka ili stotina simetričnih i multiprocesorskih računala, ova platforma omogućava sklapanje "priručnog clustera" u znatno skromnijim uvjetima. Primjenom FCFS ("First Came First Served") algoritma raspodjele zadataka renderiranja omogućava se da čak i najsporiji stroj još uvijek doprinosi snazi clustera, pa se mogu iskoristiti i strojevi koji su bili predviđeni za otpis.
Konačni oblik animacije (animirane GIF sličice) složene su u programu ImageMagick 6.2.6-4, a potom radi bržeg download-a na web-u je bilo potrebno dodatno optimiranje programom GIMP 2.2 (GNU Image Manipulation Program). Optimiranja su se svodila pretežno na izbor smanjivanja broja boja u animaciji uz minimalni uticaj na doživljaj kvalitete, te na posebne optimizacije koje
Za razliku od velikih clustera sa nekoliko desetaka ili stotina simetričnih i multiprocesorskih računala, ova platforma omogućava sklapanje "priručnog clustera" u znatno skromnijim uvjetima. Primjenom FCFS ("First Came First Served") algoritma raspodjele zadataka renderiranja omogućava se da čak i najsporiji stroj još uvijek doprinosi snazi clustera, pa se mogu iskoristiti i strojevi koji su bili predviđeni za otpis.
Rotacijsko magnetno polje i motor na izmjeničnu struju
Jedno od glavnih Teslinih otkrića je rotacijsko magnetno polje. Ono je temelj rada elektromotora na naizmjeničnu struju. Tesla je, promatrao istosmjerni elektromotor sa četkicama i kolektorom i primijetio da neučinkovito iskrenje koje nastaje pri prekidanju struje na četkicama treba izbjeći bitno drugačijim principom konstrukcije motora. Taj princip je otkrio u rotacijskom magnetnom polju koji nastaje u kučištu (statoru) i može obrtni dio motora koji se zove rotor.
Sada pogledajmo model jednog od izvornih Teslinih motora. On je tzv. "sinkroni", jer se rotor vrti istom brzinom sa rotacijskim magnetnim poljem, tj. sinkrono. Pogledajmo njegov rad:
Strelice u sredini pokazuju smjer magnetskog polja pojedinih zavojnica statora (to je dio motora na slici koji se ne okreće). Rotor (dio koji se vrti) u našem primjeru ima stalno magnetno polje istog smjera, gotovo kao permanentni magnet (onaj kakav se koristi za traženje izgubljenih igala).
Novim načinom interaktivne multimedijske simulacije ćemo pokušat dati odgovor na slijedeći niz pitanja:
Kako radi motor na naizmjeničnu struju i zašto se rotor uopće okreće ?
Gdje je rotacijsko magnetno polje i kako nastaje?
Šta znače tri strelice koje rastu i smanjuju se po svakoj od osi zavojnica?
Da bi princip razumjeli, pojednostavit ćemo model. Najprije ćemo isključiti crvene strelice koje pokazuju smjer južnog pola, i prikazivat ćemo samo tzv. vektore smjera magnetnog polja.
Jedan vektor predstavlja sveukupnost magnetnih silnica, i pomoću njega ćemo lakše shvatiti rotacijsko magnetno polje nego da zbrajamo (integriramo) mnoštvo silnica ...
Iz simulacijske slike počinje nazirati da se vektori magnetnog polja okreću suprotno od kazaljke na satu. Međutim, nije još uvijek jasno sto se dešava, jer kako rotor "zna" koji od tih vektora koji rastu i padaju slijediti?
Odgovor je da slijedi sva tri odjednom. Magnetska polja se "zbrajaju" kao što matematičari zbrajaju vektore. Vektori se zbrajaju po "zakonu paralelograma", ali pojednostavljeno bi to značilo da dva vektora od kojih nas jedan upućuje na sjever a drugi na istok slijedimo tako da najprije odemo na sjever, pa onda na istok - i nađemo se na cilju.
Isto tako ćemo i magnetska polja zbrojiti tako da ćemo početak drugog vektora staviti na kraj prvoga. Početak trećega ćemo staviti na kraj (strelice) drugoga.
Pogledajmo sada što dobivamo nakon ovog zbrajanja:
Obratite pozornost, pogledajte kako se kreće strelica trećeg vektora, najdaljeg od središta, osi vrtnje: to su i vektori koji rastu i smanjuju se, uvijek su u pravcu osi svoje zavojnice koja ih je prouzročila ! No, strelica trećeg vektora, nakon što smo zbrojili sva tri, kreće se točno po kružnici, obrnuto od smjera kazaljke na satu.
Sada se već može vidjeti da rotor "slijedi" rotaciono magnetno polje statora. Zašto polje statora rotira, a stator se ne miče? To je posljedica faznog pomaka "faza" struje koji prouzrokuje magnetno polje. Zato se ovaj sustav zove "trofazni", jer ima tri odvojena izvora napona sa kutnim pomacima od 120 stupnjeva, po jedan na svaku zavojnicu statora.
Ako je ovo teško shvatiti, onda možemo zamisliti kako jedna struja tek počinje rasti kada je druga već na trećini punog ciklusa, a treća kasni isto toliko za ovom. Upravo kao naša magnetna polja predstavljena strelicama na slici.
Kombinacija, odnosno zbroj tih polja čini jedan veliki rotirajući vektor. Da bi potvrdili sve izrečeno, pogledajte još jednom dobro zadnju animaciju, i pogledajte pažljivo kako smo strelice presložili da slijedeća počinje gdje zavšava prethodna.
Izmjenične struje koje pokreću zavojnice moraju biti sinusoidnog oblika, za savršenu kružnicu rotacionog polja. Zavojnice statora moraju biti na istim međusobnim udaljenostima (dakle na 120 stupnjeva).
Da bi se uvjerili u rezultat, vratimo nazad prikaz crvenih strelica za smjer južnog magnetskog pola. Zaista vidimo da se rotaciono polje statora ponaša kao jedan veliki magnet, i rotor slijedi taj veliki magnet tako da se sjeverno polje rotora okreće prema južnom polu na statoru, i južni pol rotora prema sjevernom polu na statoru. Ovaj položaj zamišljenog sjevernog i južnog pola na statoru se stalno mijenja, kako struje i polja statora padaju i rastu. Rotira kao što vidimo na slici. (Magnetno polje samog rotora nije ucrtano radi jasnoće prikaza.)
U stvarnosti struje triju faza nikad nisu savršene sinusoide, već imaju izobličenja. Ovo će izobličavati i magnetsko polje, uzrokujući gubitke. Velik nedostatak ovakvog motora je da je on potpuno nemoćan ako rotor "sklizne" i prestane pratiti rotaciono polje. On se okreće sa 50 Hz i ne može promijeniti brzinu vrtnje.
Budući da se simulacija zasniva na matematičkom modelu moguće je prije izvođenja simulacije definirati razne parametre modela, tako npr. možemo mijenjati broj namotaja, broj polova, zaokret motora, razne parametre statora i sl. te tako korisnik može sam mijenjati izgled modela i isprobavati različite mogućnosti. Definiranje parametara modela možete isprobati na link.