#
# PYTHON • MyCompiler
# Gumovski-MiraMap
# https://[Log in to view URL]
# Gumovski-miraMap
#
# 2026 Agosto Qui,6 — Sex, 7
# by
# j
#
import matplotlib.pyplot as plt
import numpy as np
from numpy import pi
from numpy import sqrt
from numpy import sin
from numpy import cos
from numpy import atan
import colorsys
MAXRESOLUTION = 1024
def GG(x,m):
g = m*x + (2*(1-m)*x**2)/(1+x**2)
return g
def gumovskimira(tipo):
#
# Configuração Geral
#
plt.style.use('dark_background')
plt.figure(figsize=(7, 7))
#
# Parâmetros
#
lbd = 21
delta = 50
match tipo:
case 1:
a = 0.009
s = 0.05
m = -0.801
#
# Inicializações
#
H = np.zeros((MAXRESOLUTION, MAXRESOLUTION))
L = np.zeros((MAXRESOLUTION, MAXRESOLUTION))
S = np.zeros((MAXRESOLUTION, MAXRESOLUTION))
xn = +1.00
yn = +1.00
max = 262144
for t in range(0, max):
#
# Gumovski-Mira Map
#
xnp = yn + a*yn*(1-s*yn**2) + GG(xn,m)
ynp = -xn + GG(xnp,m)
#
# Transforma o intervalo
# [-lbd, +lbd] para
# [0, MAXRESOLUTION - 1]
#
idx = int((xnp + lbd) * (1/(2*lbd)) * (MAXRESOLUTION - 1)) - delta
idy = int((ynp + lbd) * (1/(2*lbd)) * (MAXRESOLUTION - 1))
# print(idx,idy)
#
# Filtro de segurança
#
if 0 <= idx < MAXRESOLUTION and 0 <= idy < MAXRESOLUTION:
#
# Cor baseada no ângulo real do ponto
# (Gera degradê fractal)
#
H[idx, idy] = (np.arctan2(xnp, ynp) + np.pi) / (2 * np.pi)
#
# Acumulador de brilho:
# Quanto mais vezes o ponto é visitado,
# mais ele brilha
#
L[idx, idy] = min(L[idx, idy] + 0.1, 0.6)
#
# Saturação Máxima
#
S[idx, idy] = 1.0
xn = xnp
yn = ynp
#
# Conversão ultra~rápida vetorizada
# de HLS para RGB
#
hls_to_rgb_v = np.vectorize(colorsys.hls_to_rgb)
R, G, B = hls_to_rgb_v(H, L, S)
#
# Agrupa os canais e rotaciona
# para coincidir com os eixos
# cartesianos convencionais
#
RGB = np.dstack((R, G, B))
RGB = np.swapaxes(RGB, 0, 1)
#
# Gera o gráfico
#
tit = f"Gumovski-Mira Map (HD) | a = {a} s = {s} m = {m}"
plt.imshow(RGB, extent=[-1.0, 1.0, -1.0, 1.0], origin='lower')
plt.title(tit)
plt.xlabel("x")
plt.ylabel("y")
plt.axis('on')
plt.show()
def gumovski(tipo):
#
# Configuração Geral
#
plt.style.use('dark_background')
plt.figure(figsize=(6, 6))
#
# Parâmetros
#
match tipo:
case 1:
a = 0.009
s = 0.05
m = -0.801
#
# Inicialização das variáveis
#
xn = 1.00
yn = 1.00
x = []
y = []
max = 30000
#
# Loop principal
#
for t in range(0, max):
xnp = yn + a*yn*(1-s*yn**2) + GG(xn,m)
ynp = -xn + GG(xnp,m)
x.append(xnp)
y.append(ynp)
xn = xnp
yn = ynp
#
# Gera o gráfico
#
sa = str(a)
ss = str(s)
sm = str(m)
tit = "Gumovski-mira map | a = " + sa + " s = " + ss + " m = " + sm
plt.scatter(x, y, color="darkred", s=0.1)
plt.title(tit)
plt.xlabel("x")
plt.ylabel("y")
plt.axis('on')
plt.show()
gumovskimira(1)
To embed this project on your website, copy the following code and paste it into your website's HTML: