This document presents some basic theoretical properties about geometrical transformations in 3D. Beside geometrical transformations document presents technical data about the screws by DIN 479 standard and demonstrates a net model of a screw on the screen. This program allows some 3D transformations (rotations and translations).
Namen izdelave programa za 3D izris vijaka DIN 497 je spoznavanje teoretičnih osnov glede 3D transformacij (translacije, rotacije in skaliranja) ter spoznavanje programskega jezika HTML in Javascript skupaj z grafično knjižnico PHIGS. Uporaba Javascripta in HTML-ja je v zadnjem času vedno več v uporabi, predvsem zaradi interneta. S HTML in Javascrpt-om lahko sami oblikujemo spletne strani na internetu in na njih izvajamo želene programe.
Izdelajte program, ki bo omogočal izbor določenega vijaka glede na mere iz seznama po standardu DIN 479 in prikaz mrežnega modela vijaka z lokalnim koordinatnim sistemom v 3D prostoru, kjer naj bo označen globalni koordinatni sistem. Nad izrisanim modelom naj bo mogoče izvajati 3D transformacije.
- Rotacija točke v 3D prostoru:
Običajno se rotacija izvaja okrog določene osi. Spodaj predstavljena rotacija je okrog Z-osi. Princip za ostali dve transformaciji je isti le transformacijski matriki se razlikujeta predstavljeni sta v točki zapis transformacij v homogenih koordinatah (rotacija).
Program je narejen tako, da točke sproti izračuna in poveže. Ta način ne potrebuje rezervirane memorje za hranjenje točk v polju, kar je ugodno za računalnike z malo memorje, ker je točk sorazmerno veliko.
Celoten program je zgrajen s pomočjo 10 funkcij:
- izbire vijaka in branje podatkov potrebnih za izris
- začetne določitve lege vijaka
- zagona grafike
- izkanja točk znotraj ekrana
- translacije
- skaliranja
- rotacije
- projekcij (tloris in naris)
- izrisa krogov
- izrisa črt vijaka in koordinatnih sistemov
Pri izdelavi programa nisem uporabljal zgoraj predstavljenih teoretičnih osnov o transformacijah, zato spodaj predstavljam način, ki sem ga uporabil.
Rotacija je izvedena tako, da izračunamo nek nov vektor v, ki je zamaknjen za določen kot okoli z osi (vektorja ni). Nato vektorju k določimo nov položaj, ki je enak vektorju v. Dobljeni vektor k v novem položaju je osnova za izris vijaka.
Najprej določimo dva vektorja e1 in e2 katerima določimo dolžino, ki je enaka radiju kroga. Oddaljenost posamezne točke dobimo tako, da seštejemo posamezne komponente vektorjev e1 in e2. Vse ostale točke pa dobimo tako, da v programu uporabimo funkcijo, ki spreminja kot od 0 do 360 po koraku p. Del programa, ki določi razdalje tock tx in ty je predstavljen v spodnji enacbi.
Najprej sem določil razdalji W in ep, za tem pa lego posamezne točke. Začel sem pri tocki 0. Iz risbe je razvidno, da točko 0 dobimo tako, da seštejemo komponente vektorja k in nik. S seštevanjem komponent obeh vektorjev v različnih smereh določim položaje ostalih točk. Ostale točke na vijaku sem določil po istem postopku kot za točke na galavi vijaka le da sem uporabil druge vektorje smeri. Offsetx in offsety so točke središča lokalnega koordinatnega sistema.
Funkcija translacije je izvedana tako, da se spremijata spremenljivki pozicije offsetx in offsety, ki predstavljata pomik v horizontalni in vertikalni smeri po ekranu. Spodaj predstavljena funkcija je translacija v X smeri globalnega koordinatnega sistema. Koeficienta pred faktorjem z predstavljata smer koordinate X globalnega koordinatnega sistema.
function translacija(form,z)
{
if (form.tros[0].checked)
{
offsetx-=0.5*z/200.0;
offsety-=0.6123724*z/200.0;
}
Podprogram inicializacija služi zato, da se vijak izriše v želenem položaju. Komponente vektorja ni predstavljhajo nagib vektorja normale vijaka. Komponente vektorja k predstavljajo začetno rotacijo vijaka v prostoru. Offsetx in offsety so koordinate položaja začetnega izrisa vijaka. Skal je faktor povečave. Spodaj prikazana slika predstavlja začetni izris vijaka, ter zraven funkcija inicializacija.
Z enim izmed programov za urejanje datotek npr. WordPad odpremo datoteko podatki.js, ki se nahaja v direktoriju, kjer je shranjen program. V odprto datoteko dodamo nove podatke tako, da vpišemo spodaj prikazano vrstico z drugimi podatki. Npr., če želimo dodati nov vijak premera 10mm (M10) dodamo novo vrstico, kjer so že vpisani vijaki M10.
Spremembo moramo vpistai tudi v datoteki program.html. Z urejevalnikom besedil odpremo datoteko in v vrstico OPTION kjer so že zapisani ostali vijaki dodamo se želenega.
Vpisati je potrebno sledeče: