Univerza v Ljubljani
Fakulteta za strojnistvo
Laboratorij LECAD

Avtor: Igor Turk
Mentor: Janez Vrhovec

11.1. VIJAK PO STANDARDU DIN 479 V 3D PROSTORU


KAZALO

1.0. ABSTRACT

2.0. UVOD

3.0. NAVODILA ZA IZDELAVO

4.0. OSNOVNI GEOMETRIJSKI PODATKI VIJAKA DIN 497

4.1. RISBA VIJAKA

4.2. MERE VIJAKOV

5.0. TEORETIČNE OSNOVE

5.1. TRANSFORMACIJE

5.2. ZAPIS TRANSFORMACIJ V HOMOGENIH KOORDINATAH

6.0. ZGRADBA PROGRAMA

6.1. PREDSTAVITEV ROTACIJE

6.2. DOLOČITEV TOČK NA KROGU

6.3. DOLOČITEV TOČK NA GLAVI VIJAKA

6.4. FUNKCIJA SKALIRANJA

6.5. FUNKCIJA TRANSLACIJE

6.6. FUNKCIJA INICIALIZACIJA

7.0. DODAJANJE VIJAKOV

8.0. ZAGON PROGRAMA

9.0. ZAKLJUČEK

10.0. UPORABLJENA LITERATURA


1.0. ABSTRACT

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).

2.0. UVOD

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.

3.0. NAVODILA ZA IZDELAVO

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.

4.0. OSNOVNI GEOMETRIJSKI PODATKI VIJAKA DIN 497

4.1. RISBA VIJAKA

4.2. MERE VIJAKOV


5.0. TEORETIČNE OSNOVE

5.1. TRANSFORMACIJE

- Rotacija točke v 3D prostoru:


- Skaliranje točke v 3D prostoru:


- 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).

5.2. ZAPIS TRANSFORMACIJ V HOMOGENIH KOORDINATAH

- Translacija:
- Skaliranje:
- Translacija:

a) okoli X osi:
b) okoli Y osi:
c) okoli Z osi:

6.0. ZGRADBA PROGRAMA

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.

6.1. PREDSTAVITEV ROTACIJE


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.

6.2. DOLOČITEV TOČK NA KROGU


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.

6.3. DOLOČITEV TOČK NA GLAVI VIJAKA

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.

g[0]=new Ppoint(offsetx-w*nik[1]+ep*k[1]),(offsety-w*nik[2]+ep*k[2]);
g[1]=new Ppoint(offsetx+w*nik[1]+ep*k[1]),(offsety+w*nik[2]+ep*k[2]);
g[2]=new Ppoint(offsetx+ep*nik[1]+w*k[1]),(offsety+ep*nik[2]+w*k[2]);
g[3]=new Ppoint(offsetx+ep*nik[1]-w*k[1]),(offsety+ep*nik[2]-w*k[2]);



Pri določitvi točk na glavi vijaka sem uporabil drugi vektor ni, ki kaže v smeri vijaka.

for (i=0;i<4;i++)
var g1=new Array();
g1[0]=new Ppoint(g[i*2].x,g[i*2].y);
g1[1]=new Ppoint(notx(g[i*2].x+w*ni[1]),noty(g[i*2].y+w*ni[2]));
g1[2]=new Ppoint(notx(g[i*2+1].x+w*ni[1]),noty(g[i*2+1].y+w*ni[2]));
g1[3]=new Ppoint(g[i*2+1].x,g[i*2+1].y);

6.4. FUNKCIJA SKALIRANJA

Funkcuija skaliranja omogoča povečavo ali pomanjšanje, pri tem se skal faktor spreminja poveča ali pomanjša.

function povecaj(z)
{skal*=z}

function pomanjsaj(z)
{skal/=z}

6.5. FUNKCIJA TRANSLACIJE

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;
}

6.6. FUNKCIJA INICIALIZACIJA

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.





7.0. DODAJANJE VIJAKOV

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: