Dividir un vector en dos vectores alineados con el eje

No estoy familiarizado con los términos matemáticos, así que haré todo lo posible para explicar este problema. Además, no sé si esta es una pregunta de programación o matemática. Supongo que ambos...

Estoy haciendo un juego de plataformas en 2D. Supongamos que tenemos un terreno representado por un segmento de línea. La parte "superior" de este segmento de línea es el "colisionador de tierra", cuando el personaje lo golpea, este colisionador de tierra devuelve un vector de dirección que apunta hacia arriba, perpendicular a la dirección de la línea.

Digamos que esta dirección hacia arriba es el eje "y" de mi espacio, y la dirección hacia el suelo es el eje "x" de mi espacio.

Dado un punto arbitrario dentro de este espacio, necesito encontrar los dos vectores en el eje y y el eje x que representan este punto.

Espero haber sido lo suficientemente claro.

Vectores alineados del eje

Para ayudar a entender la imagen:

  1. El suelo es la línea azul.
  2. El suelo especifica la dirección de los ejes X (rosa) e Y (rojo).
  3. Dado un punto arbitrario (verde)...
  4. Tenemos un vector (amarillo) que lo representa
  5. La pregunta es, ¿cuáles son los valores de los vectores alineados en y (en blanco) y alineados en x (también en blanco), que son relativos al vector amarillo?

Gracias de antemano.

Dices que dado un punto arbitrario, conoces el vector que lo representa. Ahora, normalmente esto significa que tienes las dos coordenadas en el plano 2D a y b ; juntos forman el vector ( a , b ) desde el origen hasta este punto. En ese caso podemos descomponer el vector en sus X y y valor de la siguiente manera: ( a , b ) = a ( 1 , 0 ) + b ( 0 , 1 ) .
Gracias por tu respuesta, pero esta solución solo funciona si el suelo está alineado con el eje x.

Respuestas (1)

Lo que estás buscando son proyecciones . Por ejemplo, suponga que el vector de tierra apunta en la dirección de tu = ( 3 , 4 ) , y que el punto arbitrario que queremos proyectar está en v = ( 1 , 5 ) . Entonces, la parte alineada con el suelo de este punto arbitrario (es decir, su proyección sobre el vector suelo) está dada por:

proyecto tu ( v ) = v tu tu tu tu = ( 1 , 5 ) ( 3 , 4 ) ( 3 , 4 ) ( 3 , 4 ) tu = 3 + 20 9 + dieciséis tu = 23 25 ( 3 , 4 ) = ( 69 25 , 92 25 ) = ( 2.76 , 3.68 )

Tenga en cuenta que el producto escalar de dos 2 vectores dimensionales a = ( X 1 , y 1 ) y b = ( X 2 , y 2 ) es dado por:

a b = X 1 X 2 + y 1 y 2

Hombre, ¡eso funcionó bastante bien! Muchas gracias.