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
✳Bereken exacte barycentrische gewichten voor drie gehele hoekpunten en een geheel punt met coördinaatgrootten tot 10000.
✓ WijzigingenControleer vóór het toepassen ↗
Illustratie van de werkruimte
Project
Test een hoekpunt en buitenpunt, weiger collineaire hoekpunten en controleer dat de gewichten het punt reconstrueren.
Controleer vóór het toepassen
Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
Modellen
Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.
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
AI-werkruimte voor code
Vertaal een geometrische eis naar controleerbare broncodewijzigingen
BarySlate is een programmeeromgeving voor Windows om geometrische broncode te bespreken met een AI-model dat je zelf verbindt. Begin met het coördinatenstelsel en het resultaat dat je toepassing nodig heeft. Een precieze beschrijving van die conventies houdt het gesprek nuttig wanneer een visueel aannemelijk resultaat toch een verkeerd teken, een verkeerde volgorde of numerieke representatie kan hebben.
Het voorbeeld met barycentrische driehoekscoördinaten biedt een specifieke projecttaak: gewichten met een teken beoordelen en een ontaarde driehoek weigeren. Vraag het model de functie samen met de code die de gewichten gebruikt te bekijken. Leg uit of de aanroeper exacte breuken of een andere representatie nodig heeft voordat je een wijziging vraagt die de interface kan veranderen.
Beoordeel het voorstel met hoekpunten, een binnenpunt en een buitenpunt waarvoor de verwachtingen onafhankelijk zijn vastgesteld. Neem een ontaard geval mee en controleer het pad door de foutafhandeling. Voer deze testgevallen uit met de tools van je project en bekijk ook het gedrag van de gebruikende code; een andere behandeling van buitenpunten kan meer beïnvloeden dan alleen de berekening.
Een AI-model zonder beperkingen is alleen selecteerbaar als het beschikbaar is via je ondersteunde OpenAI-compatibele of Anthropic-endpoint. Geef zo nodig inloggegevens op en controleer ondersteuning voor context en tools. De beperkingen van het gekozen model blijven gelden; BarySlate geeft de voorgestelde wijzigingen een concrete projectcontext waarin je ze kunt beoordelen.
Voordat je een voorstel voor geometriecode accepteert
Wat moet ik aangeven over punten buiten de driehoek?
Geef aan of gewichten met een teken worden verwacht en hoe de aanroeper ze gebruikt. Ga er niet van uit dat een buitenpunt ongeldig is omdat een gewicht negatief is. Voeg een testgeval voor een buitenpunt toe met het beoogde resultaat en gedrag van de gebruikende code.
Waarom exacte breuken noemen in het verzoek?
Een wijziging van het terugkeertype kan vergelijkingen, serialisatie en verdere berekeningen veranderen. Als je project van exacte waarden afhangt, vermeld die eis dan expliciet. Beoordeel voorgestelde omzettingen naar drijvende-kommagetallen samen met de aanroepers die ze ontvangen.
Welke gevallen helpen een fout in de coördinaatvolgorde te vinden?
Begin met elk hoekpunt en de verwachte gewichten en daarna een binnenpunt met een bekend resultaat. Leg de hoekpuntvolgorde expliciet vast in het testgeval. Daarmee worden volgordeaannames zichtbaar die één getekende driehoek kan verbergen.
Kan BarySlate bevestigen dat mijn weergegeven geometrie correct is?
Gebruik je renderomgeving en projectcontroles om dat vast te stellen. De programmeeromgeving ondersteunt codebesprekingen en voorgestelde bewerkingen. Vergelijk numerieke testgevallen met het zichtbare gedrag in plaats van een modeluitleg of één afbeelding als volledige verificatie te beschouwen.