Commit
•
874e3d1
1
Parent(s):
0fd578b
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import matplotlib.pyplot as plt
|
3 |
+
import numpy as np
|
4 |
+
import random
|
5 |
+
|
6 |
+
def create_sigil(desire):
|
7 |
+
consonants = [c for c in desire.lower() if c.isalpha() and c not in 'aeiou']
|
8 |
+
letters = list(set(consonants))
|
9 |
+
random.shuffle(letters)
|
10 |
+
sigil = ''.join(letters)
|
11 |
+
return sigil
|
12 |
+
|
13 |
+
def fibonacci_sphere(samples=1):
|
14 |
+
rnd = 1.
|
15 |
+
points = []
|
16 |
+
offset = 2./samples
|
17 |
+
increment = np.pi * (3. - np.sqrt(5.))
|
18 |
+
for i in range(samples):
|
19 |
+
y = ((i * offset) - 1) + (offset / 2)
|
20 |
+
r = np.sqrt(1 - y*y)
|
21 |
+
phi = ((i + rnd) % samples) * increment
|
22 |
+
x = np.cos(phi) * r
|
23 |
+
z = np.sin(phi) * r
|
24 |
+
points.append([x, y, z])
|
25 |
+
return points
|
26 |
+
|
27 |
+
def visualize_sigil(sigil):
|
28 |
+
fig, ax = plt.subplots(figsize=(6,6))
|
29 |
+
ax.set_aspect('equal')
|
30 |
+
ax.axis('off')
|
31 |
+
circle = plt.Circle((0.5, 0.5), 0.4, color='black', fill=False, lw=2)
|
32 |
+
ax.add_artist(circle)
|
33 |
+
num_letters = len(sigil)
|
34 |
+
fibonacci_points = fibonacci_sphere(num_letters)
|
35 |
+
x_letters = [0.5 + 0.35 * p[0] for p in fibonacci_points]
|
36 |
+
y_letters = [0.5 + 0.35 * p[1] for p in fibonacci_points]
|
37 |
+
for i, letter in enumerate(sigil):
|
38 |
+
ax.text(x_letters[i], y_letters[i], letter, fontsize=1, ha='center', va='center', color='black')
|
39 |
+
for i in range(num_letters):
|
40 |
+
j = (i + 1) % num_letters
|
41 |
+
x_start, y_start = x_letters[i], y_letters[i]
|
42 |
+
x_end, y_end = x_letters[j], y_letters[j]
|
43 |
+
ax.plot([x_start, x_end], [y_start, y_end], color='black')
|
44 |
+
ax.scatter(x_letters[0], y_letters[0], color='black', s=20)
|
45 |
+
ax.scatter(x_letters[-1], y_letters[-1], color='black', s=20)
|
46 |
+
plt.xlim(0, 1)
|
47 |
+
plt.ylim(0, 1)
|
48 |
+
st.pyplot(fig)
|
49 |
+
|
50 |
+
st.title("Generador de Sigilos")
|
51 |
+
|
52 |
+
desire = st.text_input("Ingresa tu deseo:")
|
53 |
+
if desire:
|
54 |
+
sigil = create_sigil(desire)
|
55 |
+
st.write("Sigilo generado:", sigil)
|
56 |
+
visualize_sigil(sigil)
|