Sobre
Marching Squares
Marching Squares é um algoritmo de computação gráfica usado para extrair contornos de campos escalares 2D. É uma versão 2D do algoritmo Marching Cubes 3D, usado para visualizar dados científicos e criar efeitos visuais.
Algoritmo Principal
O algoritmo funciona assim:
- Grade: Divide o espaço em uma grade de células quadradas
- Valores: Calcula um valor escalar para cada vértice da célula (usando ruído de Perlin)
- Configuração: Determina qual das 16 configurações possíveis a célula tem (baseado em quais vértices estão acima/abaixo do limiar)
- Contorno: Desenha linhas conectando os pontos de intersecção nas arestas
Equações Implementadas
No código:
// Para cada célula na grade
for each cell (i, j) {
// Obtém valores dos 4 vértices
topLeft = noise(x, y)
topRight = noise(x + cellSize, y)
bottomLeft = noise(x, y + cellSize)
bottomRight = noise(x + cellSize, y + cellSize)
// Determina configuração (0-15)
config = (topLeft > threshold ? 8 : 0) +
(topRight > threshold ? 4 : 0) +
(bottomRight > threshold ? 2 : 0) +
(bottomLeft > threshold ? 1 : 0)
// Desenha linhas baseado na configuração
drawLines(config, cell)
}
Complexidade de Compreensão
Nível: Intermediário a Avançado
- Conceitos necessários: Campos escalares, ruído de Perlin, interpolação, lookup tables
- Matemática: Interpolação linear, campos escalares, geometria computacional
- Programação: Lookup tables, processamento de grade, otimização
Referências e Recursos para Estudo
Artigos e Documentação
- Wikipedia - Marching Squares - Visão geral completa
- Wikipedia - Marching Cubes - Algoritmo 3D relacionado
- Paul Bourke - Marching Squares - Artigo detalhado
Tutoriais e Código
- The Coding Train - Marching Squares - Tutoriais relacionados
- ShaderToy - Marching Squares - Implementações
- Inigo Quilez - 2D SDF - Funções de distância
Aprofundamento Matemático
- Computational Geometry - de Berg - Geometria computacional
- Real-Time Rendering - Renderização
Visualizações Interativas
- Marching Squares Explorer - Explorador interativo
- Metaballs Visualizer - Visualizações relacionadas
Arquivo do processo
Todas as gerações — incluindo as ruins — fazem parte do processo.
16quadros