Quell'algoritmo l'ho messo io e a me funziona, e tutt'ora utilizzo quello quando mi serve conoscere i punti di una linea, forse l'hanno cambiato e hanno commesso qualche errore devo riprovarlo.Xeryan ha scritto:...http://it.wikipedia.org/wiki/Algoritmo_ ... _BresenhamCodice: Seleziona tutto
var swaps, a, b, d, xx, yy, s, q, oldX, DX = argument2 - argument0, DY = argument3 - argument1; //siccome scambio DY e DX ho sempre DX>=DY allora per sapere quale coordinata occorre cambiare uso una variabile swaps = false; if (DY > DX) { oldX = DX; DX = DY; DY = oldX; swaps = true; } //per non scrivere sempre i valori assoluti cambio DY e DX con altre variabili a = abs(DY); b = -abs(DX); //il valore d0 d = 2 * a + b; //assegna le coordinate iniziali xx = argument0; yy = argument1; draw_point(xx, yy); //s e q sono gli incrementi/decrementi di x e y s = 1; q = 1; if (argument0 > argument2) q = -1; if (argument1 > argument3) s = -1; for (var k=0; k<DX; k++) { if (d >= 0) { d = 2 * (a + b) + d; yy = yy + s; xx = xx + q; } else { if (swaps) { yy = yy + s; } else { xx = xx + q; } d = 2 * a + d; } draw_point(xx, yy); }
EDIT: L'ho confrontato con uno che avevo già salvato e evidentemente è stato cambiato in modo molto sbagliato, l'ho aggiustato ora dovrebbe funzionare.