PRIMER KLIZANJA TELA NIZ STRMU RAVAN U PROCESSING-U
Simulacija klizanja tela niz strmu ravan predstavlja koristan način da se praktično prikažu osnovni zakoni fizike, uključujući sile gravitacije, trenja i reakcije podloge. Na strmoj ravni, telo pod uticajem težine doživljava razlaganje sile u komponente koje deluju paralelno i normalno u odnosu na površinu. Ova animacija u Processing-u koristi vizuelne elemente kako bi simulirala pokrete tela niz kosinu, uz uvođenje pokretnog koordinatnog sistema koji prati kretanje tela. Simulacija pomaže u razumevanju dinamike na kosoj ravni i čini učenje interaktivnijim.
Kreirajmo simulaciju klizanja nekog tela niz strmu ravan.
Telo se nalazi na strmoj ravni koja je pod nekim uglom alfa zaokrenuta u odnosu na horizontalnu ravan. Na telo deluje sila zemljine teže Q, i ona se može razložiti na 2 komponente: Fa koja je u pravcu paralelnom strmoj ravni i FN, normalnu komponentu koja je u pravcu normale na tu strmu ravan. Sila reakcije podloge N se kompenzuje sa ovom normalnom komponentom jer je istog pravca, ali suprotnog smera i ne utiče na kretanje. Sila trenja se suprotstavlja kretanju i ima pravac kose ravni, ali je suprotnog smera od vektora brzine.
Da bi telo počelo da se spušta mora da bude zadovoljen uslov:
Da bi telo počelo da se spušta mora da bude zadovoljen uslov:
Fa >= Ftr
Sila trenja je pasivna sila i postoji samo u slučaju da postoji aktivna sila koja teži da izazove kretanje tela i uvek ima pravac isti kao i brzina tela, ali suprotan smer. Aktivna sila je u ovom slučaju komponenta na pravac podloge od težine tela, označena sa Fa.
Sila trenja s jedne strane zavisi od vrste podloge i uticaj se meri koeficijentom trenja, a sa druge strane, zavisi i od intenziteta normalne sile na podlogu N. Sila trenja se dakle, izračunava:
Sila trenja s jedne strane zavisi od vrste podloge i uticaj se meri koeficijentom trenja, a sa druge strane, zavisi i od intenziteta normalne sile na podlogu N. Sila trenja se dakle, izračunava:
Ftr = μ * N;
gde je
μ - koeficijent trenja,
N - normalna sila koja deluje na podlogu
Da bi kreirali simulaciju uočimo pravougli trougao koji predstavlja tlo na koje se nalazi telo koje se kliza u pravcu hipotenuze.
katete trougla su poznate i označićemo naspramnu sa H(visina), a naleglu sa L.
Ugao alfa se može odrediti:
katete trougla su poznate i označićemo naspramnu sa H(visina), a naleglu sa L.
Ugao alfa se može odrediti:
alpha = atan(H/L);
Simulaciju ćemo kreirati u pokretnom koordinatnom sistemu vezanom za telo(X1 O1 Y1)
Pokretni koordinatni sistem se može dobiti translacijom XOY koordinatnog sistema prvo za H-height/2-h/2/cos(fi), a zatim rotacijom za ugao fi.
Otvorimo nov skeč, dodajmo setup i draw metode. U njima možemo da postavimo boju pozadine background(100) i da kreiramo oblike trougla i tela(pravougaonika).
Da bi mogli da kreiramo trougao, potrebno je prethodno definisati i inicijalizovati visinu H, kao i dužinu L. Unutar setup metode možemo izračunati ugao nagiba preko funkcije arkus tangens od H/L:
Za kreiranje tela, kao i trougla koristimo processing-ovu klasu PShape (vidi referencu: https://processing.org/tutorials/pshape)
Promenljive w i h predstavljaju širinu i visinu tela. Za ova dva oblika su podešene i boje za ispunu, metodom setFill i upotrebom metode color koja na osnovu RGB vrednosti kreira boju.
U nastavku vršimo pomeranje koo sistema pomoću translacija kao što je prikazano u narednom kodu:
Za kreiranje tela, kao i trougla koristimo processing-ovu klasu PShape (vidi referencu: https://processing.org/tutorials/pshape)
Promenljive w i h predstavljaju širinu i visinu tela. Za ova dva oblika su podešene i boje za ispunu, metodom setFill i upotrebom metode color koja na osnovu RGB vrednosti kreira boju.
U nastavku vršimo pomeranje koo sistema pomoću translacija kao što je prikazano u narednom kodu:
Ako pokrenemo kod videćemo:
Sledeće što treba uraditi je rotacija za ugao fi, i pomeranje početnog položaja translacijom za 50px:
rotate(fi);
translate(50,0);
translate(50,0);
Docrtaćemo još i koordinatne ose da bi pratili kako se pomera pokretni sistem: Sada kod izgleda kao na sledećoj slici:
Dodavanje kretanja telu
Da bi smo uveli kretanje tela, potrebno je da dodamo sledeće fizičke veličine:
PVector polozaj;
PVector v;
PVector a;
static final float G=9.81;
float m=1;
PVector v;
PVector a;
static final float G=9.81;
float m=1;
Vektor položaja određuje tačku centra tela koja kliza po kosoj ravni. Sa v je označena brzina tela, a je ubrzanje, G je gravitaciona konstanta i m je masa čija je vrednost postavljena na 1kg.
Unutar setup() metode treba dodati sledeći kod:
Unutar setup() metode treba dodati sledeći kod:
//Keiranje vektora ubrzanja, brzine i položaja, potrebnih za kretanje tela
a=new PVector(1,0);
v=new PVector(0,0);
polozaj=new PVector(50,0);
a=new PVector(1,0);
v=new PVector(0,0);
polozaj=new PVector(50,0);
Unutar draw() metode, treba dodati sledeće:
//kretanje
v.add(PVector.div(a,frameRate));
polozaj.add(v);
translate(polozaj.x,polozaj.y);
v.add(PVector.div(a,frameRate));
polozaj.add(v);
translate(polozaj.x,polozaj.y);
Vrednost intenziteta ubrzanja a se prvo podeli sa konstantom frameRate, da bi se dobila promena brzine za interval vremena između dva poziva draw() metode. Ova vrednost se dodaje vektoru brzine, koja će da uveća njen intenzitet. Na kraju, promena položaja je definisana vrednošću v, pa se koristi metoda add za vektorsko sabiranje položaja i vektora brzine v.
Više o vektorima pročitajte na strani: Vektori u Processing-u.
Više o vektorima pročitajte na strani: Vektori u Processing-u.
Kompletan skeč se može videti na sledećoj slici, gde je dodat kod za kretanje, podvučen crvenim linijama:
Na slici ispod, možete videti kako izgleda animacija klizanja tela niz strmu ravan.
Animacija ne radi? Učitajte stranicu ponovo(refresh)
← scroll horizontal →
Processing primer: Strma ravan 2
Prethodni primer klizanja tela niz strmu ravan, može dalje da se razvije, tako da klikom na kontrolnu tačku, istu selektujemo, a zatim sa prevlačenjem miša(mouseDragged) menjamo njenu visinu, a samim tim da se promeni i ugao nagiba kose ravni. Takođe treba da se prikažu i sledeći podaci: Brzina klizanja, ugao nagiba, sila trenja-intenzitet, kao i koeficijent trenja. Animacija je prikazana u nastavku, a rešenje(kod) na sledećosj strani.
Animacija ne radi? Učitajte stranicu ponovo(refresh)
← scroll horizontal →
Objašnjenje i kompletnu analiza primera pročitajte na strani: Analiza klizanja tela niz strmu ravan primer
Prethodno
|< Primer kosog hica u processingu |
Sledeće
Analiza klizanja tela niz strmu ravan primer >| |