Računalniško podprto konstruiranje    -    Vaje 1996/97    -    3.letnik KGS

Opisna Geometrija



Definicija naloge

    Naloga je izdelava računalniškega programa, ki bi služil kot učni pripomoček za spoznavanje Opisne geometrije. Študentu bi predstavil 3D prostor z različnimi elementi, kot so osnovni geometrijski elementi: točka, premica in ravnina z različnimi liki ter osnovni prostorski elementi kot so prizma, piramida, stožec, valj in krogla.

    Zahteve naloge:

    1. Izdelajte razred (podprogram) računalniškega programa, ki bo omogočal predstavitev premice v 3D prostoru. Omogočeno mora biti določevanje premice:
    1. Izdelajte razred (podprogram), ki bo na osnovi znane premice in znane ravnine, ki sta določeni kot predstavnici svojega razreda, omogočil določitev točke preboda in njen izris v 3D prostoru ter na tlorisni in narisni ravnini.


Teoretične osnove

    Določitev premice

      Premica je v prostoru enolično določena z dvema različnima točkama, točko in smernim vektorjem ali s presekom dveh različnih ravnin. Za predstavitev premice se največkrat uporablja parametrična enačba premice:

              Sl.1: Parametrična predstavitev premice

      Krajevni vektor katerekoli točke na premici lahko dobimo s pomočjo znanih vektorjev r0 in p ter ustrezno izbiro parametra t.

    Določitev ravnine

      Ravnina je v prostoru enolično določena s tremi različnimi točkami, s premico in točko izven te premice, s točko in normalnim vektorjem ravnine ali s točko in dvema nekolinearnima vektorjema. Tudi tu se največkrat uporablja parametrična oblika enačbe ravnine:

              Sl.2: Parametrična predstavitev ravnine

      Enotsko normalo ravnine lahko dobimo z vektorskim produktom vektorjev a in b in normiranjem:

    Programski jezik Java

      Java je novejši objektno orientirani programski jezik. Objekti v programskih jezikih so skupki spremenljivk in metod (funkcij), ki definirajo stanje in obnašanje objektov. Prednosti objektnega programiranja so v modularnosti --programsko kodo objekta lahko napišemo in popravljamo neodvisno od ostalih objektov, objekte lahko enostavno prenašamo med sistemi-- in skrivanju informacij --objekt ima javen vmesnik preko katerega lahko z njim komunicirajo drugi objekti, lahko pa ima tudi skrite informacije in metode, ki jih lahko spremeni neodvisno od ostalih objektov (Black Box princip)--.

      V Javi je razred (class) neke vrste prototip objekta. Vsebuje spremenjljivke in metode, ki jih bodo imeli vsi objekti istega tipa. Nov objekt dobimo s klicanjem konstruktorja - metode v razredu, ki ima enak ime kot razred in ima nalogo ustvariti nov objekt tega tipa (alokacija spomina) in postaviti začetne vrednosti. Ko objekta ne potrebujemo več, je avtomatsko odstranjen iz spomina (garbage collected).

      Razredi so urejeni hierarhično po načelu dedovanja (subclass, superclass). Podrazredi podedujejo spremenljivke in metode razreda, ki nam jih tako ni potrebno pisati znova, dodamo ali spremenimo pa jim lahko spremenljivke in metode specifične temu podrazredu. Na ta način so najbolj splošni razredi po hierarhiji najvišje, najbolj specializirani razredi pa najnižje. Sorodni razredi so združeni v pakete (packages), ki jih lahko nato uporabimo pri pisanju programov.

      Java omogoča pisanje samostojnih programov ali pisanje applet-ov. Samostojni programi delujejo v svojem oknu ali ukazni vrstici, applet-i pa so vezani na datoteko HTML in jih lahko poganjamo v Java kompatibilnih pregledovalnikih.


Rešitev

Poleg razreda Premica, ki omogoča določitev in predstavitev premice v 3D prostoru, sem napisal oz. priredil še razrede osnovnih gradnikov geometrijskega prostora, ki sem jih nato uporabil pri pisanju razreda Premica. To so točka (razred Tocka), vektor (Vektor), ravnina (Ravnina) in tridimenzionalna transformacijska matrika (Matrix3D). Za predstavitev v prostoru sem napisal še razred Rhcs, ki postavi model koordinatnega prostora, in razred PremicaDemo, ki vse skupaj prikaže na zaslonu v obliki applet-a.

Dokumentacija razredov Premica, Ravnina, Rhcs, Tocka in Vektor je v obliki HTML datotek v poddirektoriju "docs".

Razred Premica