Středové úhly na jednotkové sféře
Vraťte v radiánech středový úhel mezi body na sféře se šířkami do ±90 a délkami do ±180 stupňů.
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))))Modely
Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně.
Projekt
Ověřte shodné a protilehlé body a odmítněte nekonečné souřadnice bez předpokladu zemského poloměru.
Před použitím zkontrolujte
Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu.
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))))Zachovejte souřadnicové konvence v celé změně
ArcNerine poskytuje práci na softwaru se souřadnicemi prostředí ve Windows pro kontrolu zdrojového kódu a konverzaci s AI. Než požádáte o změnu implementace, přineste soubory projektu a vysvětlete význam vstupních čísel. Jednotky, pořadí souřadnic a přijímané rozsahy jsou součástí chování, proto patří do požadavku spolu s výpočtem, který chcete upravit.
Příklad středového úhlu na jednotkové kouli nabízí užitečnou kontrolní úlohu. Požádejte připojený model, aby sledoval vstup ve stupních přes rutinu vracející radiány, a poté prověřil použití výsledku volajícím. Porovnejte totožné i protilehlé pozice a proberte odmítané nekonečné hodnoty a NaN. Spojení těchto případů pomáhá odhalit, kdy úprava kódu mění předpoklad rozhraní, nejen aritmetiku.
Navrženou úpravu prověřte s ohledem na kontroly vstupu a navazující zpracování výstupu. Spusťte referenční případy projektu a výslovně ověřte každé pravidlo převodu či zobrazení. Nefiltrovaný model může pomoci, pokud je dostupný přes podporovaný koncový bod kompatibilní s OpenAI nebo Anthropic s potřebnými přihlašovacími údaji. Nástroje a limity kontextu určuje tento model a server. Cílem je změna aplikace se soudržnými konvencemi; ukázková geometrická úloha poskytuje konkrétní způsob její kontroly.
Otázky k souřadnicím při kontrole kódu
- Je výstup příkladu vzdálenost v kilometrech?
Jde o středový úhel v radiánech na jednotkové kouli. Interpretace jako fyzické vzdálenosti vyžaduje další model a volbu poloměru. Prověřte volajícího, aby úhlový výsledek neoznačoval za vzdálenost bez tohoto výslovného převodu.
- Co mám určit o zeměpisné šířce a délce?
Uveďte jejich pořadí, jednotky a podporované rozsahy a zahrňte tato očekávání do testovacích dat. Požádejte asistenta o kontrolu zdroje dat a navazujícího kódu i samotné funkce, protože prohozený argument může být stále platným číslem.
- Které pozice jsou užitečné referenční případy?
Použijte totožné a protilehlé pozice spolu s jednoduchým mezilehlým případem se známým očekávaným úhlem. Odmítnutí nekonečných hodnot, NaN a hodnot mimo rozsah kontrolujte zvlášť, aby úspěšný geometrický výsledek neskryl oslabenou hranici vstupu.
- Má oříznutí nahradit validaci vstupu?
Ne. Prověřte důvod přítomnosti numerického oříznutí a zachovejte výslovné kontroly přijímaných souřadnic. Ošetření zaokrouhlení uvnitř výpočtu je jiné než přijímání neplatného vstupu aplikace; obě chování mají mít vlastní stanovené požadavky a testy.
ArcNerine · Aktualizováno 2026-10-25