Aquí hay otra forma de avanzar que se basa en álgebra vectorial directa. Deja que $\vec r_1$ y $\vec r_2$ sean vectores con magnitudes $r_1$ y $r_2$, respectivamente, y con ángulos $\phi_1$ y $\phi_2$, respectivamente.
Deja que $\vec r$ sea el vector con magnitud $r$ y ángulo $\phi$ que denota la suma de $\vec r_1$ y $\vec r_2$. Así,
$$\vec r=\vec r_1+\vec r_2 \tag 1$$
Desde la definición del producto interno tenemos
$$\vec r_1\cdot \vec r_2=r_1r_2\cos(\phi_2-\phi_1) \tag 2$$
y
$$\vec r_1\cdot \vec r=r_1r\cos(\phi-\phi_1)\tag 3$$
Usando $(1)$ y $(2)$, encontramos que $r^2$ puede escribirse
$$\begin{align} r^2&=\vec r\cdot \vec r\\\\ &=(\vec r_1+\vec r_2)\cdot (\vec r_1+\vec r_2)\\\\ &=\vec r_1\cdot \vec r_1+\vec r_2\cdot \vec r_2+2\vec r_1\cdot \vec r_2\\\\ &r_1^2+r_2^2+2r_1r_2\cos (\phi_2-\phi_1) \end{align}$$
y así $r$ está dado por
$$\bbox[5px,border:2px solid #C0A000]{r=\sqrt{r_1^2+r_2^2+2r_1r_2\cos (\phi_2-\phi_1)}}\tag 4$$
Usando $(1)$, $(3)$, y $(4)$, obtenemos
$$\begin{align} \vec r_1\cdot \vec r&=r_1r\cos(\phi-\phi_1)\\\\ &=\vec r_1\cdot (\vec r_1+\vec r_2)\\\\ &=r_1^2+r_1r_2\cos(\phi_1-\phi_2)\\\\ \end{align}$$
donde resolver para $\cos (\phi-\phi_1)$ revela
$$\cos(\phi-\phi_1)=\frac{r_1+r_2\cos(\phi_2-\phi_1)}{\sqrt{r_1^2+r_2^2+2r_1r_2\cos (\phi_2-\phi_1)}}\tag 5$$
Fácilmente podemos obtener la expresión para $\sin(\phi-\phi_1)$ aplicando el producto cruz
$$\hat z\cdot(\vec r_1 \times \vec r)=\hat z\cdot(\vec r_1 \times \vec r_2)$$
lo cual después de un aritmética directa resulta en
$$\sin(\phi-\phi_1)=\frac{r_2\sin(\phi_2-\phi_1)}{\sqrt{r_1^2+r_2^2+2r_1r_2\cos(\phi_2-\phi_1)}} \tag 6$$
Dividiendo $(5)$ por $(6)$ e invirtiendo muestra que
$$\bbox[5px,border:2px solid #C0A000]{\phi =\phi_1+\operatorname{arctan2}\left(r_2\sin(\phi_2-\phi_1),r_1+r_2\cos(\phi_2-\phi_1)\right)} \tag 7$$
donde la función $\operatorname{arctan2}(y,x)$ está descrita en este artículo.
Las ecuaciones $(4)$ y $(7)$ proporcionan las coordenadas polares de $\vec r$ estrictamente en términos de las coordenadas polares de $\vec r_1$ y $\vec r_2$. Y el desarrollo de $(4)$, $(5)$ y $(6)$ no apeló a coordenadas cartesianas.
NOTA:
En un desarrollo paralelo, podemos expresar la suma de dos números complejos $z_1=r_1e^{i\phi_1}$ y $z_2=r_1e^{i\phi_2}$ en términos de sus magnitudes y argumentos.
Primero, recordemos que el producto interno de dos números complejos es dado por
$$\begin{align} \langle z_1,z_2 \rangle &=z_1 \bar z_2\\\\ &=r_1r_2e^{i(\phi_1-\phi_2)} \end{align}$$
donde $\bar z$ denota el conjugado complejo de $z$.
Luego, dejamos $z=re^{i\phi}=z_1+z_2$ ser la suma de $z_1$ y $z_2$. La magnitud de $z$ está dada por
$$\begin{align} r&=\sqrt{\langle z,z \rangle}\\\\ &=\sqrt{\langle z_1+z_2,z_1+z_2 \rangle}\\\\ &=\sqrt{r_1^2+r_2^2+r_1r_2\left(e^{i(\phi_1-\phi_2)}+e^{-i(\phi_1-\phi_2)}\right)}\\\\ &=\sqrt{r_1^2+r_2^2+2r_1r_2\cos (\phi_2-\phi_1)} \end{align}$$
Por lo tanto, tenemos que
$$\bbox[5px,border:2px solid #C0A000]{r=\sqrt{r_1^2+r_2^2+2r_1r_2\cos (\phi_2-\phi_1)}} \tag 8$$
Finalmente, encontramos el argumento de $z$ tomando el producto interno de $z$ y $z_1$. Para eso, escribimos
$$\begin{align} \langle z,z_1 \rangle &=rr_1e^{i(\phi-\phi_1)}\\\\ &=\langle z_1+z_2,z_1 \rangle \\\\ &=r_1^2+r_1 r_2 e^{i(\phi_2-\phi_1)} \end{align}$$
lo cual revela que
$$e^{i(\phi-\phi_1)}=\frac{r_1+r_2e^{i(\phi_2-\phi_1)}}{\sqrt{r_1^2+r_2^2+2r_1r_2\cos (\phi_2-\phi_1)}} \tag 9$$
entonces al invertir tenemos
$$\bbox[5px,border:2px solid #C0A000]{\phi =\phi_1+\operatorname{arctan2}\left(r_2\sin(\phi_2-\phi_1),r_1+r_2\cos(\phi_2-\phi_1)\right)} $$
Las ecuaciones $(8)$ y $(9)$ proporcionan las coordenadas polares de $z$ estrictamente en términos de las coordenadas polares de $z_1$ y $z_2$. Nuevamente, este desarrollo no apeló a coordenadas cartesianas.
1 votos
Puedes hacerlo resolviendo triángulos (más específicamente, la mitad del paralelogramo de la regla del paralelogramo se puede resolver como SAS) si realmente lo deseas. Pero en el caso general, convertir a coordenadas cartesianas es la forma fácil de hacerlo. (¡Especialmente una vez que te mueves a 3D!)
0 votos
@HenningMakholm Encontré esta pregunta bastante interesante, en realidad, especialmente cuando parecía que (en 2D) podría ser más eficiente computacionalmente no usar la conversión estándar a coordenadas cartesianas al sumar vectores en forma polar. Es posible que quiera ejecutar algunas pruebas comparativas en algunos códigos con los que trabajo.
0 votos
Básicamente no. Encontrarás fórmulas alternativas que se ven diferentes, pero en realidad se reducen a conversiones de ida y vuelta, posiblemente a través de identidades trigonométricas. El costo computacional global será similar. ¿Por qué esta pregunta?
1 votos
Estoy usando polares para el movimiento del sprite, y deseo cambiar trayectorias simplemente añadiendo vectores. Estaba pensando que tal vez había una forma de lograr menos sobrecarga, evitando la conversión de ida y vuelta.
1 votos
@YvesDaoust Creo que lo que estamos descubriendo (ver respuesta de Henning Makholm o de Dr. MV) es que efectivamente puedes sumar los vectores sin convertir nada a coordenadas cartesianas, ni siquiera de forma implícita. Puedes hacerlo con solo un coseno, una raíz cuadrada y un arcocoseno, donde el coseno podría considerarse como una única coordenada cartesiana en un sistema rotado, y eso es lo más cercano que estos métodos llegan a realizar alguna conversión cartesiana. Dependiendo de la aplicación, esto podría ser difícil de superar para la conversión cartesiana incluso con una amortización inteligente de los costos.
0 votos
@DavidK: Las cosas son como dije. Tus fórmulas son las obtenidas por la adición en coordenadas cartesianas, a la aplicación de identidades trigonométricas. Consulta mi respuesta. Estoy de acuerdo en que esta formulación es mucho más eficiente en términos de evaluación de funciones trigonométricas y debería preferirse.
0 votos
@YvesDaoust Su respuesta va en la línea de mi respuesta "híbrida", por lo que sí, efectivamente hay una conversión a coordenadas cartesianas (rotadas) allí. Incluso se podría argumentar que estas coordenadas cartesianas se pueden encontrar en mi primer método. Pero en los otros métodos que mencioné (no los míos), no veo ningún sistema de coordenadas en el que se calculen realmente los cuatro componentes (de dos vectores). Solo puedo encontrar como máximo tres, por lo que la conversión nunca se completa. Si puedes encontrar los cuatro componentes en una de esas respuestas, podría ser un comentario útil en la respuesta para explicar dónde se pueden encontrar.
0 votos
@DavidK: No intentaré discutir más.
0 votos
@YvesDaoust OK. Por lo que vale, gracias a tus argumentos (que consideré tenían mérito respecto a ambos de mis propios métodos "polares"), he revisado las afirmaciones que hice en mi propia respuesta.
0 votos
@lash Por favor, siéntase libre de votar y aceptar una respuesta según considere oportuno.