Problem z wyliczaniem parametrów prostej

0

Witam oto mój program:

for(j=MinDist; j<35/*MapSize_y-MinDist*/; j++){
for(i=MinDist; i<MapSize_x-MinDist; i++){
     
     if(tab[i][j]==1){
          if(i - Range_x <=0) A=2; else A=i-Range_x;
          if(i + Range_x >=MapSize_x) B=MapSize_x-1; else B=i+Range_x;
          if(j - Range_y <=0) C=2; else C=j-Range_y;
          if(j + Range_y >=MapSize_y) D=MapSize_y-1; else D=j+Range_y;
                  
          
          for(y=C; y<=D; y++){
          for(x=A; x<=B; x++){
                   
                   if((tab[x][y] == 1) && (i != x) && (j != y)){
                   if(i-x == 0) a = 4*Range_y; else a = (j-y)/(i-x);
                   a = (j-y)/(i-x);
                   b = (j-a*i);
                  // fprintf(fileOut, "x=%d y=%d i=%d j=%d ix=%d jy=%d a=%f b=%f \n", x, y, i ,j ,i-x, j-y, a, b);
                   putline(a, b, i, j ,x ,y, province_colors, 15, screen2);
                       apply_surface(0, 0, screen2, screen);
                                        if( SDL_Flip( screen ) == -1 )
                                        {
                                        return 1;
                                        }
                   SDL_Delay(500);
                   }
          }}
          
          
     }
    
}}

Program wyszukuje w tablicy tab[][] punktów które są w nim zapisane jako jedynki 1, reszta tabeli wypełniona jest 0-mi. Po znalezieniu takiego punktu (oznaczmy go p1) program wyznacza granice w których będzie szukał jego sąsiadów (cztery warunki if()). Po znalezieniu sąsiada (oznaczmy go p2) przechodzi do wyznaczania parametrów prostej wg znanych z matematyki wzorów:
p1 = (i,j)
p2 = (x,y)
a = (j-y)/(i-x) b = j - a*i

zmienne x,y i, j są typu int
zmienne a i b są typu double

I na podstawie tych parametrów rysuje pomiędzy punktami prostą, funkcja putline (funkcja działa dobrze już sprawdzałem). Problem w tym że błędnie wyznacza współczynnik kierunkowy prostej a. W załączniku przesyłam wyliczone wielkości. Widać od razu że część (a to też dziwne) jest policzona źle. Proszę o pomoc.

0

sierotko, nie produkuj dubli. Twój pierwszy post był przeniesiony do newbie, pozostałe kopie są w koszu (np. http://4programmers.net/Forum/Kosz/195476-problem_z_rysowaniem_fukcji_liniowej_dokladnie_z_parametrametrem_a). dla ułatwienia Ci zorientowania się co to za magia ze znikającymi postami, ten na razie zostawię w tym dziale, a ten z newbie przeniosę do kosza jako kolejny dubel. za jakiś czas szukaj tego wątku w dziale newbie.

[edit] the time has come -> newbie

1 użytkowników online, w tym zalogowanych: 0, gości: 1