Como calcular e usar as diagonais de um polígono convexo
A fórmula para o número de diagonais de um polígono convexo é n(n - 3) / 2, onde n é a quantidade de lados. Parece simples, mas há detalhes que muita gente deixa passar e que causam erro em projetos de engenharia e desenho técnico. Vou explicar o processo, mostrar onde as pessoas erram e dar um exemplo prático que aprendi na marra.
Todo polígono convexo possui diagonal quando n 4
O conceito é direto: uma diagonal conecta dois vértices não consecutivos. De um vértice qualquer, você não consegue traçar diagonal para ele mesmo nem para os dois vizinhos imediatos, então sobram n - 3 possibilidades por vértice. Multiplicando por n vértices, você conta cada diagonal duas vezes (uma de cada ponta), daí a divisão por 2. O que as pessoas esquecem é que isso só se aplica a polígonos estritamente convexos. Se o polígono tiver algum ângulo interno maior que 180 graus, algumas dessas "diagonais" caem do lado de fora da figura. Nesse caso, a contagem ainda é numericamente correta, mas geometricamente elas não são mais diagonais internas. Isso importa se você está fazendo tesselação, cálculo de área por triangulação ou geração de malhas para elementos finitos.
Na prática, o fluxo que eu uso é o seguinte: primeiro verifico se o polígono é de fato convexo checando o produto vetorial entre arestas consecutivas. Se todos os produtos tiverem o mesmo sinal, está convexo e a fórmula vale sem ressalva. Se houver variação de sinal, preciso separar as diagonais internas das externas manualmente, o que consome bastante tempo em polígonos com muitos vértices. Já passei por um problema específico em um projeto de corte a laser onde o cliente enviou um polígono de 12 lados que parecia convexo olhando no CAD, mas uma verificação numérica mostrou que um dos ângulos era 180,03 graus devido a erro de arredondamento nos coordenados. A fórmula dizia 54 diagonais, mas na realidade geometricamente falando, aquela quase-diagonal causava sobreposição na peça. A solução foi aplicar uma tolerância de 1e-6 no teste de convexidade e tratar vértices colineares como um único ponto antes de rodar a contagem. Isso economizou horas de retrabalho e peças defeituosas.
Para quem precisa de referência rápida, alguns valores comuns: Triângulo (n=3): 0 diagonais. Obvio, mas é o caso base que justifica a condição n 4.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Quadrilátero (n=4): 2 diagonais. O caso mais simples onde a fórmula começa a fazer sentido. Pentágono (n=5): 5 diagonais. Aqui já forma o estrela clássico no interior.
Hexágono (n=6): 9 diagonais. Começa a ficar denso visualmente. O limitante prático mais importante é que a fórmula não te diz nada sobre a posição das diagonais. Em algoritmos de geometric processing, você precisa de uma estrutura de dados que represente explicitamente quais pares de vértices são conectados. Uma matriz de adjacência de tamanho n×n funciona para polígonos pequenos, mas para malhas com milhares de vértices, listas de adjacência esparsas são significativamente mais eficientes em memória e velocidade de consulta.
Também vale notar que a fórmula conta todas as diagonais possíveis simultaneamente. Se você precisa triangular o polígono, o número de diagonais usadas numa triangulação qualquer é sempre n - 3, independente de como você faz a partição. O número total de triangulações possíveis, porém, segue a sequência de Catalan, que cresce exponencialmente. Para um decágono, são 1679 triangulações distintas usando 7 diagonais cada uma. Escolher a triangulação certa depende do seu objetivo: minimizar ângulos rasos, equilibrar tamanhos de triângulo, ou otimizar para algum critério de qualidade de malha. Se você está trabalhando com polígonos côncavos e ainda quer usar a contagem como base, o caminho mais seguro é decompor o polígono em partes convexas primeiro. Decomposição por corte diagonal é o método padrão, mas algoritmos como o de triangulação por ouvido (ear clipping) são mais diretos de implementar e rodam em O(n²), o que é perfeitamente aceitável para a maioria dos casos práticos. Para polígonos com milhares de vértices, existem variantes em O(n log n), mas a complexidade adicional raramente compensa a menos que o volume de dados justifique.
O recurso principal que eu recomendo para consulta rápida é a fórmula em si, anotada numa folha de referência. Não precisa de software especial para o cálculo básico. Para validação de convexidade e enumeração efetiva das diagonais em coordenadas reais, bibliotecas como CGAL ou mesmo implementações leves em Python com NumPy resolvem o problema em minutos, evitando erros manuais de aritmética.