Mi sa che l'algoritmo è come al cazzo. controllato uno step alla volta e, almeno l'unico caso provato, quello che ho scritto segue l'algoritmo:
preso da qui : https://it.wikipedia.org/wiki/Algori...a_di_BresenhamCodice:swap = 0; DX = x2 - x1; DY = y2 - y1; //siccome scambio DY e DX ho sempre DX>=DY allora per sapere quale coordinata occorre cambiare uso una variabile if (abs(DX) < abs(DY)) { swap(DX, DY); swap = 1; } //per non scrivere sempre i valori assoluti cambio DY e DX con altre variabili a = abs(DY); b = -abs(DX); //assegna le coordinate iniziali x = x1; y = y1; //il nostro valore d0 d = 2 * a + b; //s e q sono gli incrementi/decrementi di x e y q = 1; s = 1; if (x1 > x2) q = -1; if (y1 > y2) s = -1; disegna_punto(x, y); disegna_punto(x2, y2); for (k = 0; k < -b; k+=1) { if (d > 0) { x= x + q; y= y + s; d= d + 2 * (a + b); } else { x = x + q; if (swap==1) { y = y + s; x = x - q; } d = d + 2 * a; } disegna_punto(x, y); }
(nb: provata in vb, funziona. quindi l'algoritmo è ok)






Rispondi Citando