Witam,
mam pewien problem z programem dotyczącym zderzeń obiektów (tutaj kul). Zazwyczaj kule odbijają się normalnie, ale czasami widać jak przy odbiciu jakby jedna z kul nachodziła, czy też "wbiła" się w inną i po czym dopiero od niej odbiła. Tutaj rodzi się właśnie pytanie. Jak temu zapobiec? Przeforsowałem sporą część stron www (grzecznie googlując), jednakże wszystko bez skutku.
Oto fragment kodu odpowiedzialnego za detekcję zderzeń. Funkcje isMovingFoward oraz zarzadzaj_odbiciem są nie istotne (tj. działają w 100%).
for(int x=0;x<liczba;x++){
for(int y=x+1;y<liczba;y++){ // y<=liczba
int xd = abs(tablica[x].x - tablica[y].x);
int yd = abs(tablica[x].y - tablica[y].y);
float sumRadius = tablica[x].r + tablica[y].r;
float sqrRadius = sumRadius * sumRadius;
float distSqr = (xd * xd) + (yd * yd);
if(distSqr<sqrRadius){
o++;
textprintf(screen,font,10,410,makecol(255,0,0),"Liczba kolizji: %i",o);
if(isMovingForward(tablica[x],tablica[y])==true){
zarzadzaj_odbiciem(tablica[x],tablica[y]);
}//if
}//if
}//for
}//for
Pozdrawiam