Musím implementovať harvesine vzdialenosť v mojom java kód.
Našiel som tento úryvok v jazyku Javascript a potrebujem ho previesť na Javu.
- Ako môžem previesť zemepisnú šírku a dĺžku na radiány v jazyku Java?
- Math.sin chce dvojku v jazyku Java. Mal by som odovzdať predtým konvertovanú hodnotu v radiánoch alebo nie?
- Math.sin a Math.cos vrátiť dlho. Mal by som deklarovať ako dlho a odovzdať ho Math.sqrt alebo ho previesť na dvojnásobok?
Vďaka
dLat = (lat2-lat1).toRad();
dLon = (lng2-lng1).toRad();
a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLon/2) * Math.sin(dLon/2);
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
d = R * c;
return d;
odpovede:
7 pre odpoveď č. 1Po prvé, mali by ste si prečítať javadoc. sin (double) trvá a double
v parametri, ktorý je uhol v radiánoch, ako je uvedené v dokumentácii. Môžete tiež nájsť na prepojenej stránke, že sqrt trvá dvojnásobne.
Potom by ste mali vedieť, že java môže vykonávaťnedeštruktívna konverzia automaticky. Takže ak metóda trvá dvojnásobne a máte dlhú dobu, nebude to problém, pretože neexistuje žiadna strata v konverzii dlhá -> dvojnásobok.
Pre konverziu radiánov nájdete " toRadians metóda v triede Math.
5 pre odpoveď № 2
- Ak máte hodnotu v stupňoch, proste
degrees * Math.PI / 180
, Alebo lepšie využiť funkciu navrhol coobird v komentári (nevedel o tom). - Áno, môžete v ňom odovzdať akúkoľvek dvojitú hodnotu. (Akékoľvek číslo.)
- Nie, obe funkcie sa vykonávajú
double
parameter. check dokumenty.
2 pre odpoveď č. 3
Toto riešenie som našiel tu: