Transformações Geométricas & Interpolação (GeometricTransforms.cs)
As Transformações Geométricas alteram as posições espaciais dos pixels, permitindo girar, esticar e deformar imagens.
O arquivo GeometricTransforms.cs implementa transformações lineares e não-lineares.
1. Mapeamento Direto versus Mapeamento Inverso
Por que o Mapeamento Inverso é Necessário?
Se pegarmos os pixels da imagem original e calcularmos suas novas posições para frente, alguns pontos da tela destino ficarão sem receber nenhum pixel, criando “buracos pretos” indesejados.
No Mapeamento Inverso, fazemos a pergunta ao contrário:
“Para cada pixel da imagem final , qual é a posição correspondente de onde ele veio na imagem original ?”
Isso garante que 100% dos pixels da imagem destino serão preenchidos sem nenhuma falha.
2. Métodos de Interpolação Espacial
Como a fórmula inversa quase sempre resulta em números fracionários (ex: ), precisamos estimar a cor naquele ponto contínuo:
1. Vizinho Mais Próximo (Nearest Neighbor)
Arredonda as coordenadas para o número inteiro mais próximo:
- Muito rápido (), mas gera bordas serrilhadas (efeito pixelado).
2. Interpolação Bilinear (4 Vizinhos)
Faz uma média ponderada suave entre os 4 pixels vizinhos mais próximos:
3. Interpolação Bicúbica (16 Vizinhos)
Utiliza uma vizinhança de 16 pixels com curvas spline cúbicas para manter os contornos nítidos e naturais.
3. Deformações Espaciais Não-Lineares
- Redemoinho (Swirl): Gira a imagem em espiral ao redor do centro.
- Ondulação (Ripple): Aplica ondas senoidais como água em movimento.
- Olho de Peixe (Fisheye): Simula a distorção esférica de lentes grande-angulares.
👉 Próximo Passo: Explore a Transformada de Fourier 2D & Geração Procedural.