kopia lustrzana https://github.com/villares/sketch-a-day
				
				
				
			back to graphs!
							rodzic
							
								
									82a07db1b3
								
							
						
					
					
						commit
						9f566c8ad2
					
				
										
											Plik binarny nie jest wyświetlany.
										
									
								
							| Po Szerokość: | Wysokość: | Rozmiar: 19 KiB | 
|  | @ -1,21 +1,24 @@ | |||
| from graph import Graph | ||||
| 
 | ||||
| graph = Graph({"g": ["d", "f"], | ||||
|                "i": ["c"], | ||||
|                "c": ["i", "c", "d", "e"], | ||||
|                "d": ["f", "c"], | ||||
|                "e": ["c"], | ||||
|                "f": ["d", "h"], | ||||
|                "a": ["b"], | ||||
|                "h": ["f"], | ||||
|                "b": ["a"] | ||||
|                }) | ||||
| graph = Graph({ | ||||
|     'a': ['b', 'k'], | ||||
|     'b': ['a'], | ||||
|     'c': ['i', 'c', 'd', 'e'], | ||||
|     'd': ['f', 'c'], | ||||
|     'e': ['c'], | ||||
|     'f': ['d', 'h', 'j', 'k'], | ||||
|     'g': ['d', 'f'], | ||||
|     'h': ['f'], | ||||
|     'i': ['c'], | ||||
|     'j': ['f'], | ||||
|     'k': ['a', 'f'], | ||||
| }) | ||||
| 
 | ||||
| MARGIN = 50 | ||||
| 
 | ||||
| def setup(): | ||||
|     size(500, 500) | ||||
|     noLoop() | ||||
|     setup_graph(graph) | ||||
|     size(600, 600) | ||||
|     setup_grid(graph) | ||||
|     fill(0) | ||||
|     textSize(18) | ||||
|     textAlign(CENTER, CENTER) | ||||
|  | @ -23,29 +26,47 @@ def setup(): | |||
|     strokeWeight(3) | ||||
| 
 | ||||
| def draw(): | ||||
|     background(200) | ||||
|     for v in grid.keys(): | ||||
|         xa, ya = grid[v] | ||||
|         xa, ya, za = grid[v] | ||||
|         for e in graph[v]: | ||||
|             xb, yb = grid[e] | ||||
|             line(xa, ya, xb, yb) | ||||
|             xb, yb, zb = grid[e] | ||||
|             line(xa - za, ya - za, xb - zb, yb - zb) | ||||
| 
 | ||||
|     for v in grid.keys(): | ||||
|         x, y = grid[v] | ||||
|         text(v, x, y) | ||||
|         x, y, z = grid[v] | ||||
|         text(v, x - z, y - z) | ||||
| 
 | ||||
|     saveFrame("sketch_2020_07_14c.png") | ||||
|     saveFrame('sketch_2020_08_01a.png') | ||||
| 
 | ||||
| def setup_graph(g): | ||||
| def setup_grid(g): | ||||
|     global cols, rows, grid | ||||
|     n = len(g) | ||||
|     ang = TWO_PI / n | ||||
|     cols, rows = dimensionar_grade(len(g)) | ||||
|     w, h = (width - MARGIN * 2) / cols, (height - MARGIN * 2) / rows | ||||
|     grid = {} | ||||
|     v_list = g.vertices() | ||||
|     for i in range(n): | ||||
|         v = v_list[i] | ||||
|         x = cos(ang * i) * width * .4 + width / 2 | ||||
|         y = sin(ang * i) * height * .4 + height / 2 | ||||
|         grid[v] = (x, y) | ||||
|     c, r = 0, 0 | ||||
|     next = None | ||||
|     while v_list: | ||||
|         if next is None: | ||||
|             next = v_list.pop() | ||||
|         else: | ||||
|             v_list.remove(next) | ||||
|         z = len(graph[next]) | ||||
|         grid[next] = (MARGIN + w / 2 + c * w, | ||||
|                       MARGIN + h / 2 + r * h, | ||||
|                       z * w / 10) | ||||
|         for v in graph[next]: | ||||
|             if v in v_list: | ||||
|                 next = v | ||||
|                 break | ||||
|         else: | ||||
|             if v_list: | ||||
|                 next = None | ||||
|         c += 1 | ||||
|         if c == cols: | ||||
|             c = 0 | ||||
|             r += 1 | ||||
| 
 | ||||
| 
 | ||||
| def dimensionar_grade(n): | ||||
|  | @ -57,9 +78,13 @@ def dimensionar_grade(n): | |||
|     return a, b | ||||
| 
 | ||||
| def keyPressed(): | ||||
|     global n | ||||
|     redraw() | ||||
|     if str(key) in '+=': | ||||
|         n += 1 | ||||
|     if key == '-' and n > 2: | ||||
|         n -= 1 | ||||
|     from random import choice | ||||
|     global graph | ||||
|     graph = Graph() | ||||
|     names = "abcdefghijkl" | ||||
|     for v in names: | ||||
|         graph.add_vertex(v) | ||||
|         if random(100) < 80: | ||||
|             graph.add_edge((v, choice(names))) | ||||
| 
 | ||||
|     setup_grid(graph) | ||||
|  |  | |||
|  | @ -21,6 +21,12 @@ | |||
| 
 | ||||
| --- | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| [sketch_2020_08_01a](https://github.com/villares/sketch-a-day/tree/master/2020/sketch_2020_08_01a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)] | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| [sketch_2020_07_31a](https://github.com/villares/sketch-a-day/tree/master/2020/sketch_2020_07_31a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)] | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Alexandre B A Villares
						Alexandre B A Villares