Comportamento del metodo draw_rectangle visto nella lezione

l
laertleba (2840 points)
8 26 41
asked Nov 27, 2021 in Programmare in Python by laertleba (2,840 points)
Ciao a tutti,

stavo ripassando le lezioni e c'è un pezzo di codice che non riesco a capire perchè funziona cosi.

Lezione 14, abbiamo definito la classe Immagine e abbiamo un metodo draw_rectangle, in cui quando si disegna la seconda linea verticale metiamo che la lunghezza di tale linea dovrebbe essere  h(altezza) + 1, mentre la lunghezza dell'altra linea è h. Anche nella lezione quando il professore ha eseguito il codice, nel caso metiamo solo h, nel rettangolo manca un pixel. Non capisco perchè funziona cosi.

Ecco il codice (non so se si può mettere però ci provo comunque...)

      def draw_rectangle(self, x, y, w, h, color):
            #disegno un retangolo vuoto
            self.draw_line_H(x,   y,   w,   color)
            self.draw_line_H(x,   y+h, w,   color)
            self.draw_line_V(x,   y,   h,   color)
            self.draw_line_V(x+w, y,   h+1, color)
241 views

1 Answer

anaran (7090 points)
2 5 37
answered Nov 28, 2021 by anaran (7,090 points)
edited Nov 28, 2021 by anaran
Perché nel disegnare le rette horizzontali l'ultimo pixel che colori è [y][x+w-1] alla prima chiamata e [y+h][x+w-1] alla seconda , dato che usi range(x,x+w). Nell'ultima draw_l_V parti da x+w e colori il pixel in alto a destra che non era ancora colorato, ma nemmeno quello in basso a destra lo è, e quindi devi aggiungere un pixel per arrivare lì sotto con range.