#
# PYTHON • MyCompiler
# simoneatractor
# https://[Log in to view URL]
# Atrator de Simone
# 
# 2026 Junho Sáb, 6 — Seg, 8
# 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 simoneatractor(tipo):

    #
    # Configuração Geral
    #
    
    plt.style.use('dark_background')
    plt.figure(figsize=(7, 7))

    #
    # Parâmetros
    #

    match tipo:
        
        case 1:  
            
            a, b = 3.61, 4.24
            
        case 2:
            
            a, b = 0.29, 4.00
            
        case 3:
            
            a, b = 3.69, 4.51
            
        case 4:
            
            a, b = 5.9, 5.64
            
        case 5:
            
            a, b = 3.64, 1.71

    #
    # Inicializações
    #

    H = np.zeros((MAXRESOLUTION, MAXRESOLUTION))
    L = np.zeros((MAXRESOLUTION, MAXRESOLUTION)) 
    S = np.zeros((MAXRESOLUTION, MAXRESOLUTION))
    
    xn = +1.00
    yn = -0.50
    
    max = 262144

    for t in range(0, max):
        
        #
        # Atrator de Simone
        #
        
        xnp = np.sin(xn**2 - yn**2 + a)
        ynp = np.cos(2*xn*yn + b)

        # 
        # Transforma o intervalo 
        # [-1.0, +1.0] para 
        # [0, MAXRESOLUTION - 1]
        #
        
        idx = int((xnp + 1.0) * 0.5 * (MAXRESOLUTION - 1))
        idy = int((ynp + 1.0) * 0.5 * (MAXRESOLUTION - 1))

        #
        # 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"Atrator de Simone (HD) | a = {a} b = {b}"
    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 simonemap(tipo):

    #
    # Configuração Geral
    #
    
    plt.style.use('dark_background')
    plt.figure(figsize=(6, 6))

    #
    # Parâmetros
    # 

    match tipo:

        case 1:  
            
            a = 3.61
            b = 4.24
            
        case 2:
            
            a = 0.29
            b = 4
            
        case 3:
            
            a = 3.69
            b = 4.51
            
        case 4:
            
            a = 0.29
            b = 0.95

        case 5:
            
            a = 3.64
            b = 1.71
            
    #
    # Inicialização das variáveis
    #
    
    xn = 1.00
    yn = -0.5
    
    x = []
    y = []
    
    max = 30000

    #
    # Loop principal
    #
    
    for t in range(0, max):
        
        xnp = sin(xn**2 - yn**2 + a)
        ynp = cos(2*xn*yn + b)
        
        x.append(xnp)
        y.append(ynp)
        
        xn = xnp
        yn = ynp

    #
    # Gera o gráfico 
    #

    sa = str(a)
    sb = str(b)
    
    tit = "Atrator de Simone | a = " + sa + " b = " + sb
    plt.scatter(x, y, color="darkred", s=0.1)
    plt.title(tit)
    plt.xlabel("x")
    plt.ylabel("y")
    plt.axis('on')
    plt.show()
    
simoneatractor(1)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: