/ / Java: otázky o radiánoch, Math.cos, Math.sin, double a long - java, matematika

Java: otázky o radiánoch, Math.cos, Math.sin, double and long - java, matematika

Musím implementovať harvesine vzdialenosť v mojom java kód.

Našiel som tento úryvok v jazyku Javascript a potrebujem ho previesť na Javu.

  1. Ako môžem previesť zemepisnú šírku a dĺžku na radiány v jazyku Java?
  2. Math.sin chce dvojku v jazyku Java. Mal by som odovzdať predtým konvertovanú hodnotu v radiánoch alebo nie?
  3. 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ď č. 1

Po 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
  1. 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).
  2. Áno, môžete v ňom odovzdať akúkoľvek dvojitú hodnotu. (Akékoľvek číslo.)
  3. Nie, obe funkcie sa vykonávajú double parameter. check dokumenty.

2 pre odpoveď č. 3

Toto riešenie som našiel tu:

Ako môžem zmerať vzdialenosť a vytvoriť ohraničenie založené na dvoch zemepisných šírkach + zemepisných dĺžkach v jazyku Java?