awacke1 commited on
Commit
7a37a91
·
verified ·
1 Parent(s): bdf68d5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -3
app.py CHANGED
@@ -32,16 +32,64 @@ def generate_symmetrical_circle_layout(num_layers):
32
  ax.add_artist(circle)
33
  return fig
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  # Streamlit UI
36
  st.title("Circle Packings Visualization")
37
 
38
- mode = st.radio("Choose a visualization mode:", ("Random Circle Packings", "Symmetrical Circle Layouts"))
 
 
 
39
 
40
  if mode == "Random Circle Packings":
41
  num_circles = st.slider("Number of Circles", 5, 50, 10)
42
  fig = generate_colored_circle_template(num_circles)
43
- st.pyplot(fig)
44
  elif mode == "Symmetrical Circle Layouts":
45
  num_layers = st.slider("Number of Symmetrical Layers", 1, 5, 3)
46
  fig = generate_symmetrical_circle_layout(num_layers)
47
- st.pyplot(fig)
 
 
 
 
 
 
 
 
32
  ax.add_artist(circle)
33
  return fig
34
 
35
+ def generate_fibonacci_spiral_layout(num_points):
36
+ fig, ax = plt.subplots(figsize=(6, 6))
37
+ ax.axis('off')
38
+ n = num_points
39
+ golden_ratio = (1 + np.sqrt(5)) / 2
40
+ radius = 0.05
41
+ for i in range(n):
42
+ angle = i * 2 * np.pi / golden_ratio
43
+ distance = np.sqrt(i) * radius
44
+ x = 0.5 + distance * np.cos(angle)
45
+ y = 0.5 + distance * np.sin(angle)
46
+ circle = plt.Circle((x, y), radius, color=np.random.rand(3,), fill=True)
47
+ ax.add_artist(circle)
48
+ ax.set_aspect('equal')
49
+ return fig
50
+
51
+ def is_prime(n):
52
+ if n <= 1:
53
+ return False
54
+ for i in range(2, int(n**0.5) + 1):
55
+ if n % i == 0:
56
+ return False
57
+ return True
58
+
59
+ def generate_prime_number_spiral(num_points):
60
+ fig, ax = plt.subplots(figsize=(6, 6))
61
+ ax.axis('off')
62
+ radius = 0.05
63
+ for i in range(1, num_points + 1):
64
+ if is_prime(i):
65
+ angle = i * 2 * np.pi / golden_ratio
66
+ distance = np.sqrt(i) * radius
67
+ x = 0.5 + distance * np.cos(angle)
68
+ y = 0.5 + distance * np.sin(angle)
69
+ circle = plt.Circle((x, y), radius, color=np.random.rand(3,), fill=True)
70
+ ax.add_artist(circle)
71
+ ax.set_aspect('equal')
72
+ return fig
73
+
74
  # Streamlit UI
75
  st.title("Circle Packings Visualization")
76
 
77
+ mode = st.radio(
78
+ "Choose a visualization mode:",
79
+ ("Random Circle Packings", "Symmetrical Circle Layouts", "Fibonacci Spiral Layout", "Prime Number Spiral")
80
+ )
81
 
82
  if mode == "Random Circle Packings":
83
  num_circles = st.slider("Number of Circles", 5, 50, 10)
84
  fig = generate_colored_circle_template(num_circles)
 
85
  elif mode == "Symmetrical Circle Layouts":
86
  num_layers = st.slider("Number of Symmetrical Layers", 1, 5, 3)
87
  fig = generate_symmetrical_circle_layout(num_layers)
88
+ elif mode == "Fibonacci Spiral Layout":
89
+ num_points = st.slider("Number of Points", 10, 100, 30)
90
+ fig = generate_fibonacci_spiral_layout(num_points)
91
+ elif mode == "Prime Number Spiral":
92
+ num_points = st.slider("Number of Points", 10, 1000, 200)
93
+ fig = generate_prime_number_spiral(num_points)
94
+
95
+ st.pyplot(fig)