Poročilo ... Index ... Program

Vsebina:
  1. 1. Definicija naloge
  2. 2. Teoretične osnove
  3. 3. Geometrijske transformacije
  4. 4. Računalniski program
  5. 5. Zaključki
  6. 6. Viri informacij

1. Definicija naloge

Zahteva za nalogo je naslednja: v programskem jeziku "JavaScript" je potrebno napisati računalniški program, ki bo na osnovi podane enačbe ploskve sposoben narisati oz. generirati množico točk in jih nato grafično predstaviti kot ploskev v prostoru. Program mora omogočati skaliranje (povečevanje in pomanjševanje), translacijo (premik) in rotacijo izrisanega grafa. Osnovni gradniki ploskve - črte- morajo biti izrisani s pomočjo "PHIGS" grafične knjižnice.

Program mora ob ukazu za izris ploskve glede na minimalno in maksimalno zalogo vrednosti funkcije izračunati takšen skalirni faktor, da se ploskev vidi v celoti. Dobljeno ploskev nato lahko poljubno transformiramo z vgrajenimi geometrijskimi transformacijami.

Idejna rešitev seminarske naloge je prikazana na spodnji sliki.

Shema idejne resitve

Slika 1: Idejna rešitev seminarske naloge

Nazaj na kazalo


2. Teoretične osnove

Analitične površine so posebna veja matematike, in sicer analitične geometrije, ki obravnava geometrijo oz. geometrijska telesa z nekimi analitičnimi metodami. Njen začetnik je bil Descartes. Kartezične koordinate točk na površini ustrezajo določenim enačbam ali neenačbam, iz katerih lahko izvedemo nekatere izreke o površini. V matematiki je poznanih nekaj značilnih površin, ki jih definirajo enačbe s točno določeno strukturo. Tako si lahko že iz pogleda na tako enačbo ustvarimo približno sliko o legi in izgledu ploskve v prostoru. Površine v matematiki strokovno imenujemo ploskve drugega reda. Dejansko le - te niso nič drugega kot zaloge vrednosti matematičnih funkcij dveh spremenljivk, ki jih grafično prikazemo kot ploskve.

Osnovni princip generiranja analitične površine je prikazan na spodnji sliki:

Generiranje ploskve v prostoru

Slika 2: Princip generiranja analitične površine

Pri tem predstavlja izraz f(x, y) prej omenjeno enačbo površine. To je nek "predpis", ki dvema točkama iz ravnine x - y, "priredi" novo točko (x, y, z), ki je za razdaljo z odmaknjena od x - y ravnine oz. definicijskega območja funkcije. Na ta način je dobljena vsaka točka na ploskvi, če pa postopek izvedemo za vsako točko ravnine x - y, s tem dobimo množico točk (x, y, z), ki nam definirajo ploskev.

Ploskve drugega reda delimo na prave in degenerirane (izrojene). Prave ploskve so: elipsoid, eliptični paraboloid, hiperbolični paraboloid, ter enodelni in dvodelni hiperboloid. Neprave ploskve so tiste, ki so izrojene v pare ravnin ali pa točke. Vsega skupaj poznamo 5 pravih in 12 degeneriranih ploskev drugega reda.

Nekaj najbolj značilnih tipov ploskev, ki so centrirane v koordinatnem izhodišču, je skupaj z enačbami zbranih v spodnji tabeli.

Tabela 1: Ploskve drugega reda:
Slika ploskve Ime telesa Enačba ploskve
Slika troosnega elipsoida Troosni elipsoid
Slika rotacijskega hiperboloida Rotacijski hiperboloid
Slika elipticnega paraboloida Eliptični paraboloid
Slika hiperbolicnega paraboloida Hiperbolični paraboloid
Slika stozca Stožec

Nazaj na kazalo
3. Geometrijske transformacije

Geometrijske transformacije so matematične operacije, ki neko točko v prostoru preslikajo v novo točko. Povezava med staro in novo točko je izvedena s pomočjo 4×4 matrike, katere zgradba določa, kje nova (transformirana) točka leži. Tako poznamo tri glavne geometrijske transformacije - translacijo, rotacijo in skaliranje. Da lahko omenjene geometrijske transformacije obravnavamo na enak način in da jih med seboj lahko kombiniramo, uporabljamo homogene koordinate.

V kartezičnem koordinatnem sistemu je točka predstavljena s tremi koordinatami in sicer z (x, y, z). Homogeni koordinatni sistem pa za opis točke v prostoru potrebuje štiri koordinate, ki so (X, Y, Z, W). Povezava med kartezičnim in homogenim koordinatnim sistemom je definirana takole: x = X / W, y = Y / W in z = Z / W. V računalniški grafiki je konstanta W vedno enaka 1.

Z zapisom točk v homogenih koordinatah, se transformacijske matrike zapišejo na način, ki je prikazan v spodnji tabeli:

Tabela 2:Geometrijske transformacije
Translacija
Skaliranje
Rotacija okoli X osi
Rotacija okoli Y osi
Rotacija okoli Z osi

Geometrijska transformacija se dejansko napiše z eno samo matrično enačbo: A2 = [M] × A1 , kjer je A1 začetna (stara) točka, A2 končna (transformirana) točka, [M] pa ustrezna transformacijska matrika, katere elementi so podani v zgornji tabeli.

Nazaj na kazalo


4. Računalniski program

Računalniški program sem napisal v jeziku JavaScript. To je skriptni programski jezik, ki se uporablja za spletne predstavitve. Razvijati ga je začelo podjetje Netscape Communications, ki je želelo svoj spletni brskalnik Navigator opremiti z nekaj predmeti, ki bi bili na nek način "programljivi". Netscape je bil prvi izdelovalec, ki je vgradil podporo javanske kode v svoj spletni brskalnik.

JavaScript je nekaj povsem drugega kot Java. JavaScript je "programljiva" razširitev jezika HTML in kot tak ne omogoča izdelave samostojnih programov, ampak le nadzoru obstoječega programja in podatkov, kodiranih v HTML. Zato se uporablja za reševanje manj zapletenih problemov. Programska koda, napisana v JavaScriptu ima nadvse "lepo" lastnost: zelo enostavno jo je uporabiti. Ker ne potrebujemo posebnih urejevalnikov, prevajalnikov in izvajalnih okolij, jo lahko uporabljamo, preizkušamo in razvijamo povsem enako, kakor predstavitve HTML. To gre približno takole: napišemo nekaj kode, poženemo spletni brskalnik in si ogledamo rezultat. Njena bistvena prednost je hitro popravljanje in spreminjanje, kar pomeni, da se lahko programiranja učimo tudi po sistemu preizkusi - popravi.

V uvodnem oknu je hiperpovezava do glavnega okna programa, ki omogoča izris ploskve in spreminjanje vseh njenih glavnih parametrov, kot so npr. meje definicijskega območja, gostota mreže, ki definira ploskev, njena enačba ter velikost in položaj le-te v prostoru.

PHIGS - Programmer's Hierarchical Interactive Graphics System, je grafična knjižnica, ki vsebuje približno 400 funkcij, ki uporabniku omogočajo prikaz in manipulacijo z 2D in 3D objekti. To je mednarodni standard, ki ga je ustanovila mednarodna organizacija za standardizacijo - ISO. PHIGS vsebuje nabor sorodnih grafičnih objektov, ki jih strokovno imenujemo primitivi, vsakemu objektu pa pripadajo atributi, ki definirajo mesto, smer, barvo in prikaz le - tega. Ta princip bomo uporabili za končni izris našega grafa funkcije.

Zelo pomembno vlogo v programu imajo že opisane geometrijske transformacije, ki omogočajo uporabniku, da si ploskev ogleda iz vseh zornih kotov, jo skalira ali premika.

Programska koda je razdeljena na tri glavne module, in sicer:

Prvi korak je definiranje vseh parametrov, ki so potrebni za izračun in izris grafa. Omenjene parametre vnese uporabnik v ustrezna vnosna polja. Ko kliknemo na gumb za izris grafa, program najprej izračuna koordinate vseh točk na ploskvi, nato pa te koordinate najprej transformira v 2D, saj za izris potrebujemo samo X in Y koordinati.

Izračunane točke nato še povežemo med seboj. Izris grafa poteka v dveh zaporednih fazah: najprej izrišemo črte, ki so paralelne z Y osjo, nato pa še črte, paralelne z X osjo. Izrisan graf je transparentna mreža točk.

Najprej je program deloval izredno počasi, saj je nekajkrat izračunaval ene in iste točke. Nato sem kodo predelal, in sicer tako, da se koordinate točk izračunajo samo enkrat, nato pa se jih enostavno uporabi za izris grafa, izpis minimalne in maksimalne koordinate Z ter izris kvadra okoli grafa, ki je izrisan samo za boljšo prostorsko predstavo grafa. V kodi je dodanih še nekaj vrstic, ki definirajo izris obeh koordinatnih sistemov ter izpis oznak ob oseh.

Nazaj na kazalo


5. Zaključek naloge

Problem, ki sem ga obravnaval, je povsem matematične narave, zato upam, da bo program koristil kakšnemu matematičnemu navdušencu, žal pa je izrisan graf samo transparentna mreža točk, tako, da se nekatere ploskve ne vidi prav dobro, kar pa lahko rešimo z definiranjem gostejše mreže oz. bolj drobne delitve, to pa na žalost nekoliko podaljša čas izračuna točk in izris ploskve. Program je uporaben predvsem za vizualizacijo (prostorsko predstavitev) ploskve, ki je definirana z enačbo.

To je moj prvi resnejši računalniški program in lahko rečem, da sem se pri njegovi izdelavi veliko naučil. Prej nisem poznal ne HTML-ja in ne JavaScript-a, kar mi je na začetku povzročalo nemalo problemov. Na koncu pa sem ugotovil, da programiranje v omenjenih jezikih sploh ni tako zelo težko, kot sem si na začetku predstavljal. V ta program sem vložil ogromno truda in časa, mislim pa, da se mi bo to obrestovalo.

Za konec bi se rad zahvalil vsem sodelavcem laboratorija LECAD za strokovno pomoč, predvsem pa se zahvaljujem mojemu mentorju, ki je potrpežljivo odgovarjal na moja vprašanja!

Oglejmo si še dva podobna programa za izris grafa funkcije dveh spremenljivk, ki sem ju našel na internetu. Oba sta programirana v Javi, omogočata pa tudi izvajanje osnovnih geometrijskih transformacij.

Nazaj na kazalo
6. Viri & literatura
© by 1021