Центральные углы единичной сферы
ArcNerine объединяет вычисление углов на сфере с обсуждением Windows-проекта. Сравните соглашения о координатах и численные границы с предложениями модели до правки геометрического кода.
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))))Подключение
Базовый URL, учётные данные и доступный сервер.
Проект
Проверьте совпадения и антиподы, отклоняя неконечные координаты без предположения о радиусе Земли.
Проверьте перед применением
Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
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))))Сохраняйте соглашения о координатах на всём пути изменения
ArcNerine предоставляет для работы с координатным кодом среду Windows для изучения исходников и обсуждения с ИИ. Добавьте файлы проекта и объясните смысл входных чисел перед запросом изменения реализации. Единицы, порядок координат и допустимые диапазоны — часть поведения, поэтому их следует указывать в запросе вместе с изменяемым вычислением.
Пример центрального угла на единичной сфере — полезная задача проверки. Попросите подключённую модель проследить вход в градусах через процедуру, возвращающую радианы, затем изучить использование результата вызывающим кодом. Сравните совпадающие и противоположные положения и обсудите отклонение неконечных значений. Совместный разбор этих случаев помогает выявить изменение допущений интерфейса, а не только арифметики.
Проверяйте предложенную правку с учётом валидации входа и потребителя вывода. Выполните эталонные случаи проекта и явно проверьте правила преобразования или отображения. Модель без фильтрации может помогать, если она доступна через поддерживаемую конечную точку, совместимую с OpenAI, или конечную точку Anthropic, настроенную с нужными учётными данными. Инструменты и пределы контекста определяются моделью и сервером. Цель — изменение приложения с согласованными соглашениями; иллюстративная геометрическая задача даёт конкретный способ проверки.
Вопросы о координатах при проверке кода
- Является ли вывод примера расстоянием в километрах?
Это центральный угол в радианах на единичной сфере. Интерпретация как физического расстояния требует дополнительной модели и выбора радиуса. Проверьте вызывающий код, чтобы он не обозначал угловой результат как расстояние без явного преобразования.
- Что указать о широте и долготе?
Задайте их порядок, единицы и поддерживаемые диапазоны, затем включите ожидания в тестовые данные. Попросите помощника изучить источник данных и потребителя вместе с функцией: переставленный аргумент всё ещё может быть допустимым числом.
- Какие положения полезны как эталонные случаи?
Используйте совпадающие и антиподальные положения вместе с простым промежуточным случаем с известным углом. Отдельно проверьте отклонение неконечного входа и выхода за диапазон, чтобы успешный геометрический результат не скрывал ослабления входной границы.
- Должно ли ограничение численного диапазона заменять валидацию входа?
Нет. Изучите причину численного ограничения и сохраняйте явные проверки допустимых координат. Обработка округления внутри вычисления отличается от принятия недопустимого входа приложения; оба поведения следует тестировать по собственным заявленным требованиям.
ArcNerine · Обновлено 2026-10-25