kopia lustrzana https://github.com/villares/sketch-a-day
				
				
				
			
		
			
				
	
	
		
			51 wiersze
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			51 wiersze
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
| # -*- coding: utf-8 -*-
 | |
| 
 | |
| ROTATION = {0 : 0,
 | |
|             BOTTOM : 0,
 | |
|             DOWN : 0,
 | |
|             1 : HALF_PI,
 | |
|             LEFT : HALF_PI,
 | |
|             2 : PI,
 | |
|             TOP : PI,
 | |
|             UP : PI,
 | |
|             3 : PI + HALF_PI,
 | |
|             RIGHT: PI + HALF_PI,
 | |
|             BOTTOM + RIGHT : 0,
 | |
|             DOWN + RIGHT : 0,
 | |
|             DOWN + LEFT : HALF_PI,
 | |
|             BOTTOM + LEFT : HALF_PI,
 | |
|             TOP + LEFT : PI,
 | |
|             UP + LEFT : PI,
 | |
|             TOP + RIGHT: PI + HALF_PI,
 | |
|             UP + RIGHT: PI + HALF_PI,
 | |
|             }
 | |
|     
 | |
| def quarter_circle(x, y, radius, quadrant):
 | |
|     circle_arc(x, y, radius, ROTATION[quadrant], HALF_PI)
 | |
| 
 | |
| def half_circle(x, y, radius, quadrant):
 | |
|     circle_arc(x, y, radius, ROTATION[quadrant], PI)
 | |
| 
 | |
| def circle_arc(x, y, radius, start_ang, sweep_ang):
 | |
|     arc(x, y, radius * 2, radius * 2, start_ang, start_ang + sweep_ang)
 | |
|     
 | |
| def bar(x1, y1, x2, y2, thickness=None, shorter=0, ends=(1,1)):
 | |
|     """
 | |
|     O código para fazer as barras, dois pares (x, y),
 | |
|     um parâmetro de encurtamento: shorter
 | |
|     """
 | |
|     L = dist(x1, y1, x2, y2)
 | |
|     if not thickness:
 | |
|         thickness = 10
 | |
|     with pushMatrix():
 | |
|         translate(x1, y1)
 | |
|         angle = atan2(x1 - x2, y2 - y1)
 | |
|         rotate(angle)
 | |
|         offset = shorter / 2
 | |
|         line(thickness/2, offset, thickness/2, L - offset)
 | |
|         line(-thickness/2, offset, -thickness/2, L - offset)
 | |
|         if ends[0]:
 | |
|             half_circle(0, offset, thickness/2, UP)
 | |
|         if ends[1]:
 | |
|             half_circle(0,  L - offset, thickness/2, DOWN)
 |