Unit-sphere central angles
ArcNerine brings spherical-angle calculations into a Windows project discussion. Compare coordinate conventions and numerical boundaries with model suggestions before applying changes to your geometry code.
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))))Connection
Base URL, credentials and a reachable server.
Project
Test coincident and antipodal points, rejecting nonfinite coordinates rather than assuming an Earth radius.
Review before applying
Compare actual behavior with the expected result. If a check fails, investigate it before applying more changes.
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))))Carry coordinate conventions through the whole change
ArcNerine gives coordinate-related software work a Windows workspace for source inspection and an AI conversation. Bring the project files and explain what the incoming numbers represent before asking for an implementation change. Units, coordinate order and accepted ranges are part of the behavior, so they belong in the request alongside the calculation you want to adjust.
The unit-sphere central-angle example provides a useful review task. Ask the connected model to follow degree-valued input through a routine that returns radians, then inspect how the caller uses that result. Compare coincident and opposite positions and discuss rejected nonfinite values. Keeping these cases together helps reveal when a code edit changes an interface assumption rather than only the arithmetic.
Review the proposed patch with the input checks and output consumer in view. Run your project's reference cases and verify any conversion or display rule explicitly. An unfiltered model can assist when available through a supported OpenAI-compatible or Anthropic endpoint, configured with required credentials. Tools and context limits come from that model and server. The goal is an application change whose conventions remain coherent, with the illustrative geometry task providing a concrete way to check the work.
Coordinate questions for a code review
- Is the example's output a distance in kilometers?
It is a central angle in radians on a unit sphere. A physical-distance interpretation requires an additional model and radius choice. Review the caller so it does not label an angular result as a distance without that explicit conversion.
- What should I specify about latitude and longitude?
State their order, units and supported ranges, then include those expectations in the fixtures. Ask the assistant to inspect the data source and consumer as well as the function, since a swapped argument can still be a valid number.
- Which positions make useful reference cases?
Use coincident and antipodal positions along with a simple intermediate case whose expected angle is known. Check rejected nonfinite and out-of-range inputs separately, so a successful geometric result does not conceal a weakened input boundary.
- Should a clamp replace input validation?
No. Review why a numerical clamp is present and keep the accepted-coordinate checks explicit. Handling rounding inside a calculation is different from accepting invalid application input, and both behaviors should be tested under their own stated requirements.
ArcNerine · Updated 2026-10-25