Escreve Tupperware - Com ou sem tampa? Como se escreve tupoer, tapouer, tapoer ou tupperware ...
Com ou sem tampa? Como se escreve tupoer, tapouer, tapoer ou tupperware ...

O que é a fórmula de Tupper e por que todo mundo fala dela

A fórmula de Tupper é uma expressão matemática criada pelo professor de matemática Jeffrey Tupper em 2001. Ela tem uma propriedade curiosa: se você plotar a inequação em um gráfico bidimensional com certos parâmetros, o resultado visual será uma imagem em preto e branco. A mais famosa é o próprio logotipo do Tupperware, mas a fórmula pode gerar qualquer imagem rasterizada, desde que o número correto seja usado como constante. Muita gente acha que isso é mágica ou um truque. Não é. É apenas binário disfarçado de cálculo. O que parece complexo na superfície é, na prática, um sistema de pixelização bastante direto. Cada pixel da imagem é representado por um bit, e a fórmula decodifica esses bits usando operações de módulo e divisão por partes inteiras.

Como funciona a matemática por trás

A fórmula original se parece com isso: 1/2 < mod(y/17, 2^17), 2^(-17*(x mod 17))

Vamos decompor isso sem enrolação. O eixo Y é dividido em blocos de 17 linhas. Cada bloco de 17 linhas corresponde a uma "fatia" vertical de pixels. Dentro de cada fatia, o eixo X vai de 0 a 16, o que significa 17 colunas de largura. A combinação de 17 linhas por 17 colunas dá uma área de 289 pixels por bloco, mas a fórmula usa uma altura maior — normalmente 17 vezes o número de linhas que a imagem precisa. O segredo está no constante K (ou k). Esse número gigante é basically a imagem codificada em binário. Se você transformar cada pixel preto em 1 e cada pixel branco em 0, e juntar tudo num único número binário, esse número se torna o K. Aí é só escolher o valor certo de Y para visualizar a imagem.

Como gerar sua própria imagem com escreve tupperware

Se você quer criar uma imagem personalizada usando essa técnica, o processo básico envolve três etapas. Primeiro, converter a imagem em um grid binário. Depois, transformar esse grid no número K. Por fim, plotar a fórmula usando K como parâmetro. O número K pode ficar absurdamente grande. Uma imagem de 289 pixels (17x17) já gera um K com cerca de 87 dígitos. Imagens maiores ficam rapidamente impraticáveis para cálculos manuais, então ferramentas são necessárias.

Ferramentas disponíveis

A ferramenta mais usada e confiável é o Tupper's Self-Referential Formula Generator. Você encontra implementações em Python, JavaScript e até online. Algumas opções comuns:

Eu recomendo começar com um gerador online para testar, depois migrar para código local se quiser controle maior sobre o processo.

Passo a passo prático

Vou descrever o fluxo real que eu uso, não a versão teórica de livro didático. 1. Escolha e prepare sua imagem

A imagem precisa ser simples, preferably preto e branco ou com alto contraste. Cores muitosuaves ou degradês dão trabalho desnecessário porque precisam ser convertidos em binário. Redimensione para uma largura que seja múltiplo de 17 — isso facilita o alinhamento dos pixels com a grade da fórmula. Uma largura de 51 pixels (3 blocos de 17) ou 68 pixels (4 blocos) costuma funcionar bem para imagens pequenas. 2. Converta para binário

👉 Clique no botão abaixo para saber mais sobre o assunto!

Pixels escuros viram 1, pixels claros viram 0. A ordem importa: leia da esquerda para a direita, de cima para baixo. Cada linha da imagem gera uma sequência de bits que, juntada, forma um número binário. 3. Calcule K

Esse número binário, convertido para decimal, é o seu K. Aqui a coisa começa a ficar pesada. Para uma imagem de 17x17 pixels, K tem aproximadamente 87 dígitos decimais. Para 17x34, já são cerca de 174 dígitos. Ferramentas como o Wolfram Alpha ou bibliotecas Python com suporte a inteiros grandes (o Python nativo suporta inteiros de qualquer tamanho) resolvem isso sem dor de cabeça. 4. Plote a fórmula

Com K em mãos, o plotting em si é simples. A região de Y vai de K até K+17 (ou um múltiplo disso, dependendo da altura da imagem). O eixo X varia de 0 até a largura em blocos de 17. Cada ponto (x,y) que satisfaz a inequação aparece como pixel preenchido.

Código Python de exemplo

Aqui está uma implementação básica que eu uso rotineiramente: import numpy as np
import matplotlib.pyplot as plt

def tupper(k, width_blocks=1):
    def f(x, y):
        return 0.5 < np.mod(np.floor(y/17), 217) / 2(17*(x % 17) + np.floor(y) % 17)
    return np.vectorize(f)

k = 17 * sum([int(pixel) * 2(288 - i) for i, pixel in enumerate(binaries)])
x = np.arange(0, 17 * width_blocks)
y = np.arange(k, k + 17)
plt.imshow(tupper(k)(x, y), cmap='binary', extent=[0, 17*width_blocks, k, k+17])
plt.show()

Esse código gera a imagem a partir dos bins binários que você forneceu. A variável k é o número calculado no passo anterior.

Problemas que eu encontrei na prática

Um problema real que eu tive foi com imagens que não tinham largura múltipla de 17. A princípio, eu tentava ajustar manualmente, cortando pixels extras. Isso causava distorções estranhas na imagem final — pixels apareciam deslocados ou em posições erradas. A solução foi sempre garantir que a largura da imagem fosse exatamente um múltiplo de 17 antes de converter para binário. Se a imagem original não tiver essa medida, adicione colunas brancas à direita até atingir o múltiplo correto. Outro problema comum é o size do número K. Quanto maior a imagem, maior o K, e maior o tempo de cálculo. Para imagens acima de 17x68 pixels, o plotting pode levar minutos em vez de segundos, principalmente se você estiver usando uma linguagem sem suporte nativo a inteiros grandes. Nesse caso, use Python ou uma implementação otimizada em C.

Limitações honestas

A fórmula de Tupper não é prática para geração de imagens complexas ou coloridas. Ela funciona apenas com imagens em preto e branco de resolução limitada. Tentar usar para fotos reais resulta em detalhes prácticamente invisíveis porque cada pixel da imagem original ocupa um espaço mínimo no gráfico final. Além disso, o número K cresce exponencialmente com o tamanho da imagem. Uma imagem de 17x170 pixels (10 linhas de altura) já gera um K com cerca de 870 dígitos. Isso é tecnicamente viável mas impraticável para uso cotidiano.

Se o seu objetivo é realmente criar arte digital ou gerar imagens de forma eficiente, existem ferramentas muito mais adequadas. A fórmula de Tupper é mais interessante como curiosidade matemática e exercício de programação do que como ferramenta de design.

Alternativas se você quer algo mais útil

Para geração de imagens artísticas baseadas em fórmulas, considere ferramentas como FractInt, Ultra Fractal, ou simplesmente use Python com PIL e numpy para manipulação direta de pixels. Essas alternativas são mais flexíveis e não têm as restrições de resolução da fórmula de Tupper. Se o interesse é mesmo a fórmula clássica e a experiência de ver a matemática "desenhando" uma imagem, o caminho é seguir o passo a passo acima. Funciona, mas exige paciência com os detalhes de formatação da imagem de entrada. O resultado final costuma valer o esforço, pelo menos na primeira vez. Depois disso, vira só mais um truque no catálogo.