3.1 Translacija točke v ravnini x-y
3.2 Rotacija točke v ravnini x-y
3.3 Skaliranje točke v ravnini x-y
3.4 Matrični zapis transformacij v kartezijevem koordinatnem sistemu
3.4.1 Translacija
3.4.2 Rotacija
3.4.3 Skaliranje
3.5 Matrični zapis transformacij v homogenem prostoru
This document present some basic properties about geometrical transformations in 2D space.
For example of using geometrical transformation is written a program for drawing a screw
by DIN 7990 standard. The screw could be moved, rotated and scaled in x and y direction.
V programskem jeziku Javascript (skupaj z emulacijo knjižnice PHIGS) izdelajte program, ki
naj omogoča izbor določenega vijaka iz seznama (vijak po standardu DIN 7990) in nato
izris le-tega po izbiri v narisu in tlorisu ali samo v narisu. Izris naj poteka
v 2D prostoru, kjer morata biti prikazani koordinati osi x in y.
Program naj vsebuje funkcije, ki omogočajo prikaz osnovnih transformacij (translacija v x in y smeri,
rotacija v levo in desno in skaliranje) v 2D prostoru in s tem postavitev vijaka na poljubno
mesto v ravnini. Program naj bo izdelan tako, da ga bo možno kasneje čim enostaveje dograditi
ali prilagoditi.
Program je sestavljen predvsem iz dveh delov; iz vnosnega dela (javascript) in grafičnega
dela (javascript + knjižnice phigsa).
Podatke za izris vijaka program prebira s pomočjo funkcije za branje iz datoteke - baze
podatkov (v mojem primeru je ime datoteke: datav). Prebrane podatke program pretvori z nekim
faktorjem, ki je potreben, da se bo vijak izrisal v določenem velikostnem območju.
Sledi funkcija, ki glede na podano izhodiščno točko in z prebranimi podatki izračuna
posamezne točke vijaka. Izračunane točke lahko z funkcijo za transformacijo transformiramo.
Da bi lahko izrisali enkrat naris in tloris vijaka enkrat pa samo naris sem naredil dve funkciji;
v eni sem izrisal naris v drugi pa tloris. Funcije pa sem nato skupaj sklical v neki glavni
funkciji in ko želim izrisati naris in tloris pač skličem v glavni funkciji izrisani naris in
tloris. Ko želim vijak transformirati pokličem tudi funkcijo za transformacijo točk.
4.2 Dopolnitev programa:
Program sem poskušal izdelati tako, da je čim preglednejši in tako lažje prilagodljiv. To
sem dosegel z že omenjenimi delitvami na funkcije in z definiranjem globalnih spremenljivk.
Na tak način izdelan program je tudi enostaven za dopolnitev. Če želimo izrisati vijak, ki ga
trenutno v programu ni ga enostavno dogradimo. Postopek nadgradnje bom razložil na primeru, da
želimo dodati vijak M27×80:
1. v datoteki, ki je baza podatkov: podatki so vpisani po vrstem redu zato je najbolje da se
vrstnega reda držimo tudi pri nadgradnji. Vijak v našem primeru spada med vijake M27 in
glede na dolžino (l) ga vrinemo med M27×60 in M27×90. Potrebne podatke o vijaku
vpišemo v vrstico strogo po predpisanem vrstem redu, ki je napisan kot opomba v prvi vrstici
datoteke.
2. v programu: v programu uvedemo spremembo samo v izdelavi zavesnega menija, kjer izbiramo
vijake za izris. V formo zavesnega menija na pripadajoče mesto vpišemo
3. če imamo program že v izvajanju, ga moramo po opravljeni spremembi končati in ponovno
zagnati (če samo osvežimo - reload v programu Netscape - nam program javi napako.)
Vijak izrišemo tako da kliknemo gumb "Tloris in naris".
6.3 Izris kotiranega narisa vijaka:
Naris vijaka izrišemo z klikom na gumb "Naris vijaka", na narisu v osnovnem položaju
sem kotiral glavne mere.
6.4 Rotacija narisa vijaka:
V okence zapišemo kot (v stopinjah) za katerega želimo zarotirati naris, nato pa kliknemo
enega od gumbov "v levo" ali "v desno", odvisno od tega v katero smer želimo rotirati.
Podoben je tudi postopek za skaliranje in translacijo.
Pri izdelavi programa sem spoznal osnovne elemente programiranja v JavaScriptu in JavaScriptu
z dodatkom knjižnic iz Phigsa, seznanil pa sem se tudi z osnovnimi geometrijskimi
transformacijami v ravnini.
Pri izdelavi programa sem se, kot sem že omenil, držal oblike programa pri kateri je program
sestavljen iz posameznih funkcij. Kljub temu da sem čimveč programiral z polji je končni
program dokaj dolg in počasen.
Če bi hotel program popolnoma zoptimirati bi se mogel posvetiti programiranju v C++.