I created a programme for calculation of refractable, static defined carrier in 3D space. We can use all types of supports and all three types loads on carrier in combination of all these. The programme calculates reactions in supports, moments,forces and also draws diagrams of this values.
Izdelajte program za preracun notranjih sil in momentov za raven nosilec v 3D prostoru. Obdelani naj bodo razlicni primeri staticno dolocenega vpetja in razlicni primeri obremenitev: koncentrirane sile na razlicnih pozicijah, kontinuirano porazdeljena sila na dolocenem odseku in kombinacija obeh primerov. Rezultati preracuna naj bodo prikazani graficno skupaj s shematskim prikazom nosilca in vpetja. Program izdelajte s programskim jezikom Java ali JavaScript (izris s pomocjo PHIGS knjiznice).
Konzolni nosilec Slika 1:Konzolni nosilec je primer staticno dolocene konstrukcije. Vpetje je enostransko in fiksno, tako da prenasa sile v vse smeri. Prav tako tudi momente.
Nosilec na dveh podporah Slika 2:Nosilec na dveh podporah je podprt z dvema podporama, kjer je prva podpora fiksna in prenasa sile v vseh treh smereh, druga pa le v dveh. V eni smeri se lahko prosto pomika. Ti dve podpori momentov ne prenasata. Tudi to je staticno dolocena konstrukcija.
Izris sem naredil v dveh delih. Prvi del je izris pri vnasanju podatkov, drugi del je izris rezultatov. Pri vnasanju podatkov se mi nosilec samodejno rise ob vnasanju tock. Nanj se risejo tudi vse vnesene obremenitve in podpore, tako da dobimo stvarno predstavo o nosilcu. Dimenzije nosilca so v razmerju med seboj, dimenzije obremenitev so le orientacijske. Pri prikazovanju rezultatov lahko le te prikazemo v izometricni projekciji po prednastavljenem kotu rotacije ali po zeljenem kotu. Poleg tega so mozni pogledi po posameznih ravnina (XY-ravnina, XZ-ravnina in YZ-ravnina) zaradi jasnosti nekaterih diagramov. Zaradi preglednosti se diagram posamezne notranje velicine izrise posebej.
HOMOGENE KOORDINATE:
Beseda homogen pomeni enoten, enovit. Bistvo homogenih koordinat je v tem da lahko za skalacijo, rotacijo in translacijo uporabimo eno in isto funkcijo, le matriko v funkciji menjamo glede na zeljeno transformacijo. V teh matrikah imamo se utez w, ki pa ima navadno vrednost 1. Utez je vedno razlicna od 0.
Imamo tocko A(x,y,z). Zapisali bomo transformacijsko matriko:
[x*,y*,z*]=[x,y,z]*R*S+T
-skalacija S
-rotacija R
Pri rotaciji se uporabljajo za rotacijo okrog posamezne osi razlicne matrike, ki so pa opisane v poglvju Rotacija. Primer rotacijske matrike okoli osi x:
-translacija T
X* = Sx * X
Y*= Sy * Y
Z*= Sz * Z
Obicajno se rotacija izvaja okrog dolocene osi. Spodaj predstavljena rotacija je okrog Z-osi. Princip za ostali dve rotaciji je isti, le rotacijski matriki se razlikujeta.
-Okrog X osi:
-Okrog Y osi:
-Okrog Z osi:
Program je sestavljen iz dveh delov. Prvi je racunski del, drugi je izris. V racunskem delu sem najprej izracunal vse velicine nosilca, tako da sem potem lahko enostavno nadaljeval s samim izrisom. Za izvedbo racunskega dela je bilo potrebno dobro znanje vektorjev. Poleg teh dveh delov pa program vsebuje tudi zapis v datoteko Slika 4:Datoteka
V racunskem delu programa sem za dolocitev koordinat uporabljal vektorje. Vsaka tocka ima koordinate x, y, in z. Najenostavnejse in najlazje je dolociti in ugotoviti medsebojno relacijo tock z vektorji. Ker so vsi nosilci prostorski, zato ni problematcna uporaba vektorjev. Uporaba taksnega dolocanja tock mi je pozneje zelo olajsala delo pri racunanju transformacijskih matrik. Najenostavneje je dolociti lego tocke s pomocjo vektorjev. Uporaba:
Pri izrisu nosilca in rezultatov sem poleg zgoraj nastetih operacij z vektorji uporabljal se dodatne funkcije poleg translacije, rotacije in skalacije:
function izrisKroga(sx,sy,pkotx,pkotz,pkoty,texst,color,r){ var xkrog=new Array(); var ykrog=new Array(); var deg=Math.PI/180; var tockaKrog=new Array(); var tockaPuscicaKroga=new Array(); for(var k=0; k 281; k++){ zkroga=r*Math.cos(k*deg); ykroga=r*Math.sin(k*deg); xkroga=0; rotx=xkroga; roty=ykroga; rotz=zkroga; rotacijaPoljubno(rotx,roty,rotz,pkotx,pkotz,pkoty); tockaKrog[k]=new Ppoint(x111+sx,y111+sy); } var tockaS=new Ppoint_list(k, tockaKrog); pset_line_colr_ind(color); pset_text_colr_ind(color); ptext(new Ppoint(tockaKrog[280].x+0.03, tockaKrog[280].y+0.03), texst); ppolyline(tockaS);
function izrisSile(sx,sy,skotx,skoty,skotz,texst,color){ var sila=new Array(); sila[0]=new Array(0,0,0); sila[1]=new Array(0.1,0,0); sila[2]=new Array(0.08,0,0.005); sila[3]=new Array(0.08,0,-0.005); sila[4]=new Array(0.1,0,0); var tockaSila=new Array(); for(var k=0; k 5; k++){ rotx=sila[k][0]; roty=sila[k][1]; rotz=sila[k][2]; pkotx=skotx; pkoty=skoty; pkotz=skotz; rotacijaPoljubno(rotx,roty,rotz,pkotx,pkotz,pkoty); tockaSila[k]=new Ppoint(x111+sx,y111+sy); } var tockaS=new Ppoint_list(k, tockaSila); pset_line_colr_ind(color); pset_text_colr_ind(color); ptext(new Ppoint(tockaSila[4].x+0.002, tockaSila[4].y+0.002), texst); ppolyline(tockaS); }
Program NTM 1.0 ni IDEAS ali kateri od podobnih programov za izracun notranjih velicin nosilcev,je dokaz da se lahko z uporabo internetnih orodij lahko dokaj dobro in enostavno dobi rezultate(sicer ne tako tocne) kot bi jih za enak sistem v profesionalnem programu. Ni zahteven za uporabo. Z njim si lahko lazje predstavljamo nosilec in obremenitve nanj, ter sproti z vnasanjem dolocamo geometrijo! Prednost programa je tudi uporabnost pri snovanju, ker lahko preizkusimo vec modelov in nato te rezultate tudi primerjamo med seboj.
Janez Benedicic