Seminarska naloga: Izračun osvetljenosti v prostoru

Avtor, Karlo Stovicek

RPK, 2000

Mentor, Janez Krek


Kazalo:

  1. Abstract
  2. Definicija programa
  3. Opis programa
  4. Teoretične osnove
  5. Zaključek
  6. Literatura

Abstract#

The program calculates the illumination in the room. The user must provide some basic parameters to the program, which calculates the llumination for every point on the floor. The results are displayed with a help of a raster graphic library. The source code of the program is written in JavaScript.


Definicija naloge#

Program služi za izris osvetlenosti tal v prostoru. Vhodni podatki so: velikost tal, velikost luči, razmak med lučmi, minimalni odmik luči od sten, moč ter izkoristek luči. Program je izdelan s skriptnim jezikom JavaScript (izris s pomočjo rastrske knjižnice).


Opis naloge#



Teoretične osnove#

Enačbe Slika 1: Osnovni parametri in enačbe za izračun osvetlenosti

Slika 2
Slika 2: Dimenzije tal in parametri luči


O programu#

Program se zažene s klikom na gumb "Program", ki zažene povezavo s datoteko program.html. V datoteki sta vključeni tako HTML kot tudi JavaScript programska koda. Sam program je sestavljen iz več logičnih delov. Ob zagonu se najprej pojavi delovno okno programa. Sama HTML koda skrbi za vizualni prikaz programa, skriptna koda pa nadzira vsa ostala dogajanja v programu. Za delovanje je potrebno izpolniti zahtevana vnosna polja, iz katerih se potem preberejo sami parametri s klicanjem funkcije read_para1(). Za branje spremenljivk JavaScipta so uporabljeni dogodki (Events), ki kličejo funkcije branja parametrov. Polja, ki jih je potrebno izpolniti imajo prednastavljene vrednosti. Če želim določeno vrednost spremeniti, kliknem v polje te vrednosti in vpišem novo vrednost. S klikom miške izven tega polja (na drugo vnosno polje, gumb ali prazen prostor), se pokliče branje parametrov. Za vsako spremembo se berejo vsi parametri znova, saj samo branje ni počasno, tako da je klic nove funkcije za vsako spremenljivko posebaj nepotreben.

Za začetek izrisa je najprej potrebno klikniti na gumb "Lights", ki izračuna potrebno število luči po dolžini in širini glede na podane parametre. Ob kliku tega gumba, se v polju "Activated lights" pojavijo vse luči, ki so možne v tistem prostoru glede na podane parametre. Sedaj lahko s klikanjem posameznih luči le te prižigam ali ugašam. če je luč označena, potem to pomeni, da je vključena. Za izbiro več luči je potrebno držati tudi gumb "CTRL", ki omogoča posamično izbiranje, ali pa gumb "SHIFT", ki izbira od prve izbrane do kliknene luči. Razporeditev posameznih luči iz samega indeksa je razvidna iz slike 2, ki predstavlja porazdelitev luči po prostoru.

Ko imam izbrane vse luči, ki jih želim prižgati, lahko kliknem na gumb "Calculate", ki dejansko stanje osvetlitve tudi nariše. Za izris je potrebno upoštevati celotno matematiko iz poglavja Teoretičnih osnov, ki je kljub poenostavitvam precej zapletena.

Zgradba samega programa je sledeča:

  1. Branje podatkov
    Najprej je potrebno prebrati vse vnešene parametre.
  2. Izračun števila luči
    Iz prebranih parametrov je potrebno izračunati število luči, pri danih veljavnih pogojih, kar je razvidno iz slike 1.
  3. Izračun polja, ki vsebuje postavitev luči
    V izbrano polje točk zapišem x in y koordinato luči, ki jo je potrebno upoštevati pri trenutnem izračunu svetilnosti.
  4. Delitev tal na točke in izračun svetilnosti za le te
    To je najbolj obsežna funkcija, ki vključuje tako definicije vseh točk celotnega polja tako z realnimi koordinatami, kot tudi same koordinate v risalnem polju in svetilnost ter barvo v tej posamezni točki. Izračun po vseh točkah poteka tako, da se za vsako točko izračuna celotna svetilnost po posameznih lučeh, nato pa števec preide na naslednjo točko. V tem delu se tudi kliče numerični izračun integrala po Simpsonovi metodi, ki je vključen v datoteko "integ.js".
  5. Določitev razpona svetilnosti
    Za vse točke se ugotovi minimalno im maksimalno vrednost, kar določa razpon svetilnosti.
  6. Izračun barve posamezne točke
    Za vse točke je potrebno ob podanem številu barvnih prehodov izračunati barvo vsake posamezne točke v RGB (red green blue) vrenosti (od 0 do 255).
  7. Izris vseh točk
    To je zadnja faza programa in skrbi za izris vseh točk, ki so bile s programom izračunane. V tej stopnji se uporabljajo vse lastnosti "Raster" programske knjižnice.

S temi stopnjami je pojasnjena celotna struktura programa, posamezne funkcije pa se lahko ogledajo z desnim klikom miške na programskem polju in izbiro postavke "View source/Izvorna koda". Na sliki 3 je predstavljen izgled programa v delovanju za 3 krat 3 luči, pri vklopljenih [0,0], [0,2] in [1,1].

Slika 3
Slika 3: Izgled delovanja programa


Zaključek#

V vaji je bilo potrebno izdelati program za predstavitev osvetlenosti tal prostora. Za izris se potrebuje ogromno matematike in tudi poznavanje osnov programiranja s programskim skriptnim jezikom JavaScript in uporabo HTML sintakse, kot osnovo za večpredstavno stran. Iz osnov poznavanja jezikov je bilo potrebno ustvariti program, ki ni namenjen samo prikazovanju, ampak je tudi primeren za nadaljno uporabo, saj je izris osvetlenosti popolnoma sledi podanim parametrom. V programu sem se trudil delati strukturo na način, ki bi omogočal čim hitrejše delo. Program bi ob majhnih spremembah dovoljeval veliko večje površine in visoko število luči, kar bi popolnoma ustrezalo realnim pogojem, bi pa se s tem hitrost izrisa precej upočasnila. Sam program bi postal precej bolj zahteven z dodatkom, ki bi omogočal spreminjanje parametrov posameznih luči, in bi tudi hkrati upošteval odbojne parametre samega prostora.

Vaja je kljub poenostavitvam, ki ne zajemajo realnosti objektov, izredno poučna in zanimiva in hkrati tudi težavna.


Literatura#

1. Mesojedec Uroš : Java, Programiranje za Internet
2. Kladnik Rudolf : Osnove fizike 2
3. Hribar Peter : Spoznajmo JavaScript