Ponto em triângulo
O ponto (1, 1) está dentro do triângulo de vértices (0, 0), (4, 0) e (0, 3), cuja área é 6. Informe um ponto e três vértices e saiba se ele fica dentro ou fora, para colisões em jogos, malhas ou lição de casa. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- X
- 1
- Y
- 1
- X1
- 0
- Y1
- 0
- X2
- 4
- Y2
- 0
- Área
- 6
Decidir se um ponto planar fica dentro de um triângulo é um primitivo central da geometria computacional. Alunos que conferem lições de casa, motores de jogo que testam hitboxes, ferramentas GIS que classificam amostras em malhas triangulares e pipelines CAD que validam sementes precisam de uma resposta rápida e determinística, não de um croqui à mão. Este verificador de ponto em triângulo aceita as coordenadas de consulta e os três pares de vértices, constrói pesos baricêntricos a partir das áreas com sinal dos subtriângulos e informa se o ponto está dentro (incluindo a borda) ou fora. Coordenadas não numéricas ou ausentes também falham e não são cobradas.
O que significa ponto em triângulo e como os pesos baricêntricos decidem
Um triângulo no plano é o envoltório convexo de três vértices não colineares A, B e C. Um ponto de consulta P fica dentro desse triângulo quando pode ser escrito como combinação convexa dos três vértices: P igual a a·A mais b·B mais c·C com a, b e c não negativos e a mais b mais c igual a um. Esses pesos a, b e c são as coordenadas baricêntricas de P em relação a ABC.
Algebricamente equivalem às razões das áreas com sinal dos três subtriângulos PBC, PCA e PAB pela área com sinal de ABC. O dobro da área com sinal de qualquer triplo é o conhecido produto vetorial da fórmula shoelace, de modo que o teste inteiro é um punhado de multiplicações e adições com uma única divisão pela área do triângulo. Quando os três pesos são maiores ou iguais a zero, P está dentro ou na borda; quando algum peso é estritamente negativo, P fica do lado de fora da aresta oposta.
Ordens de vértices no sentido horário e anti-horário são aceitas: a área com sinal pode inverter o sinal, mas as razões baricêntricas permanecem consistentes e a decisão de contenção não muda. Essa abordagem evita comparações de inclinação que quebram em arestas verticais e evita o ruído do ray casting, melhor reservado a polígonos gerais com muitos lados.
Onde um verificador de ponto em triângulo se justifica
Plataformas de sala de aula e tutoria usam um verificador de ponto em triângulo para que alunos confira triples da lição sem desenhar e sem aritmética de inclinação que falha em lados verticais. Corretores automáticos de exames e LMS precisam de um oráculo determinístico que marque interior versus exterior de forma consistente, trate pontos da borda como interiores e rejeite vértices colineares degenerados em vez de devolver false em silêncio.
Código de jogos e simulação faz hit-test de primitivas triangulares de colisão contra amostras de jogador ou projétil sem puxar um middleware de física completo para um único triângulo. Pipelines GIS e de malha classificam pontos de amostra contra triângulos de Delaunay ou de elementos finitos antes de interpolar atributos. Validação falha não é cobrada.
Mantenha as solicitações pequenas, fixe os pesos baricêntricos e a área arredondados nos testes e obtenha respostas de contenção reproduzíveis para lições, edge workers e CI sem montar uma biblioteca de geometria própria. Para n-ágonos gerais use uma ferramenta irmã de contenção em polígono; esta página existe para a intenção de busca específica do triângulo.
Casos de uso
Checagens em sala e lição de casa
Permita que alunos enviem um ponto de consulta e três vértices e verifiquem se o ponto fica dentro do triângulo sem croquis manuais nem testes de inclinação frágeis.
Correção automática de exames e LMS
Corrija itens de ponto em triângulo com um oráculo determinístico que rejeita vértices colineares degenerados e trata pontos da borda como interiores.
Perguntas frequentes
Como verifico se um ponto está dentro de um triângulo?
Envie números finitos x,y para a consulta e x1,y1,x2,y2,x3,y3 para os três vértices.
E se o triângulo for degenerado?
Ponto em triângulo é indefinido para um segmento de reta; essas falhas não são cobradas.
A ordem dos vértices importa (horário vs anti-horário)?
Não. Ambas as orientações funcionam. Áreas com sinal invertem o sinal juntas, de modo que as razões baricêntricas e a decisão de interior permanecem consistentes.
Um ponto sobre um lado ou um vértice conta como interno?
Sim. Um ponto exatamente sobre um lado ou um vértice conta como dentro e é marcado como na borda, a convenção usual para triângulos fechados em gabaritos e malhas.
O que significam os três pesos do resultado?
São as coordenadas baricêntricas do ponto, uma por vértice, e sempre somam 1. Se as três forem zero ou mais, o ponto está dentro; se alguma for negativa, ele fica além do lado oposto àquele vértice.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
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.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/geom/point-in-triangle \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x":1,"y":1,"x1":0,"y1":0,"x2":4,"y2":0,"x3":0,"y3":3}'const res = await fetch("https://api.kit.forhosting.com/geom/point-in-triangle", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x": 1,
"y": 1,
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 0,
"x3": 0,
"y3": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geom/point-in-triangle",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x": 1,
"y": 1,
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 0,
"x3": 0,
"y3": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geom/point-in-triangle", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x":1,"y":1,"x1":0,"y1":0,"x2":4,"y2":0,"x3":0,"y3":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x":1,"y":1,"x1":0,"y1":0,"x2":4,"y2":0,"x3":0,"y3":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geom/point-in-triangle", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"x": 1,
"y": 1,
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 0,
"x3": 0,
"y3": 3
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geom.point_in_triangle",
"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.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Triângulos degenerados cujos vértices são colineares têm área zero e falham com invalid_input em vez de um palpite vazio.
O que significa ponto em triângulo e como os pesos baricêntricos decidem
Pontos que caem exatamente em um vértice ou aresta produzem um peso nulo e são reportados como inside com on_boundary true, alinhados à convenção usual de triângulo fechado usada em consultas de malha e gabaritos de lição.
Contrato de entrada, formato da resposta e comportamento de erro
Exemplo: vértices (0,0), (4,0) e (0,3) com consulta (1,1) produzem inside true porque todos os pesos baricêntricos são positivos e a área do triângulo é seis. O mesmo triângulo com consulta (5,5) produz inside false porque pelo menos um peso é negativo. Combine a resposta com seu próprio gráfico se precisar de um croqui; esta capacidade apenas classifica contenção e não emite SVG, winding numbers para polígonos gerais nem prosa passo a passo de sala de aula além dos campos numéricos. Envie um corpo JSON com oito números finitos obrigatórios: x e y para o ponto de consulta, depois x1 e y1 para o vértice A, x2 e y2 para o vértice B, e x3 e y3 para o vértice C. Cada campo pode chegar como número JSON ou como string numérica; campos ausentes, strings vazias, NaN, Infinity e texto não numérico falham com invalid_input nomeando o campo, e essas falhas não consomem saldo. Em caso de sucesso, o corpo inclui o booleano inside, o booleano on_boundary, as oito coordenadas ecoadas arredondadas para goldens estáveis, a área positiva do triângulo, um objeto barycentric com pesos a, b e c arredondados a doze casas decimais, e method igual a barycentric para que clientes documentem o algoritmo ao lado da resposta.
Onde um verificador de ponto em triângulo se justifica
Como a implementação é parse puro tier A, cada chamada bem-sucedida custa o preço base publicado US$ 0,002 sem tokens de modelo e sem rede de saída.
Casos de integração
Consultas em jogos, GIS e malhas
Faça hit-test de primitivas triangulares ou classifique amostras frente a faces de malha com uma API de parse pequena em vez de uma pilha completa de geometria.
Perguntas técnicas
Pontos na aresta contam como interiores?
Sim. Pontos da borda produzem um peso baricêntrico nulo e são reportados como inside com on_boundary true, alinhados à convenção de triângulo fechado.
Quanto custa o verificador de ponto em triângulo?
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.