Moon, iki nokta arasında bir enlem / boylam göz önüne alındığında (lat1, lon1)
ve (lat2, lon2)
kullanılarak, kilometre iki nokta arasındaki mesafeyi hesaplamak bir formül haversinüs formülü olarak aynı sonucu vermektedir.
Giriş
lat1, lon1, lat2, lon2
Derece (açı) veya dört tamsayı değerϕ1, λ1, ϕ2, λ2
radyan cinsinden dört ondalık değer .
Çıktı
İki nokta arasındaki kilometre cinsinden uzaklık (herhangi bir hassasiyetle veya yuvarlanmış tamsayı ile ondalık).
Haversine formülü
nerede
r
kürenin yarıçapıdır (Ay'ın yarıçapının 1737 km olduğunu varsayın),ϕ1
radyan cinsinden nokta 1'in enlemiϕ2
radyan cinsinden nokta 2'nin enlemiλ1
radyan cinsinden nokta 1'in boylamıλ2
radyan cinsinden nokta 2'nin boylamıd
iki nokta arasındaki dairesel mesafedir
(kaynak: https://en.wikipedia.org/wiki/Haversine_formula )
Diğer olası formüller
d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1))
@miles 'formülü .d = r * acos(cos(ϕ1 - ϕ2) + cos ϕ1 cos ϕ2 (cos(λ2 - λ1) - 1))
@Neil'in formülü .
Girdilerin derece ve çıktıların yuvarlatılmış tamsayı olduğu örnek
42, 9, 50, 2 --> 284
50, 2, 42, 9 --> 284
4, -2, -2, 1 --> 203
77, 8, 77, 8 --> 0
10, 2, 88, 9 --> 2365
kurallar
- Giriş ve çıkış herhangi bir uygun formatta verilebilir .
- Cevapta girişlerin derece veya radyan olup olmadığını belirtin .
- Geçersiz enlem / boylam değerlerini işlemeye gerek yok
- Tam bir program veya bir işlev kabul edilebilir. Bir işlev varsa, çıktıyı yazdırmak yerine döndürebilirsiniz.
- Mümkünse, diğer kişilerin kodunuzu deneyebilmesi için lütfen bir çevrimiçi test ortamına bağlantı ekleyin!
- Standart boşluklar yasaktır.
- Bu kod golfüdür, bu nedenle tüm olağan golf kuralları geçerlidir ve en kısa kod (bayt cinsinden) kazanır.
d = r * acos( sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1) )
nerede olacaktırr = 1737