atan2 () с использованием двух векторов - PullRequest
0 голосов
/ 06 мая 2020

Ниже приведен пример того, как мы можем найти угол во всех четырех квадрантах, используя функцию atan2.

#include <stdio.h>       
#include <math.h>       

#define PI 3.14159265

int main ()
{
  double x, y, result;
  x = -10.0;
  y = -10.0;
  result = atan2 (y,x);
  printf ("The arc tangent for (x=%f, y=%f) is %f rad\n", x, y, result );
  return 0;
}

enter image description here

Вышеупомянутый случай применим, когда мы знаем значения x и y, чтобы найти квадрант. Что, если мы знаем вектор и используем его, чтобы найти угол?

Например, мы знаем два вектора. Есть ли какой-либо пример функции, которая будет принимать два вектора, работает аналогично: atan2 (y_value,x_value);

1 Ответ

1 голос
/ 06 мая 2020

Чтобы найти угол между векторами в 2D, а именно угол, необходимый для поворота первого вектора, чтобы сделать его коллинеарным со вторым:

angle = atan2(cross(a, b), dot(a, b))

где cross и dot относятся к перекрестному произведению и скалярное произведение векторов. В компонентах:

angle = atan2(a.x * b.y - a.y * b.x, a.x * b.x + a.y * b.y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...