Ángulos centrales en la esfera unitaria
Devuelve en radianes el ángulo central entre posiciones esféricas con latitudes de ±90 y longitudes de ±180 grados.
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))))Modelos
Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado.
Proyecto
Prueba puntos coincidentes y antípodas, rechazando coordenadas no finitas sin suponer un radio terrestre.
Revisa antes de aplicar
Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.
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))))Mantén las convenciones de coordenadas a lo largo de todo el cambio
ArcNerine ofrece al trabajo de software relacionado con coordenadas un entorno Windows para inspeccionar código y conversar con IA. Aporta los archivos del proyecto y explica qué representan los números entrantes antes de pedir un cambio de implementación. Las unidades, el orden de coordenadas y los intervalos admitidos forman parte del comportamiento, por lo que deben acompañar en la solicitud al cálculo que deseas ajustar.
El ejemplo del ángulo central en la esfera unidad proporciona una tarea de revisión útil. Pide al modelo conectado que siga una entrada en grados por una rutina que devuelve radianes y examine cómo utiliza ese resultado el consumidor. Compara posiciones coincidentes y opuestas y analiza el rechazo de valores no finitos. Reunir estos casos ayuda a revelar cuándo una modificación cambia un supuesto de interfaz y no solo la aritmética.
Revisa el parche propuesto teniendo a la vista las comprobaciones de entrada y el consumidor de salida. Ejecuta los casos de referencia de tu proyecto y verifica explícitamente cualquier regla de conversión o visualización. Un modelo sin filtros puede ayudar cuando esté disponible mediante un endpoint compatible con OpenAI o de Anthropic admitido, configurado con las credenciales necesarias. Las herramientas y los límites de contexto provienen de ese modelo y servidor. El objetivo es un cambio de aplicación cuyas convenciones sigan siendo coherentes, usando la tarea geométrica ilustrativa como forma concreta de comprobar el trabajo.
Preguntas de coordenadas para revisar código
- ¿Es la salida del ejemplo una distancia en kilómetros?
Es un ángulo central en radianes sobre una esfera unidad. Interpretarlo como distancia física requiere un modelo adicional y elegir un radio. Revisa el consumidor para que no etiquete un resultado angular como distancia sin esa conversión explícita.
- ¿Qué debo especificar sobre latitud y longitud?
Indica su orden, unidades e intervalos admitidos e incluye esas expectativas en los casos de prueba. Pide al asistente que examine la fuente de datos y el consumidor además de la función, ya que un argumento intercambiado aún puede ser un número válido.
- ¿Qué posiciones son útiles como referencia?
Utiliza posiciones coincidentes y antípodas junto con un caso intermedio sencillo de ángulo esperado conocido. Comprueba por separado el rechazo de entradas no finitas y fuera de rango para que un resultado geométrico correcto no oculte una validación debilitada.
- ¿Debe una limitación numérica sustituir la validación de entrada?
No. Revisa por qué existe esa limitación y mantén explícitas las comprobaciones de coordenadas admitidas. Tratar el redondeo dentro de un cálculo es distinto de aceptar entradas inválidas de la aplicación, y ambos comportamientos deben probarse conforme a sus propios requisitos declarados.
ArcNerine · Actualizado 2026-10-25