Citat:
zaraza: kako racunati odbijanje dva kruga, a da se oni naravno odbiju kako treba?
razmisljao da postavim tangentu pri sudaru na jedan od njih i posle toga bi trebalo prakticno odbiti ovaj drugi kao od zid...
e problem je sto nemam pojma kako ide jednacina za tangentu kruga, a nesto ni na netu nisam uspeo da nadjem
u stvari jel ima neko drugaciji predlog?
Code:
//SUDAR KRUZNICA
//(x,y)-centar prvog kruga
//(x2,y2)-centar drugog kruga
//r,r2-boluprecnici
//bx,by projekcije brzine prvog na ose
//bx2,by2 projekcije brzine drugog na ose
double ras=sqrt( ( (x2-x)*(x2-x) )+( (y2-y)*(y2-y) ) );//rastojanje cenara kruznica
//ako je zbir oba poluprecnika veci ili jednak trenutnom rastojanju centara
if(ras<=(r+r2)){ // desio se sudar,trazi tacku sudara
double sx,sy,cos_a,sin_a; //koordinate sudara i ugao tacke sudara
cos_a=(x2-x)/ras; //cosinus ugla tacke sudara
sin_a=(y2-y)/ras; //sinus ugla tacke sudara
sx=x+r*cos_a; //x-koordinata tacke sudara
sy=y+r*sin_a; //y-koordinata tacke sudara
//sad kada imamo tacku sudara neka odbijanje pocne
//sila odbijanja deluje od (sx,sy) prema (x,y) odnosno centru ,tako da imamo njen
//pravac i smer ali ne i intenzitet,intenzitet sile u realnim uslovima zavisi od mase
//ali neka ovde zavisi od poluprecnika krugova i njihovih brzina.
double silax,silay,sila;
double bu,bu2; //ukupna brzina
bu=sqrt(bx*bx+by*by); //ukupna brzina prvog
bu2=sqrt(bx2*bx2+by2*by2); //ukupna brzina drugog
//OVE SILE SU ZA PRVU KRUZNICU
sila=(bu+bu2)/(drugi.r/r);
silax=sila*cos_a; //sila po x-osi
silay=sila*sin_a; //sila po y-osi
//sada imamo dve sucenjene sile koje se sabiraju po principu paralelograma
//ali posto imamo njihove projekcije na ose, mozemo da saberemo njiove vrednosti
bx=-silax;
by=-silay;
//znak minus zavisi kako stoji koordinatni sistem,ovde je (0,0) u levom gornjem uglu
}