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.