Actualmente estoy construyendo un barco autónomo para el que defino una trayectoria a seguir. Este camino consiste en múltiples puntos de paso que están conectados por líneas rectas.
No es necesario que el barco esté exactamente en la línea entre los waypoints. La mayor parte del tiempo estará en aguas abiertas, así que no hay problema si se desvía un par de metros. Lo que quiero hacer es que el barco apunte a un punto que esté 50 metros por delante en la línea de rumbo. Así que en la imagen de arriba he añadido un círculo alrededor del barco con un radio de 50 metros. Eso significa que quiero que el barco apunte al punto Z. Tengo las siguientes coordenadas:
Latitude Longitude
------------------------------------------
Boat: 52.42373335663094, 5.075082778930664;
X: 52.42315721146138, 5.074074268341065
Y: 52.42389341072507, 5.0763434171676645
Z: ???
Estoy un poco desconcertado sobre cómo podría encontrar las coordenadas de este punto Z. Primero asumí que la tierra era una trama plana (supuse que a esta escala el redondeo de la tierra no es tan importante) y traté de usar mi mejor aritmética de Pitágoras, pero no puedo resolverlo. Y mucho menos cuando también tengo que tener en cuenta el redondeo de la tierra.
Para complicarlo aún más, el círculo de 50 metros se cruza dos veces con el trazado del camino, así que ¿cómo puedo saber cuál de las dos intersecciones es la más lejana del camino? Primero pensé en medir simplemente la distancia hasta el punto X (el inicio del camino), pero si viaja en círculo hasta el inicio entonces el barco empezará a hacer atajos directamente desde el inicio hasta el final.
¿Alguien tiene una idea de cómo puedo manejar estos problemas? ¿Cómo obtengo las intersecciones con el eje de carreteras y cómo puedo averiguar cuál de las dos intersecciones es la más lejana en el eje de carreteras? ¡Todos los consejos son bienvenidos!