Fluxos de trabalho · Coordenadas baricêntricas exatas ×
from fractions import Fraction
def barycentric(vertices, point):
vertices, point = tuple(tuple(v) for v in vertices), tuple(point)
if len(vertices) != 3 or any(len(v) != 2 for v in vertices) or len(point) != 2:
raise ValueError("triangle.shape")
if any(type(c) is not int or abs(c) > 10000 for v in vertices + (point,) for c in v):
raise ValueError("coordinate.range")
(x0, y0), (x1, y1), (x2, y2) = vertices
x, y = point
den = (y1-y2)*(x0-x2) + (x2-x1)*(y0-y2)
if den == 0:
raise ValueError("triangle.degenerate")
a = Fraction((y1-y2)*(x-x2) + (x2-x1)*(y-y2), den)
b = Fraction((y2-y0)*(x-x2) + (x0-x2)*(y-y2), den)
return a, b, 1-a-b
✳Calcule pesos baricêntricos exatos para três vértices inteiros e um ponto inteiro com coordenadas de módulo até 10000.
✓ AlteraçõesRevise antes de aplicar ↗
Ilustração do ambiente
Projeto
Teste um vértice e um ponto externo, rejeitando vértices colineares e verificando a reconstrução do ponto.
Revise antes de aplicar
Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
Modelos
Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente.
from fractions import Fraction
def barycentric(vertices, point):
vertices, point = tuple(tuple(v) for v in vertices), tuple(point)
if len(vertices) != 3 or any(len(v) != 2 for v in vertices) or len(point) != 2:
raise ValueError("triangle.shape")
if any(type(c) is not int or abs(c) > 10000 for v in vertices + (point,) for c in v):
raise ValueError("coordinate.range")
(x0, y0), (x1, y1), (x2, y2) = vertices
x, y = point
den = (y1-y2)*(x0-x2) + (x2-x1)*(y0-y2)
if den == 0:
raise ValueError("triangle.degenerate")
a = Fraction((y1-y2)*(x-x2) + (x2-x1)*(y-y2), den)
b = Fraction((y2-y0)*(x-x2) + (x0-x2)*(y-y2), den)
return a, b, 1-a-b
Ambiente de programação com IA
Transforme um requisito geométrico em alterações verificáveis no código
BarySlate é um ambiente de programação para Windows para discutir código de geometria com um modelo de IA conectado por você. Comece pelo sistema de coordenadas e pelo resultado necessário à aplicação. Descrever precisamente essas convenções mantém a conversa útil quando um resultado visualmente plausível ainda pode ter sinal, ordem ou representação numérica incorretos.
O exemplo de coordenadas baricêntricas de triângulos oferece uma tarefa específica: revisar pesos com sinal e rejeitar um triângulo degenerado. Peça ao modelo para examinar a função junto do código que consome esses pesos. Explique se o chamador precisa de frações exatas ou de outra representação antes de solicitar uma alteração que possa modificar essa interface.
Revise a proposta usando vértices, um ponto interno e um externo com resultados esperados estabelecidos independentemente. Inclua um caso degenerado e verifique seu percurso pelo tratamento de erros. Execute esses casos com as ferramentas do projeto e examine também o comportamento consumidor; mudar o tratamento de pontos externos pode afetar mais que o cálculo em si.
Um modelo de IA sem restrições só é uma opção selecionável quando disponível no endpoint compatível com OpenAI ou Anthropic aceito. Forneça credenciais se exigidas e confira o suporte a contexto e ferramentas. As restrições do modelo escolhido continuam valendo, enquanto BarySlate dá às alterações propostas um contexto concreto de projeto para avaliá-las.
Antes de aceitar uma proposta de código geométrico
O que devo informar sobre pontos fora do triângulo?
Declare se pesos com sinal são esperados e como o chamador os utiliza. Não presuma que um ponto externo é inválido apenas porque um peso é negativo. Inclua um caso de ponto externo com o resultado e o comportamento consumidor pretendidos.
Por que mencionar frações exatas na solicitação?
Uma alteração no tipo de retorno pode afetar comparações, serialização e cálculos posteriores. Se o projeto depende de valores exatos, declare explicitamente esse requisito. Revise qualquer conversão proposta para ponto flutuante junto dos chamadores que receberiam esses valores.
Quais casos ajudam a isolar um erro na ordem das coordenadas?
Comece por cada vértice e seus pesos esperados, depois por um ponto interno de resultado conhecido. Deixe explícita a ordem dos vértices no caso de teste. Esses casos podem revelar premissas de ordenação que um único triângulo renderizado oculta.
BarySlate pode confirmar se minha geometria renderizada está correta?
Use seu ambiente de renderização e as verificações do projeto para estabelecer esse resultado. O ambiente permite discutir código e propor edições. Compare os casos numéricos com o comportamento visível, sem tratar uma explicação do modelo ou uma imagem como verificação completa.