I would like to know if there is an equivalent Math.toRadians in kotlin.

I need to calculate distance between 2 locations on earth sphere.

Got this haversine formula from this gist

https://gist.github.com/jferrao/cb44d09da234698a7feee68ca895f491

``````internal class DistanceCalculator(private val lat: Double, private val lon: Double) {

companion object {
const val earthRadiusKm: Double = 6372.8
}

/**
* Haversine formula. Giving great-circle distances between two points on a sphere from their longitudes and latitudes.
* It is a special case of a more general formula in spherical trigonometry, the law of haversines, relating the
* sides and angles of spherical "triangles".
*
* https://rosettacode.org/wiki/Haversine_formula#Java
*
* @return Distance in kilometers
*/
fun haversine(destination: Geo): Double {
val dLat = Math.toRadians(destination.lat - this.lat);
val dLon = Math.toRadians(destination.lon - this.lon);

val a = Math.pow(Math.sin(dLat / 2), 2.toDouble()) + Math.pow(Math.sin(dLon / 2), 2.toDouble()) * Math.cos(originLat) * Math.cos(destinationLat);
val c = 2 * Math.asin(Math.sqrt(a));
}

}
``````

I need to use it without any java lib in an sdk from a kmm project.

Thanks for any help.

Solution

• This should do the trick(reverse as well)

``````import kotlin.math.PI

fun toRadians(deg: Double): Double = deg / 180.0 * PI