Как найти угол между двумя векторами на холсте? - PullRequest
0 голосов
/ 15 мая 2019

Мне нужно найти угол между двумя векторами на моем холсте.Ниже я привел несколько примеров: enter image description here

enter image description here

Не могли бы вы порекомендовать мне формулу?У меня проблемы со школьной математикой:)

Ответы [ 2 ]

1 голос
/ 15 мая 2019

По сути, вам нужно сделать точку, соединяющую два ваших вектора, началом координат, где x = 0 и y = 0.

Посмотрите на эту картинку:

Теперь мы можем сказать, что значения x и y точек A , B и C являются:

  • A = 0 | 0
  • B = 0 | -6
  • C = 5 | 2

Для вычисления арктангенсаоба мы можем использовать функцию Math.atan2 () .Обратите внимание, что первый параметр для atan2 должен быть значением y.

var firstAngle = Math.atan2(-6, 0);
var secondAngle = Math.atan2(2, 5);

и получить их разницу путем вычитания

var angle = secondAngle - firstAngle;

. Это вернет значение в радианах, которое вы можете преобразовать вградусов, как это:

angle = angle * 180 / Math.PI;
1 голос
/ 15 мая 2019

Сначала вам нужно нормализовать два вектора.

Как только это будет сделано, вы можете сделать

angle = arcos(v1•v2)

, где "angle" - это нужный уголчтобы найти, "arcos" является обратной функцией косинуса, а "•" является оператором точечного произведения

Будьте осторожны, это вернет только относительный и необработанный угол.Вы не сможете узнать, какой вектор находится слева, а какой - справа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...