cha0smagick's picture
Create app.py
874e3d1 verified
raw
history blame
No virus
1.88 kB
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
import random
def create_sigil(desire):
consonants = [c for c in desire.lower() if c.isalpha() and c not in 'aeiou']
letters = list(set(consonants))
random.shuffle(letters)
sigil = ''.join(letters)
return sigil
def fibonacci_sphere(samples=1):
rnd = 1.
points = []
offset = 2./samples
increment = np.pi * (3. - np.sqrt(5.))
for i in range(samples):
y = ((i * offset) - 1) + (offset / 2)
r = np.sqrt(1 - y*y)
phi = ((i + rnd) % samples) * increment
x = np.cos(phi) * r
z = np.sin(phi) * r
points.append([x, y, z])
return points
def visualize_sigil(sigil):
fig, ax = plt.subplots(figsize=(6,6))
ax.set_aspect('equal')
ax.axis('off')
circle = plt.Circle((0.5, 0.5), 0.4, color='black', fill=False, lw=2)
ax.add_artist(circle)
num_letters = len(sigil)
fibonacci_points = fibonacci_sphere(num_letters)
x_letters = [0.5 + 0.35 * p[0] for p in fibonacci_points]
y_letters = [0.5 + 0.35 * p[1] for p in fibonacci_points]
for i, letter in enumerate(sigil):
ax.text(x_letters[i], y_letters[i], letter, fontsize=1, ha='center', va='center', color='black')
for i in range(num_letters):
j = (i + 1) % num_letters
x_start, y_start = x_letters[i], y_letters[i]
x_end, y_end = x_letters[j], y_letters[j]
ax.plot([x_start, x_end], [y_start, y_end], color='black')
ax.scatter(x_letters[0], y_letters[0], color='black', s=20)
ax.scatter(x_letters[-1], y_letters[-1], color='black', s=20)
plt.xlim(0, 1)
plt.ylim(0, 1)
st.pyplot(fig)
st.title("Generador de Sigilos")
desire = st.text_input("Ingresa tu deseo:")
if desire:
sigil = create_sigil(desire)
st.write("Sigilo generado:", sigil)
visualize_sigil(sigil)