Fluxuri de lucru · Coordonate baricentrice exacte ×
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
✳Calculează ponderi baricentrice exacte pentru trei vârfuri întregi și un punct întreg cu modulele coordonatelor până la 10000.
✓ ModificăriVerifică înainte de aplicare ↗
Ilustrarea spațiului de lucru
Proiect
Testează un vârf și un punct exterior, respinge vârfuri coliniare și verifică reconstruirea punctului.
Verifică înainte de aplicare
Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
Modele
Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat.
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
Spațiu de programare cu AI
Transformă o cerință geometrică în modificări de cod verificabile
BarySlate este un spațiu de lucru Windows pentru programare, în care discuți codul sursă legat de geometrie cu un model IA conectat de tine. Începe cu sistemul de coordonate și rezultatul necesar aplicației. O descriere precisă a acestor convenții menține utilitatea conversației când un rezultat plauzibil vizual poate avea totuși semnul, ordinea sau reprezentarea numerică greșită.
Exemplul coordonatelor baricentrice ale triunghiului oferă o sarcină specifică proiectului: examinarea ponderilor cu semn și respingerea unui triunghi degenerat. Cere modelului să examineze funcția împreună cu codul care folosește ponderile. Explică dacă apelantul are nevoie de fracții exacte sau de altă reprezentare înainte să soliciți o modificare care ar putea schimba interfața.
Examinează propunerea folosind vârfurile, un punct interior și unul exterior, cu rezultate așteptate stabilite independent. Include un caz degenerat și verifică traseul său prin tratarea erorilor. Rulează aceste cazuri cu instrumentele proiectului și examinează și comportamentul codului care folosește rezultatele; modificarea tratării punctelor exterioare poate afecta mai mult decât calculul în sine.
Un model de IA fără restricții poate fi selectat doar dacă este disponibil prin endpointul acceptat compatibil cu OpenAI sau Anthropic. Furnizează credențiale dacă sunt necesare și verifică suportul pentru context și instrumente. Restricțiile modelului selectat se aplică în continuare, iar BarySlate oferă modificărilor propuse un context concret de proiect în care le poți evalua.
Înainte de acceptarea unei propuneri de cod geometric
Ce ar trebui să precizez despre punctele din afara triunghiului?
Precizează dacă sunt așteptate ponderi cu semn și cum le folosește apelantul. Nu presupune că un punct exterior este nevalid doar pentru că o pondere este negativă. Include un caz de test cu un punct exterior, rezultatul dorit și comportamentul codului care îl folosește.
De ce să menționez fracțiile exacte în cerere?
Schimbarea tipului returnat poate modifica comparațiile, serializarea și calculele ulterioare. Dacă proiectul depinde de valori exacte, precizează explicit cerința. Examinează orice conversie propusă la valori în virgulă mobilă împreună cu apelanții care le-ar primi.
Ce cazuri ajută la izolarea unei greșeli în ordinea coordonatelor?
Începe cu fiecare vârf și ponderile sale așteptate, apoi cu un punct interior cu rezultat cunoscut. Precizează explicit ordinea vârfurilor în cazul de test. Aceste cazuri pot dezvălui ipoteze despre ordine ascunse de un singur triunghi randat.
Poate BarySlate confirma corectitudinea geometriei randate?
Folosește mediul de randare și verificările proiectului pentru a stabili acest lucru. Spațiul de lucru permite discutarea codului și propunerea de modificări. Compară cazurile numerice de test cu comportamentul vizibil, fără să consideri explicația modelului sau o singură imagine drept verificare completă.