2016-08-07 1 views
-1

Эй, у меня возникает проблема с векторной математикой, которую мне нужно решить, чтобы заставить мой код работать. То, что я пытаюсь сделать это:Как вычислить вектор для перемещения в направлении на основе центральной точки начала

Допустим, у нас есть три объекта:

  • Объект А является центральным объектом
  • объект B находится в нескольких метрах от А на 45 градусов от А-х положение
  • Объект C также в нескольких метрах от а, но на угол 90 градусов из положения а в

немного, как это:

B 
AC 

Теперь мне нужно получить координатную точку вектора в 10 метрах от A, которую оба B и C переместят, когда активируется A. Таким образом, когда я активирую A, B продолжит движение по 45 градусам к текущему полю POS + newPos, а C будет двигаться вдоль угла 90 градусов к currentPos + newPos. Все это должно основываться на позиции A. Объекты должны отойти от центрального положения A.

Векторная математика - это то, с чем я не очень хорошо знаком, и я немного изощряюсь здесь, чтобы понять, как получить новую позицию для B и C на основе их текущего угла к позиции A и A, поэтому подумал, что я попросит вас о помощи более осведомленных людей.

Не могли бы вы написать какие-либо ответы прямолинейным образом, чтобы я мог легко преобразовать идею в код.

Спасибо!

ответ

0

Я следую за вашей картиной, которую я бы назвал углом нулевой степени от позиции А. для C. Предположим, мы называем ваше местоположение A (0,0).

Похоже, что в вашем случае вы можете добавить (10,0) к текущему месту C. Для B вы можете (5sqrt (2), 5sqrt (2)). В более общем плане, чтобы переместить n единиц под углом theta (измерение в радианах в большинстве языков), добавьте n (cos (theta), синус (theta)).

Я использую этот подход, потому что вы сказали, что угол был известен, и А был центром нашей вселенной, и все относительно этого. Если бы это было не так, то подход, который рассматривал бы B-A и C-A в качестве векторов и принимал их размеры, а затем добавил правильное количество их, может быть вызван вместо этого.