ForHosting KIT · Viagens e geografia

Teste de convexidade de polígono

O retângulo (0, 0), (4, 0), (4, 3), (0, 3) é convexo: todos os cantos viram para o mesmo lado, em sentido anti-horário. A ponta de flecha (0, 0), (3, 1), (0, 2), (1, 1) mistura curvas à esquerda e à direita, então é côncava. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve

Um teste de convexidade de polígono responde a uma pergunta fundamental da geometria computacional: dado um anel ordenado de vértices cartesianos, cada ângulo interior permanece no máximo em cento e oitenta graus de modo que a forma nunca se afunde para dentro? Agrimensores que validam parcelas cadastrais, desenvolvedores de jogos que definem cascos de colisão, equipes GIS que limpam polígonos de geocerca, exportadores CAD que impõem restrições de convexidade e ferramentas de sala de aula que avaliam exercícios de polígonos simples precisam de uma resposta determinística de sim ou não sem montar uma biblioteca geométrica completa. Esta capacidade aceita uma lista ordenada de vértices, percorre o anel fechado uma vez e compara o produto vetorial bidimensional de cada par de arestas consecutivas. Quando todo produto vetorial não nulo compartilha o mesmo sinal, cada virada segue o mesmo sentido e o polígono é convexo; sinais mistos indicam pelo menos um ângulo reflexo e o polígono é côncavo. Produtos vetoriais nulos marcam vértices colineares e são permitidos sem quebrar a convexidade.

Como produtos vetoriais de arestas consecutivas decidem a convexidade

Rotule os vértices ordenados V zero até V n menos um e feche o anel tratando a aresta do último vértice de volta ao primeiro como presente mesmo quando quem chama não repete o ponto inicial. Em cada vértice B com vértice anterior A e seguinte C, forme os vetores de saída de A para B e de B para C. O produto vetorial bidimensional deles é o escalar z igual a (B.x menos A.x) vezes (C.y menos B.y) menos (B.y menos A.y) vezes (C.x menos B.x).

O sinal de z é a direção da virada em B: positivo para uma virada à esquerda quando o plano se orienta com y para cima e x à direita (percurso anti-horário do contorno), negativo para uma virada à direita (percurso horário) e zero quando A, B e C são colineares.

Um polígono simples é convexo se e somente se toda virada não nula compartilha o mesmo sinal, o que significa que cada ângulo interior é no máximo cento e oitenta graus e o contorno nunca inverte o sentido de rotação. Viradas positivas e negativas misturadas provam um ângulo interior reflexo em algum ponto do anel, de modo que o polígono é côncavo.

O algoritmo é estritamente O(n) no número de vértices após um único passo de normalização que remove um duplicado final do primeiro ponto quando quem chama já fechou o anel.

Quando vale testar a convexidade

Pipelines de mapeamento e GIS usam um teste de convexidade de polígono antes de algoritmos que assumem entrada convexa — recorte contra uma janela convexa, decomposição de regiões complexas ou alimentadores de solvers que rejeitam vértices reflexos. Motores de jogos e simulação validam malhas de colisão definidas por designers para que um único afundamento não quebre depois hipóteses de eixos de separação ou GJK. Exportadores CAD e de fabricação impõem restrições de convexidade em blanks e polígonos de suporte antes de enviar geometria a um cortador.

Plataformas educacionais avaliam itens «este polígono é convexo?» com um oráculo determinístico que trata de forma coerente vértices colineares no meio da aresta em vez de confiar no olho. A validação falha não consome saldo.

Validação de geocercas e parcelas GIS

Rejeite ou sinalize anéis cadastrais e de geocerca côncavos antes de pipelines que assumem polígonos convexos para recorte, buffer ou rotinas de área.

Checagens de casco de colisão em jogos

Valide polígonos de colisão 2D definidos por designers para que algoritmos dependentes de convexidade nunca recebam um casco amassado em tempo de execução.

Correção automática em sala e exames

Avalie itens «este polígono é convexo?» com um oráculo determinístico de produto vetorial alinhado às definições de direção de virada do livro didático.

Como você testa se um polígono é convexo?

Envie vértices ordenados como pares {x, y} ou [x, y] (pelo menos três).

E se alguns vértices consecutivos forem colineares?

Produtos vetoriais nulos são permitidos. Pontos colineares no meio da aresta não quebram a convexidade por si sós; apenas viradas mistas à esquerda e à direita marcam um polígono côncavo.

A ordem dos vértices (horário vs anti-horário) importa?

Qualquer orientação consistente é válida. A resposta reporta orientation como clockwise ou counterclockwise quando convexo, e mixed quando as viradas discordam.

O que acontece com menos de três vértices?

Um teste de convexidade de polígono precisa de pelo menos três vértices; entrada inválida não é cobrada.

O que o resultado informa além do sim ou não?

Ele mostra o sentido de giro do anel: anti-horário, horário, misto em uma figura côncava ou alinhado quando todos os pontos estão sobre uma reta. Também conta as curvas reais e os vértices em que o contorno segue reto.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/geo/polygon-is-convex

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/geo/polygon-is-convex \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"vertices":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3}]}'
{
  "vertices": [
    {
      "x": 0,
      "y": 0
    },
    {
      "x": 4,
      "y": 0
    },
    {
      "x": 4,
      "y": 3
    },
    {
      "x": 0,
      "y": 3
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "geo.polygon_is_convex",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Como produtos vetoriais de arestas consecutivas decidem a convexidade

Quando todo produto vetorial é zero os vértices estão em uma única reta; a forma não tem área e este endpoint reporta is_convex false com orientation collinear em vez de inventar um casco convexo.

Contrato de entrada, formato da resposta e comportamento de erro

Um vértice final idêntico ao primeiro é removido automaticamente, de modo que anéis fechados no estilo GeoJSON e listas abertas de sala de aula funcionam. Exemplo: o quadrado (0,0), (4,0), (4,3), (0,3) é convexo com orientação anti-horária. Envie por POST um corpo JSON com um campo obrigatório: vertices, um arranjo ordenado de pelo menos três pontos. Cada ponto pode ser um objeto com x e y finitos (ou aliases lon e lat) ou um arranjo de dois elementos [x, y]. Os aliases points, polygon e coords são aceitos com o mesmo significado para que cargas GIS existentes entrem sem renomear. Menos de três vértices após essa normalização, cargas que não são arranjos, coordenadas ausentes e números não finitos falham com invalid_input e não são cobrados. Em caso de sucesso o corpo inclui is_convex como booleano; n como a contagem normalizada de vértices; orientation como counterclockwise, clockwise, mixed ou collinear; turn_count como o número de viradas não nulas; zero_turns como a contagem colinear; uma string formula que reexpressa a identidade do produto vetorial; e vertices ecoados como objetos {x, y} na ordem do anel. O dardo côncavo (0,0), (3,1), (0,2), (1,1) mistura sinais de virada e devolve is_convex false. Combine o booleano com o seu próprio código de desenho se precisar de um esboço; este endpoint apenas classifica convexidade e não emite gráficos, cascos nem triangulação.

Onde uma API de convexidade de polígono gera valor real

Mantenha anéis modestos, fixe is_convex e orientation nos testes e você obtém rótulos de convexidade reproduzíveis para geocercas, checagens de sala de aula e workers na borda sem enviar uma pilha completa de geometria computacional própria.

Quanto custa o teste de convexidade de polígono?

A ferramenta no navegador é gratuita. Solicitações API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.

Ver a documentação completa do KIT →