Sudut pusat pada bola satuan
Kembalikan sudut pusat dalam radian antara posisi bola dengan lintang dalam ±90 dan bujur dalam ±180 derajat.
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))))Model
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
Proyek
Uji titik sama dan antipoda, tolak koordinat tak berhingga tanpa mengasumsikan jari-jari Bumi.
Tinjau sebelum menerapkan
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
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))))Pertahankan konvensi koordinat sepanjang perubahan
ArcNerine menyediakan ruang kerja Windows untuk pemeriksaan sumber dan percakapan AI bagi pekerjaan perangkat lunak terkait koordinat. Sertakan berkas proyek dan jelaskan makna angka masukan sebelum meminta perubahan implementasi. Satuan, urutan koordinat, dan rentang yang diterima merupakan bagian perilaku, sehingga harus ada dalam permintaan bersama perhitungan yang ingin disesuaikan.
Contoh sudut pusat bola satuan menyediakan tugas peninjauan yang berguna. Minta model terhubung menelusuri masukan dalam derajat melalui rutin yang mengembalikan radian, lalu periksa cara pemanggil menggunakan hasil. Bandingkan posisi berimpit dan berlawanan serta bahas penolakan nilai tak berhingga atau bukan bilangan berhingga. Menjaga kasus tersebut bersama-sama membantu mengungkap saat perubahan kode mengubah asumsi antarmuka, bukan hanya aritmetika.
Tinjau usulan tambalan sambil memperhatikan pemeriksaan masukan dan kode pengguna keluaran. Jalankan kasus acuan proyek dan verifikasi setiap konversi atau aturan tampilan secara eksplisit. Model tanpa filter dapat membantu jika tersedia melalui endpoint kompatibel OpenAI atau endpoint Anthropic yang didukung, dikonfigurasi dengan kredensial yang diperlukan. Alat dan batas konteks berasal dari model serta server tersebut. Tujuannya adalah perubahan aplikasi dengan konvensi tetap konsisten, sementara tugas geometri ilustratif menyediakan cara konkret untuk memeriksa pekerjaan.
Pertanyaan koordinat untuk peninjauan kode
- Apakah keluaran contoh berupa jarak dalam kilometer?
Keluaran berupa sudut pusat dalam radian pada bola satuan. Penafsiran sebagai jarak fisik memerlukan model tambahan dan pilihan jari-jari. Tinjau pemanggil agar tidak melabeli hasil sudut sebagai jarak tanpa konversi eksplisit tersebut.
- Apa yang perlu saya tentukan tentang lintang dan bujur?
Nyatakan urutan, satuan, dan rentang yang didukung, lalu sertakan ekspektasi itu dalam data uji. Minta asisten memeriksa sumber data dan kode pengguna selain fungsi, karena argumen yang tertukar masih bisa berupa angka valid.
- Posisi mana yang berguna sebagai kasus acuan?
Gunakan posisi berimpit dan antipodal bersama kasus antara sederhana yang sudut harapannya diketahui. Periksa penolakan masukan tak berhingga, bukan bilangan berhingga, dan di luar rentang secara terpisah agar hasil geometri yang berhasil tidak menyembunyikan pelonggaran batas masukan.
- Haruskah penjepitan nilai menggantikan validasi masukan?
Tidak. Tinjau alasan penjepitan numerik diterapkan dan pertahankan pemeriksaan koordinat yang diterima secara eksplisit. Penanganan pembulatan di dalam perhitungan berbeda dari menerima masukan aplikasi yang tidak valid, dan kedua perilaku harus diuji menurut persyaratannya masing-masing.
ArcNerine · Diperbarui 2026-10-25