¿Cómo determino la rotación necesaria de un objeto para que otro objeto dependiente se desplace donde lo necesito?

Tengo dos vectores, "V" y "W", que están unidos entre sí. Si "V" gira, "W" se desplazará de forma angular alrededor de "V". "W" tiene una rotación fija, que he puesto a 45º.

He hecho una representación aproximada de esto en MS Paint, como puedes ver aquí:Representación vectorial aproximada

Ahora, mi objetivo final es hacer que "W" apunte a un punto específico, que puede estar en cualquier lugar en un espacio 2D, pero solo girando "V". Tenga en cuenta que solo puedo rotar "V", "W" tiene una rotación fija y la magnitud del vector entre ellos es siempre constante.

Entonces, si quiero que "W" apunte, por ejemplo, a "A", ¿qué rotación debo aplicar a "V" y/o qué posición final quiero para "W" para lograr esto?

Para contexto opcional: "V" y "W" son Game Objects en Unity. "W" es un hijo de "V" y tiene una posición relativa fija hacia él. Solo puedo manipular la rotación de "V", lo que hace que "W" se desplace en consecuencia. "W" debería poder emitir Raycast hacia cualquiera de los puntos objetivos ("A", "B", "C" o "D") y devolver un golpe de manera efectiva.

He buscado temas similares, pero no parecen abordar este problema específico (si lo hacen, están más allá de mi comprensión).

Por favor aclara un par de cosas. ¿Estás diciendo que V y W están unidos en la cola? ¿Estás diciendo que W tiene un ángulo constante con respecto a V? ¿Solo te importa la dirección de estos vectores o la magnitud tiene alguna importancia? Dices "la magnitud del vector entre ellos es siempre constante", ¿quieres decir "vector" o quieres decir que el ángulo es constante? Esta no es estrictamente una pregunta de física, pero puedo ver que está buscando las matemáticas subyacentes y si puede aclarar lo que está tratando de hacer, estaré encantado de ayudarlo.
De hecho, borra eso, creo que ahora entiendo tu problema. Déjame escribir una respuesta...
Tacha eso de nuevo. Dijiste "W tiene una rotación fija". ¿Fijos con respecto a qué? con respecto a V? Con respecto a los ejes? ¿O con respecto al vector que une V y W? Estas son todas preguntas muy diferentes.
@JeneralJames, gracias por sus respuestas. Podría estar expresándome incorrectamente, y por lo tanto me disculpo por eso. Para visualizar mejor este problema, imagina una torreta que tiene un solo cañón a la derecha (y un poco más al frente). La diferencia de altura es inexistente, por lo que solo se tienen en cuenta 2 dimensiones. Solo puedo rotar la base de la torreta, pero quiero que el arma pueda apuntar a un objetivo determinado, porque si es la torreta la que mira al objetivo, el arma fallaría. El arma está fijada a la torreta y no puede girar por sí sola (siempre estará orientada en la misma dirección relativa desde la torreta).
@EnzoFerber Sí, exactamente. La posición "global" del arma cambia a medida que gira la torreta (similar a cómo se desplazaría una bola encadenada si el objeto al que está encadenada girara), pero eso es todo.

Respuestas (1)

Esta pregunta se publicaría mejor en http://gamedev.stackexchange.com , ya que no parece estar haciendo una pregunta sobre física, sino sobre cómo lograr algo en un motor de juego.

Suponiendo que conoce el desplazamiento angular de W en relación con V, y tiene una forma de determinar el desplazamiento de V a partir de un rayo emitido entre su origen y el punto deseado. En ese punto, ahora puede determinar el desplazamiento de W en relación con el rayo emitido a A desde el origen de V, para que pueda encontrar la cantidad que necesita para girar V para apuntar W en A.

  O w , a = O v , a ± O w , v
Donde O representa el ángulo entre el vector V y un vector emitido entre el punto V y el punto de destino.

Ethan, gracias por esta sugerencia. Si bien es cierto que quiero lograr esto en un motor de juego, me faltan las matemáticas subyacentes, que no están relacionadas con ningún motor o lenguaje de código. Traté de usar conceptos abstractos para representar este problema, pero agregué el contexto por si acaso. Editar: olvidé mencionar, publicaré esta misma pregunta allí, según su sugerencia.
Muy bien, editaré mi respuesta para incluir algo, aunque eso probablemente sería más adecuado para math.stackexchange.com , ya que desea manipular un objeto teórico en lugar de querer saber cómo funciona la física del sistema.
Gracias por esta respuesta. Para determinar si entendí correctamente, usaré algunos números como ejemplo. "V" está en (0,0) sin rotación (0º), mientras que "W" está en (1,1) girada 45º. Entonces, el desplazamiento angular es de 45º, ¿correcto? Ahora, supongamos que quiero que "W" apunte a un objetivo A en (0,2). ¿Es el desplazamiento entre "V" y "A" de (0,2)? ¿Y entre "W" y "A" de (-1, 1)? En su ecuación, ¿Sería O(v,a) 0 y O(w,v) 45, por lo que debería rotar "W" 45º? Disculpen si no me exprese correctamente, y gracias por su paciencia.
Puede calcular el desplazamiento directamente desde W, aunque si desea realizar todas las operaciones en V, eso podría introducir errores más adelante. Y sí, en ese caso, el desplazamiento entre W y A es de 45 grados en el sentido contrario a las agujas del reloj, por lo que querrá girar V en el sentido contrario a las agujas del reloj 45 grados.
Creo que esto podría estar más allá de lo que puedo comprender. Intenté hacer lo que sugeriste (rotar 45 grados en sentido contrario a las agujas del reloj), pero terminé con algo como esto : creo que lo dejaré así por el momento. Respondiste con una ecuación precisa, así que la marcaré como la respuesta. ¡Muchas gracias por su tiempo y paciencia!
En ese caso, el problema está en a qué ató el vector W, que definitivamente es una pregunta para gamedev y espero que alguien pueda ayudarlo a solucionar ese problema.