Разделение вектора на два вектора с выравниванием по осям

Я не знаком с математическими терминами, поэтому постараюсь объяснить этот вопрос. Кроме того, я не знаю, является ли это вопросом программирования или математическим. Я думаю, оба...

Я делаю 2D платформер. Предположим, у нас есть земля, представленная отрезком линии. «Верхняя» часть этого сегмента линии является «наземным коллайдером», когда персонаж сталкивается с ним, этот наземный коллайдер возвращает вектор направления, который указывает вверх, перпендикулярно направлению линии.

Предположим, что это направление вверх — это ось «y» моего пространства, а направление земли — это ось «x» моего пространства.

Учитывая произвольную точку внутри этого пространства, мне нужно найти два вектора на оси y и оси x, которые представляют эту точку.

Я надеюсь, что я был достаточно ясен.

Выровненные по оси векторы

Чтобы помочь понять картину:

  1. Земля - ​​синяя линия
  2. Земля определяет направление осей X (розовый) и Y (красный).
  3. Дана произвольная точка (зеленая)...
  4. У нас есть вектор (желтый), который представляет его
  5. Вопрос в том, каковы значения векторов, выровненных по оси y (белым цветом) и выровненных по оси x (также белого цвета), которые относятся к желтому вектору?

Заранее спасибо.

Вы говорите, что для произвольной точки известен вектор, который ее представляет. Теперь обычно это означает, что у вас есть две координаты в 2D-плоскости. а и б ; вместе они образуют вектор ( а , б ) от начала до этой точки. В этом случае мы можем разложить вектор на его Икс и у значение следующим образом: ( а , б ) "=" а * ( 1 , 0 ) + б * ( 0 , 1 ) .
Спасибо за ваш ответ, но это решение работает только в том случае, если земля выровнена по оси x.

Ответы (1)

То, что вы ищете, это прогнозы . Например, предположим, что вектор земли указывает в направлении ты "=" ( 3 , 4 ) , и что произвольная точка, которую мы хотим спроецировать, находится в в "=" ( 1 , 5 ) . Тогда часть этой произвольной точки, выровненная по земле (то есть ее проекция на вектор земли), определяется как:

проект ты ( в ) "=" в ты ты ты ты "=" ( 1 , 5 ) ( 3 , 4 ) ( 3 , 4 ) ( 3 , 4 ) ты "=" 3 + 20 9 + 16 ты "=" 23 25 ( 3 , 4 ) "=" ( 69 25 , 92 25 ) "=" ( 2,76 , 3,68 )

Обратите внимание, что скалярное произведение двух 2 -мерные векторы а "=" ( Икс 1 , у 1 ) и б "=" ( Икс 2 , у 2 ) дан кем-то:

а б "=" Икс 1 Икс 2 + у 1 у 2

Чувак, это сработало очень хорошо! Большое спасибо.