-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexperiments.py
More file actions
115 lines (90 loc) · 4.35 KB
/
Copy pathexperiments.py
File metadata and controls
115 lines (90 loc) · 4.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from geometry_generator import *
import svgwrite
# triangle = Polygon(3, 10)
# pentagon = Polygon(5, 40)
# hexagon = Polygon(6,40)
# fractal_polygon_radius = 70
# fractal_polygon = Polygon(4, fractal_polygon_radius, [0, 0], drawing_global, 0)
# shrinkage = .5
# fractal_points_1 = fractal_polygon.draw_fractal(shrinkage, 7, 360/16)
# print(fractal_polygon.draw_fractal(shrinkage, 7, 0))
# fractal_grid = Grid(fractal_polygon_radius*1,1, 6, fractal_polygon)
# fractal_grid = GridIsometric(fractal_polygon_radius*(2+(1/8)),1, 6, fractal_polygon, True)
# fractal_grid.modify_polygons(lambda grid, polygon, i, j: polygon.draw_fractal(shrinkage, 4, 0))
# fractal_grid.draw_polygons()
# print(f"fractal_points is {fractal_points_1} ")
# drawing_global.add(drawing_global.polygon(fractal_points_1))
# mandala = Mandala(drawing_global, 20, 20, triangle)
# mandala.draw_polygons()
# for i in range(4):
# honeycomb.modify_polygons(linear_gradient, magnitude = 0.7, angle = 45+10*i, decrease_out = True)
# honeycomb.draw_polygons()
# honeycomb.polygon = honeycomb_hexagon
# honeycomb.modify_polygons(circle_morph, magnitude = 1.0, decrease_out = False)
# honeycomb.draw_polygons()
# honeycomb.polygon = honeycomb_hexagon
# honeycomb.modify_polygons(radius_morph, magnitude = -0.3)
# honeycomb.draw_polygons()
# for i in range(10):
# hexagon = Polygon(drawing_global, [0, 0], i+5, 6)
# temp_mandala = Mandala(drawing_global, (i+2)*10, 12, hexagon)
# temp_mandala.draw_polygons()
# pentagon.draw()
# print(drawing_global.tostring())
# Symmetric difference (XOR) fill: keep regions with even overlap count (0, 2, 4...).
# Option A: extract from drawing (draw first).
# Option B: pass Shapely polygons directly (if grid has get_shapely_polygons): symmetric_difference(drawing_global, polygons=honeycomb.get_shapely_polygons())
# honeycomb_hexagon = Polygon(6, 6.0)
# honeycomb = GridIsometric(12, 30, 30, honeycomb_hexagon)
# # honeycomb.modify_polygons(circle_morph, magnitude=0.75, decrease_out=True)
# honeycomb.modify_polygons(ripple_morph, magnitude=0.3, num_waves=3, decrease_out=True)
# honeycomb.draw_polygons()
# honeycomb.draw_outlines(5)
# symmetric_difference_parallel(drawing_global)
# drawing_global.save()
# # --- Two overlapping hexagons: planar arrangement (non-overlapping regions) ---
# hexagon_radius = 40
# hex1 = Polygon(6, hexagon_radius, [60, 80], drawing_global, 0)
# hex2 = Polygon(6, hexagon_radius, [100, 80], drawing_global, 0)
# hex1.draw()
# hex2.draw()
# fracture(drawing_global, polygons=[hex1.shapely_polygon, hex2.shapely_polygon])
# drawing_global.save()
# # --- Two overlapping hexagons: symmetric difference (XOR) ---
# hexagon_radius = 40
# hex1 = Polygon(6, hexagon_radius, [60, 80], drawing_global, 0)
# hex2 = Polygon(6, hexagon_radius, [100, 80], drawing_global, 0)
# hex1.draw()
# hex2.draw()
# # symmetric_difference_parallel(drawing_global, keep_even=False)
# # symmetric_difference_parallel(drawing_global, keep_even=False)
# # symmetric_difference(drawing_global)
# # symmetric_difference(drawing_global, polygons=[hex1.shapely_polygon, hex2.shapely_polygon])
# drawing_global.save()
# # --- EdgeMandala: pentagon seed, 3 layers (each layer = polygons on outer edges of previous) ---
# seed_pentagon = Polygon(5, 30, [200, 200], drawing_global, 0)
# edge_mandala = EdgeMandala(seed_pentagon)
# edge_mandala.generate_outer_layer(4)
# edge_mandala.generate_outer_layer(5)
# edge_mandala.generate_layers([5, 5, 5, 5])
# edge_mandala.modify_polygons(ripple_morph, magnitude=0.3, num_waves=3, decrease_out=True)
# # draw_polygons() draws the modified polygons (ripple applied); draw_layers() would draw the raw edge shapes only
# edge_mandala.draw_polygons()
# symmetric_difference_parallel(drawing_global)
# drawing_global.save()
# --- EdgeMandala: hexagon seed
seed_pentagon = Polygon(5, 30, [200, 200], drawing_global, 0)
edge_mandala = EdgeMandala(seed_pentagon)
edge_mandala.generate_layers([5,5])
edge_mandala.generate_outer_layer(5)
edge_mandala.generate_layers([5,5])
edge_mandala.generate_outer_layer(5)
edge_mandala.generate_layers([5,5])
edge_mandala.draw_layers()
symmetric_difference_parallel(drawing_global, keep_even=False)
# symmetric_difference_parallel(drawing_global, keep_even=True)
# symmetric_difference(drawing_global, keep_even=False)
# symmetric_difference(drawing_global, keep_even=True)
# Clean small shapes
clean_small_shapes(5)
drawing_global.save()