Unghiuri centrale pe sfera unitară
Întoarce în radiani unghiul central dintre poziții sferice cu latitudini în ±90 și longitudini în ±180 grade.
from math import asin, cos, isfinite, radians, sin, sqrt
def central_angle(lat1, lon1, lat2, lon2):
values = (lat1, lon1, lat2, lon2)
if any(type(x) not in (int, float) or not -limit <= x <= limit
or not isfinite(x) for x, limit in zip(values, (90, 180, 90, 180))):
raise ValueError("bounded finite coordinates")
p, q = radians(lat1), radians(lat2)
a = sin((q-p)/2)**2 + cos(p)*cos(q)*sin(radians(lon2-lon1)/2)**2
return 2 * asin(sqrt(min(1.0, max(0.0, a))))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.
Proiect
Testează puncte coincidente și antipode, respingând coordonate nefinite fără a presupune raza Pământului.
Verifică înainte de aplicare
Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
from math import asin, cos, isfinite, radians, sin, sqrt
def central_angle(lat1, lon1, lat2, lon2):
values = (lat1, lon1, lat2, lon2)
if any(type(x) not in (int, float) or not -limit <= x <= limit
or not isfinite(x) for x, limit in zip(values, (90, 180, 90, 180))):
raise ValueError("bounded finite coordinates")
p, q = radians(lat1), radians(lat2)
a = sin((q-p)/2)**2 + cos(p)*cos(q)*sin(radians(lon2-lon1)/2)**2
return 2 * asin(sqrt(min(1.0, max(0.0, a))))Păstrează convențiile coordonatelor pe tot parcursul modificării
ArcNerine oferă lucrului software legat de coordonate un spațiu Windows pentru examinarea sursei și o conversație cu IA. Adu fișierele proiectului și explică ce reprezintă numerele de intrare înainte să ceri modificarea implementării. Unitățile, ordinea coordonatelor și intervalele acceptate fac parte din comportament, deci trebuie incluse în cerere alături de calculul pe care vrei să îl ajustezi.
Exemplul unghiului central pe sfera unitate oferă o sarcină utilă de examinare. Cere modelului conectat să urmărească intrarea exprimată în grade printr-o rutină care returnează radiani, apoi examinează cum folosește apelantul rezultatul. Compară poziții coincidente și opuse și discută respingerea valorilor nefinite. Păstrarea acestor cazuri împreună ajută la identificarea situațiilor în care o modificare de cod schimbă o ipoteză a interfeței, nu doar aritmetica.
Examinează corecția propusă având în vedere verificările intrării și codul care folosește ieșirea. Rulează cazurile de referință ale proiectului și verifică explicit orice regulă de conversie sau afișare. Un model nefiltrat poate ajuta când este disponibil printr-un endpoint acceptat compatibil cu OpenAI sau Anthropic, configurat cu credențialele necesare. Instrumentele și limitele contextului provin de la acel model și server. Scopul este o modificare a aplicației ale cărei convenții rămân coerente, sarcina geometrică ilustrativă oferind o modalitate concretă de verificare a lucrului.
Întrebări despre coordonate pentru examinarea codului
- Este ieșirea exemplului o distanță în kilometri?
Este un unghi central în radiani pe o sferă unitate. Interpretarea ca distanță fizică necesită un model suplimentar și alegerea razei. Examinează apelantul astfel încât să nu eticheteze un rezultat unghiular drept distanță fără acea conversie explicită.
- Ce trebuie să precizez despre latitudine și longitudine?
Precizează ordinea, unitățile și intervalele acceptate, apoi include aceste așteptări în cazurile de test. Cere asistentului să examineze sursa datelor și codul care le folosește, precum și funcția, deoarece un argument inversat poate fi în continuare un număr valid.
- Ce poziții sunt utile ca referință?
Folosește poziții coincidente și antipodale, împreună cu un caz intermediar simplu al cărui unghi așteptat este cunoscut. Verifică separat respingerea intrărilor nefinite și din afara intervalului, astfel încât un rezultat geometric reușit să nu ascundă o limită de intrare slăbită.
- Ar trebui limitarea numerică să înlocuiască validarea intrării?
Nu. Examinează motivul limitării numerice și păstrează explicite verificările coordonatelor acceptate. Tratarea rotunjirii în interiorul calculului diferă de acceptarea unei intrări nevalide a aplicației, iar ambele comportamente trebuie testate conform propriilor cerințe declarate.
ArcNerine · Actualizat 2026-10-25