Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def Segmenti_orizzontali(pict,x,y,dim,col):
- #@param pict: Picture; immagine su cui applicare la funzione
- #@param x: int; colonna del punto di inizio
- #@param y: int; riga del punto di inizio
- #@param dim: int; dimensione segmento orizzontale
- #@param col: color; colore del segmento orizzonale
- c, h ,w = 0, getHeight(pict), getWidth(pict)
- x1,shift = x,0 # x1, x di partenza
- #fisso la riga e scorro le colonne per disegnare i segmenti orizzontali che compongono la scala
- for j in range(y,h,dim): # parto da y e scorro tutta l'altezza di passo dim, in quanto lascio lo spazio per disegnare i segmenti verticali
- for i in range(x, min(w,dim+x)): # faccio il minimo per evitare di uscire fuori
- #coloro tutti i pixel fino a dim+x, perche' devo arrivare a colorare tutta la lunghezza data
- px = getPixel(pict,i,j)
- setColor(px,col)
- #shift e c sono inizializzati a 0 perche' al primo ciclo non verranno utilizzati
- c+=1
- shift = x1
- #la prossima x da cui partire sara' multipla di dim, sommmata a shift.
- #faccio (dim*c) per evitare di colorare un pixel che verra' colorato da Segmenti_verticali.
- #aggingo lo shift perche' se le coordinate non sono (0,0) ci devo aggiungere lo scostamento dal margine(shift)
- x = (dim*c)+shift # non controllo se e' piu grande di w perche' se lo fosse, il ciclo non verrebbe fatto
- def Segmenti_verticali(pict,x,y,dim,col):
- #@param pict: Picture; immagine su cui applicare la funzione
- #@param x: int; colonna del punto di inizio
- #@param y: int; riga del punto di inizio
- #@param dim: int; dimensione segmento verticale
- #@param col: color; colore del segmento verticale
- if dim !=1: # se fosse 1 ci pensa Segmenti_orizzontali, perche si tratta di fare scalini grandi un pixel
- h,w = getHeight(pict), getWidth(pict)
- #fisso la colonna e scorro le righe per disegnare i segmenti verticali che compongono la scala
- for i in range(x+(dim-1),w,dim): # parto da x+(dim-1) e scorro tutta la larghezza di passo dim, in quanto salto lo spazio occupato dai seg orizzontali
- for j in range(y+1, min(h,(y+dim+1)) ): #parto da y+1 perche' y e' colorato dai seg orizzontali; faccio il minimo per non rischiare di
- #uscire fuori dalla matrice; arrivo a y+dim+1 in modo tale da far notare visivamente che altezza e larghezza degli scalini combaciano
- px = getPixel(pict,i,j)
- setColor(px,col)
- y = y+dim # perche' la prossima riga di inizio dipende dalla lunghezza del seg precedentemente disegnato
- def Scala(pict,x,y,dim,col):
- #@param pict: Picture; immagine su cui applicare la funzione
- #@param x: int; colonna del punto di inizio
- #@param y: int; riga del punto di inizio
- #@param dim: int; dimensione scalini(assumo che altezza e lunghezza siano uguali)
- #@param col: color; colore della scala
- Segmenti_orizzontali(pict,x,y,dim,col)
- Segmenti_verticali(pict,x,y,dim,col)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement