Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sweetbringer
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 14
#1

Программа для определения угла между векторами - C++

17.08.2014, 08:00. Просмотров 586. Ответов 4
Метки нет (Все метки)

Я нашел такую программу внизу,
немного исправил ее,
но не знаю, что watch означает
и зачем он вообще и все ли тут правильно.
Мне нужно определить угол между векторами
тот, что меньше. (Больше он 90 град или нет)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
void cross( CPlace *a, CPlace *b, CPlace *c)
{
    c->x=+a->y*b->z - b->y*a->z;
    c->y=-a->x*b->z + b->x*a->z;
    c->z=+a->x*b->y - b->x*a->y;
}
 
double dot( CPlace *a, CPlace *b)
{
  return (a->x*b->x + a->y*b->y + a->z*b->z);
}
 
double normLen(CPlace *a)
{
  return sqrt(dot(a,a));
}
 
void normalize( CPlace *a, CPlace *b)
{
  double l;
    l = 1.0/normLen(a);
    b->x=a->x*l;
    b->y=a->y*l;
    b->z=a->z*l;
}
 
double getAngleBetweenVectors( CPlace *a, CPlace *b, CPlace *watch)
{
  CPlace c;
    cross(a,b,&c);
  double f;
    f = atan2(normLen(&c), dot(a,b));
  if (dot(&c, watch) < 0)
    f = 2*PI - f;
  return f;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2014, 08:00     Программа для определения угла между векторами
Посмотрите здесь:

Косинус угла между векторами - C++
Помогите! Есть метод класса Anqle //считает величину косинуса угла между векторами template&lt;class Type&gt; double...

Написать программу нахождения угла между векторами и плоскостью. - C++
Дан вектор а=(a1, a2, a3) и плоскость, заданная уравнением Ах+Ву+Сz=0. Написать программу нахождения угла между векторами и плоскостью. ...

Вычисление косинуса угла между векторами, в чем ошибка - C++
Написать программу для вычисления косинуса угла между векторами, заданными своими координатами (скалярное произведение векторов делится...

Определения угла между отрезком и Осью Ох - C++
Всем доброго вечера дорогие форумчани:) Есть задание &quot;Описати клас, об’єкт; вивести дані об’єкта; обчислити і вивести довжину та кут з...

Программа для определения дня недели для произвольной даты - C++
Доброго времени суток! Суть программы состоит в том, что нужно определить день недели для даты dd/mm/gg, если известен день недели 1 января...

Как сделать шаблон функции для определения максимального расстояния между элементами - C++
Написать программу которая использует шаблон функции для определения максимального расстояния между элементами в наборе в 5 элементов....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexandr_1982
176 / 72 / 17
Регистрация: 04.11.2013
Сообщений: 382
Записей в блоге: 4
17.08.2014, 16:30     Программа для определения угла между векторами #2
C++
1
2
3
struct CPlace {
double x, y, z
};
watch это указатель на структуру с координатами

Скалярное произведение двух векторов a, b есть скаляр |a|*|b|* cos(R).
Взятие acos(R) дает угол.|a| это норма вектора a которая является квадратным корнем от выражения (x*x + y*y + z*z).
sweetbringer
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 14
17.08.2014, 21:11  [ТС]     Программа для определения угла между векторами #3
Надо написать пример вызова

getAngleBetweenVectors( CPlace *a, CPlace *b, CPlace *watch)

и результат и объяснить, что каждое число означает.
Я не понимаю откуда мне взять числа для этого watch.
И почему оно так называется? Это направление откуда смотрят?
В программе все правильно?
Я исправил ее только для более удобного вида и чтобы не было утечки памяти
из-за new, а правильно ли она считает я не знаю.
Можно ли более коротким путем определить сонаправленность векторов?
(Если вектора отличаются по направлению градусов на 5, например, то это сонаправлены)
Мне нужно узнать больше ли угол между векторами, чем 90 градусов.
Есть ли вообще более короткий способ превратить вектор силового поля в скаляр его длины
с плюсом или минусом по отношению к центру этого поля?
Предполагается, что силы в этом поле направлены только к центру или от центра.
_Ivana
3041 / 1728 / 150
Регистрация: 01.03.2013
Сообщений: 4,906
Записей в блоге: 2
17.08.2014, 21:27     Программа для определения угла между векторами #4
Цитата Сообщение от sweetbringer Посмотреть сообщение
Есть ли вообще более короткий способ превратить вектор силового поля в скаляр его длины
с плюсом или минусом по отношению к центру этого поля?
Предполагается, что силы в этом поле направлены только к центру или от центра.
Длину считаете тривиально по Пифагору, направление не менее тривиально по знакам координат вектора в зависимости от квадранта его расположения. Нарисуйте, распишите варианты и придумайте пару строк проверки условий. Если лениво, то можете просто составить таблицу знаков направления в зависимости от знаков координат вектора и квадранта.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2014, 22:45     Программа для определения угла между векторами
Еще ссылки по теме:

Программа для определения минорных аккордов от мажорных - C++
В общем решил для облегчения игры на гитаре написать программу для определения минорных аккордов от мажорных. Вдаваться в подробности не...

Программа для определения даты следующего дня - C++
помогите написать программу в для определения даты следующего дня

Программа для определения попадания точки с координатами (x, y) в мишень - C++
Здравствуйте, помогите пожалуйста в с++ создать алгоритм для определения попадания точки с координатами (x, y) в мишень. вот рисунок:

Найти угол между векторами - C++
У меня есть координаты конца вектора. Я вроде норм нахожу долготу вектора, но не как не пойму как мне найти угол между ним, что бы он...

Ограничение градуса между векторами - C++
Как сделать так чтобы градус между нормализованным и не нормализованным векторами был не меньше 90 градусов? Добавлено через 3 минуты ...

Определите косинус между векторами - C++
Сказали делать в Turbo C Даны координаты четырех точек в заданном порядке. Определите косинус между векторами, задаваемыми этими точками....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
sweetbringer
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 14
17.08.2014, 22:45  [ТС]     Программа для определения угла между векторами #5
Цитата Сообщение от _Ivana Посмотреть сообщение
Длину считаете тривиально по Пифагору, направление не менее тривиально по знакам координат вектора в зависимости от квадранта его расположения. Нарисуйте, распишите варианты и придумайте пару строк проверки условий. Если лениво, то можете просто составить таблицу знаков направления в зависимости от знаков координат вектора и квадранта.
Я это уже делал.
Yandex
Объявления
17.08.2014, 22:45     Программа для определения угла между векторами
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru