[C]Symulacja zderzeń kulek
Ostatnio zmodyfikowano 2015-01-04 19:02
Entgen Temat założony przez niniejszego użytkownika  | 
[C]Symulacja zderzeń kulek » 2015-01-04 14:47:23 Mam za zadanie napisać program w C symulujący ucieczkę ludzi z budynku. Ludzie mają byc przedstawieni w postaci kulek i mają się kierować w strone wyjścia na oślep mogą się przy tym ze sobą zderzyć, przez co przez chwilę pruszają się bezwładnie, ale po kilku krokach orientują się w przestrzeni i znów nadają sobie prędkość w kierunku wyjścia. Może potem dojść do następnych zderzeń.Mam dwa poważne problemy przy losowaniu współrzędnych ludzi w budynku nachodzą oni na siebie i nie mogę tego wyeliminować oraz nie działa mi zderzania się ludzi, które powinien realizować poniższy fragment kodu. Uprzejmie proszę o pomoc i z góry dziękuje. for( int j = 0; j < N; j++ ) {     L = sqrt(( x[ i ] - x[ j ] ) *( x[ i ] - x[ j ] ) +( y[ i ] - y[ j ] ) *( y[ i ] - y[ j ] ) );     if( L < 2 * w )     {         v1x = vx[ i ] - vx[ j ];         v1y = vy[ i ] - vy[ j ];         nx =( x[ i ] - x[ j ] ) / L;         ny =( y[ i ] - y[ j ] ) / L;         vnx =( v1x * nx + v1y * ny ) * nx;         vny =( v1x * nx + v1y * ny ) * ny;         vx[ i ] = vx[ i ] +( v1x - vnx );         vy[ i ] = vy[ i ] +( v1y - vny );         vx[ j ] = vx[ j ] + vnx;         vy[ j ] = vy[ j ] + vny;     } }  | 
 | 
Joda332  | 
» 2015-01-04 19:02:12 Co do losowania pozycji ludzi zrób na zasadzie tabeli tzn. że jakaś postać może się wylosować w przedziale x > 0, x < 100, y > 0, y < 100 a np druga postać będzie sie losować w przedziale x > 100, x < 200, y > 100, y < 200 wtedy postacie nie będą na siebie nachodzić po wylosowaniu. Jeśli masz zmienną liczbę ludzi to możesz zrobić tak : int ludzie = 15,  a = 0, osoba = 0, postac_x[ ludzie ], postac_y[ ludzie ], szer_kratki_los_x,  szer_kratki_los_y, 
 
  kol_x = 5, kol_y = 3, kol_szer = 500 kol_x, kol_wys = 500 kol_y, poz_x = 0, poz_y = 0;
  do { postac_x[ ludzie ] = 0, a++ } while( a != ludzie ); a = 0; do { postac_y[ ludzie ] = 0, a++ } while( a != ludzie ); a = 0;
  do {     postac_x[ osoba ] = losowanie_szeroko ś ci_w_przedziale( postac_x[ osoba ] > poz_x * kol_szer && postac_x[ osoba ] < poz_x + 1 * kol_szer );          postac_y[ osoba ] = losowanie_wysoko ś ci_w_przedziale( postac_y[ osoba ] > poz_y * kol_wys && postac_x[ osoba ] < poz_y + 1 * kol_wys )          if( poz_x == 4 ) poz_x = 0, poz_y++;      } while( poz_x != 4 && poz_y != 4 ); poz_x = 0, poz_y = 0;
  Jak się nie mylę to będzie coś takiego, próbowałem zrobić coś takiego że wystarczy podać ilość ludzi a pogram sam poda ilość kolumn i wgl. Ale działało tylko jak liczbę ludzi można było spierwiastkować tak by wynikiem była liczba całkowita. Pozdrawiam mam nadzieje że to ci pomoże, przy okazji jak i symulacja to i silnik graficzny a więc jaki jak to kiedyś do mnie admin przemówił nie mamy niestety szklanej kuli :D  | 
 | 
|  « 1 »  |