kopia lustrzana https://github.com/villares/sketch-a-day
				
				
				
			
		
			
	
	
		
			58 wiersze
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
		
			
		
	
	
			58 wiersze
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
|   | from random import choice | ||
|  | 
 | ||
|  | def setup(): | ||
|  |     size(600, 600) | ||
|  |     noLoop() | ||
|  |     # strokeJoin(ROUND) | ||
|  |     # blendMode(MULTIPLY) | ||
|  |     colorMode(HSB) | ||
|  | 
 | ||
|  | def draw(): | ||
|  |     background(255) | ||
|  |     grid(width / 2, width / 2, 4, width) | ||
|  | 
 | ||
|  | def grid(xo, yo, n, tw, e=None): | ||
|  |     """ | ||
|  |     Faça o desenho do grid baseado em uma subdivisão (grade) recursiva | ||
|  |     """ | ||
|  |     cw = tw / n | ||
|  |     offset = (cw - tw) / 2. | ||
|  |     for i in range(n): | ||
|  |         x = xo + offset + cw * i | ||
|  |         for j in range(n): | ||
|  |             y = yo + offset + cw * j | ||
|  |             if cw > 30 and random(10) < 8: # faz subdivisão recursiva | ||
|  |                 grid(x, y, 3, cw)  | ||
|  |             else:  # faz um elemento "sozinho" | ||
|  |                 poly_arrow(x, y, cw, i, j) | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | def poly_arrow(x, y, s, i, j): | ||
|  |     noFill() | ||
|  |     strokeWeight(s / 5) | ||
|  |     stroke((32 * j + i * 64) % 255, 200, 200) | ||
|  |     """ Seta na posição x, y com largura w e altura h""" | ||
|  |     mw = s | ||
|  |     mh = s | ||
|  |     pushMatrix()  # preserva o sistema de coordenadas atual | ||
|  |     translate(x, y)  # translada a origem do sistema de coordenadas | ||
|  |     r = choice((0, 1, 2, 4)) | ||
|  |     rotate(r * HALF_PI) | ||
|  |     beginShape()  # começa a desenhar a forma, inicia um polígono | ||
|  |     vertex(0, -0 - mw) | ||
|  |     vertex(-mw  , 0) | ||
|  |     vertex(-mw, mh) | ||
|  |     vertex(0, mh - mw) | ||
|  |     vertex(mw, mh) | ||
|  |     vertex(mw, 0) | ||
|  |     # vertex(0, 0) | ||
|  |     endShape(CLOSE)  # encerra a forma a fechando no primeiro vértice | ||
|  |     popMatrix() # retorna o sistema de coordenadas anterior | ||
|  |      | ||
|  | 
 | ||
|  | def keyPressed(): | ||
|  |     if key == 's': | ||
|  |         saveFrame("####.png") | ||
|  |     redraw() |