Estoy tratando de resolver el problema de la interpolación de un punto a una determinada distancia (en metros) entre otros dos lat/long puntos. (por ejemplo, P1 (50,10), P2(50.01, 9.990), quiero interploate P3 a una distancia "X" en la ruta más corta entre P1 y P2, suponiendo que X es siempre menor que la distancia entre P1 y P2)
Mientras que al principio parecía fácil no podía por la vida de mí encontrar una fácil implementación para esto (por ejemplo, un par de líneas de código y un par externos constantes, como para ser fácil de depurar y rápida de ejecutar).
Actualmente estoy usando la fórmula:
val x : Double = RadiusOfEarth*Math.toRadians(lon)*CentralLatCos
val y : Double = RadiusOfEarth*Math.toRadians(lat)
para proyecto en 2d cartesiano, me permito el punto en coordenadas cartesianas (ya que para eso hay un montón de fórmulas que he hecho entender y se puede utilizar). Y luego vuelvo a lon/lat utilizando:
val lat : Double = Math.toDegrees(y/RadiusOfEarth)
val lon : Double = Math.toDegrees( x/(RadiusOfEarth*CentralLatCos) )
Sin embargo, esto parece estar causando bastante grandes errores, así que estoy bastante seguro de que el camino que yo proyecto mi punto es errónea.
Me podrían ayudar por que sugiere y fácil algoritmo para proyecto de atrás/adelante de la esfera de cartesiano (que mantener el rumbo y distancia), o una forma de interpolar un punto intermedio entre otras dos lon/lat puntos a una distancia dada ?
También, favor de proporcionar algún material de origen que "demuestra" que la solución para que me puedas entender mejor, hice esta pregunta en algún otro lugar y algunas fórmulas sin un contexto donde arrojado a mí (que realmente no ayuda, me pueden encontrar un montón de quienes utilizan internet).
Tenga en cuenta, yo estoy tratando de hacer esto para los pequeños de la distancia, el mayor de la que podría ser algo que alrededor de las líneas de 2-3k metros (distancia entre los cables de los puntos originales sé). Así que realmente no tengo ninguna necesidad de una fórmula que se precisa en una escala global, si se tiene un pequeño error, pero es fácil de implementar estoy más que bien con ella.
(Nota: estoy trabajando en un mapa entre lat 45 - 55 y lon 7-13)