Usted tiene la elipse de la trayectoria de los planetas
$$
\left( \frac{x}{a} \right)^2 + \left( \frac{y}{b} \right)^2= 1
$$
(Nota: yo uso un sistema de coordenadas, donde el origen no está en la elipse).
Además tiene un punto de inicio de la $u_0 = (x_0, y_0)$ donde la línea recta de la nave de la trayectoria
$$
u = u_0 + v t \quad (*)
$$
se originan a partir de.
Una posible trayectoria del planeta en la elipse es
$$
(x, y) = (a \cos \omega t, b \sin \omega t) \quad (**)
$$
Una intersección en algún momento $t \ge 0$ va a llevar a la ecuación:
$$
(a \cos \omega t, b \sin \omega t) = (x_0 + v_x t, y_0 + v_y t)
$$
o
$$
(f(t), g(t)) = (x_0 + v_x t - \cos \omega t, y_0 + v_y t - b \sin \omega t) = (0, 0) = 0 \quad (***)
$$
Update:
Knowing now that the direction of $v$ es de un grado de libertad, se puede proceder.
$$
v = (v_x,v_y) = \lVert v\rVert (\cos(\phi)\sin(\phi))
$$
Tenemos de todo, junto a la modelo de la intersección problema en GeoGebra.
La información que determina que el problema de la instancia es
$$
x_0, y_0, a, b, \omega \lVert v\rVert \quad (P)
$$
las variables son
$$
\phi, t
$$
En la imagen de abajo del punto de $A$ es el lugar de inicio de la nave. $B$ es la posición de la nave en $t=1$.
El rayo verde de $A$ a través de $B$ es la trayectoria de $(*)$ de la nave.
La elipse de color rojo es la trayectoria del planeta $(**)$.
Los puntos de intersección de $(*)$$(**)$$C$$D$.
Punto de $S$ es la posición de la nave en el momento $t$, $P$ es la posición del planeta en el momento $t$.
En la versión interactiva (ver enlace más abajo), se puede juguetear con el $t$ regulador y el reloj de la nave y el planeta se mueven en sus trayectorias.
El objetivo es encontrar un valor de$\phi$, lo que llevará a una posición común de la nave y el planeta en algún momento $t\ge 0$.
La clave son las dos funciones de $(***)$, que se muestra como $f(x)$ (línea púrpura) y $g(x)$ (línea azul). En la versión interactiva se nota que estas gráficas cambiar dependiendo de el valor de $\phi$. Para resolver el problema uno tiene que encontrar un valor de $\phi$ que hace que los gráficos de $f$ $g$ a que ambos tienen una raíz (valor cero) en algunos $x\ge 0$. En la imagen, te darás cuenta de dos de tales argumentos en torno a $x=1.5$$x=4$. Corresponden a las intersecciones $C$$D$. El actual tiempo $t$ de la escena es visualizada por la línea vertical negra en torno a $x=3.6$ (ver $t$ slider así), por lo que la nave y el planeta están poco antes del impacto en $D$, $t=4$.
En general, dependiendo del problema instancia $(P)$, no puede haber ninguna, una o dos intersecciones.
Para implementar este procedimiento en una máquina, tenemos que sustituir al hombre interactuar con el control deslizante para $\phi$, buscando simultánea raíces de $f$ $g$ por algunos caracteres numéricos, la solución de la ecuación de $(***)$, lo que
$$
F(\phi, t) =
\begin{pmatrix}
x_0 + \lVert v\rVert \cos(\phi) t - a \cos(\omega t) \\
y_0 + \lVert v\rVert \sin(\phi) t - b \sin(\omega t)
\end{pmatrix}
=
\begin{pmatrix}
0 \\
0
\end{pmatrix}
$$
Los métodos más comunes son la raíz de la constatación, por iteración Newton-Raphson o simple interseccion, o la reformulación como punto fijo de la iteración.
Si nos fijamos en el cuadrado de la distancia entre la nave y el planeta que conseguir que esto
$$
q(\phi, t)
= (x_0 + \lVert v\rVert \cos(\phi)t - a \cos(\omega t))^2 +
(y_0 + \lVert v\rVert \sin(\phi)t - b \sin(\omega t))^2
$$
Actualización:
Aquí hay un enlace a la versión interactiva: GeoGebra
Actualización:
Me explicó el método de Newton-Raphson iteración a mi amigo de Ruby (ver aquí),
y tocó un par de veces para mí.
irb> newton($u0, 1e-10, 20)
x0 = 1.0
y0 = 2.0
a = 2.0
b = 1.0
v = 1.0
w = 1.0
0: u=Vector[1.0, 2.0] f(u)=Vector[2.9128982848305642, 2.7736445427901115]
1: u=Vector[0.382829472675263, 0.3248271541942971] f(u)=Vector[-0.5940984322993181, 1.8021930994105337] d=1.8975913455808797
.
.
20: u=Vector[-94.18834695323662, 1959.9371619837884] f(u)=Vector[1955.6477996333003, 118.82040799198684] d=1959.2540941812401
maxstep = 20 reached, fail
=> nil
Así que no convergen, cuando empezamos a ver el $u_0 = (x_0, y_0) = (1,2)$ para una raíz. Por otro lado $u=(\phi, t)$, por lo que no fue una buena idea en el primer lugar.
irb> newton(Vector[-1,4], 1e-10, 20)
.
.
20: u=Vector[138.25481797929191, 454.49648517971787] f(u)=Vector[456.3793855184854, 12.384069736222514] d=456.5473783841737
maxstep = 20 reached, fail
Otro pierda.
irb> newton(Vector[-1,1], 1e-10, 20)
0: u=Vector[-1, 1] f(u)=Vector[0.45969769413186023, 0.317058030384207]
1: u=Vector[-1.5668891620557184, 1.0077918056648623] f(u)=Vector[-0.06352118626769587, 0.14656055765459897] d=0.15973396058722875
2: u=Vector[-1.664180141632932, 1.103100791097277] f(u)=Vector[-0.004523100381582101, 0.009095949944068482] d=0.010158481306123844
3: u=Vector[-1.67043452556281, 1.1098339180715397] f(u)=Vector[-1.951140039613275e-05, 4.57909054815131e-05] d=4.9774509241529196e-05
4: u=Vector[-1.670469710132332, 1.1098684183520295] f(u)=Vector[-6.100806526632141e-10, 1.337344013307984e-09] d=1.4699276896108456e-09
5: u=Vector[-1.6704697111186804, 1.1098684193565171] f(u)=Vector[-2.220446049250313e-16, 2.220446049250313e-16] d=3.1401849173675503e-16
d=3.1401849173675503e-16 < eps=1.0e-10, success
Sí, funcionó!
irb> newton(Vector[0,0], 1e-10, 20)
0: u=Vector[0, 0] f(u)=Vector[-1.0, 2.0]
Jacobian Matrix[[-0.0, 1.0], [0.0, -1.0]] is not regular at u=Vector[0, 0]!
=> nil
Ouch, otro mal comienzo. Esto recuerda, que uno tiene que venir para arriba con un buen valor de inicio, cerca de la sospecha de raíz, para que este método funcione.