0 / 0 / 0
Регистрация: 20.12.2017
Сообщений: 19
1

Угол между векторами

27.01.2018, 11:23. Показов 2539. Ответов 4
Метки нет (Все метки)

Даны два вектора:
a=(x1,y1)
b=(x2,y2)
Написать функцию, которая высчитывает угол между векторами a и b.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2018, 11:23
Ответы с готовыми решениями:

Угол между векторами
Написать программу, которая высчитывает угол между векторами a и b a=(x1,y1) b=(x2,y2)

Заданы два вектора х = (x1, x2, x3, x4), y = (y1, y2, y3, y4). Определить угол a между векторами x и y по формуле
Заданы два вектора х = (x1, x2, x3, x4), y = (y1, y2, y3, y4). Определить угол a между векторами x...

Угол между двумя прямыми
День добрый. Мне нужно сделать относительно простую программу. Суть ее заключается в следующем: мне...

Найти угол между стрелками часов
Условие: Я попробовал что-то написать: #include <stdio.h> #include <math.h> int...

4
3543 / 2214 / 401
Регистрация: 09.09.2017
Сообщений: 9,208
27.01.2018, 12:02 2
Лучший ответ Сообщение было отмечено STAR1337 как решение

Решение

[a,b] = |a|*|b|*sin(a)
(a,b) = |a|*|b|*cos(a)
так что для двумерного случая
C
1
a = atan2( x1*y2-x2*y1, x1*x2+y1*y2 );
1
310 / 170 / 46
Регистрация: 18.10.2017
Сообщений: 1,638
27.01.2018, 21:25 3
COKPOWEHEU, Я не проверял саму формулу, т.к. давно этим не занимался, но результат по ней у меня не получился.
Предположим, что координаты в нормализованной форме, т.е. поделены на длину вектора:
C
1
sqrt(x1*x1+y1*y1)
просто так нагляднее. Тогда в частном случае для положительных углов
C
1
a=2*asin(0.5*sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)))
Добавлено через 7 минут
Т.е. я имел в виду, что координаты каждого вектора поделены на его длину.
0
3543 / 2214 / 401
Регистрация: 09.09.2017
Сообщений: 9,208
27.01.2018, 22:20 4
Цитата Сообщение от peter_irich Посмотреть сообщение
COKPOWEHEU, Я не проверял саму формулу, т.к. давно этим не занимался, но результат по ней у меня не получился.
Покажите входные данные, на которых не сработало.
Цитата Сообщение от peter_irich Посмотреть сообщение
Предположим, что координаты в нормализованной форме, т.е. поделены на длину вектора:
Для данной формулы это не нужно.
0
310 / 170 / 46
Регистрация: 18.10.2017
Сообщений: 1,638
27.01.2018, 23:06 5
Я понимаю, что для вашей формулы нормализация не нужна, но я давно этим не занимался и этих формул просто не помню.
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <math.h>
int main(){
double al,x1,x2,y1,y2,d3;       //,s1,s2,r12;
  d3=sqrt(3.0);x1=y2=0.5;x2=y1=0.5*d3;//s1=x1-x2;s2=y1-y2;r12=sqrt(s1*s1+s2*s2);
  al=0.5*sqrt(2.0-d3);
fprintf(stdout,"%13.5e%13.5e%13.5e%13.5e\n",d3,al,360.0*asin(al)/M_PI,
180.0*atan2(x1*y2-x2*y1,x1*x2+y1*y2)/M_PI);
return 0;}
Переменные в тексте программы: x1=y2=0.5, x2=y1=05.*sqrt(3). Должно получиться 30гр.
По вашей формуле всё получилось, только со знаком "-", я забыл поделить на M_PI.

Добавлено через 6 минут
Так что прошу прощения.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2018, 23:06
Помогаю со студенческими работами здесь

Найти площадь треуголььника две стороны которого равны a и b, а угол между ними
Задача: Найти площадь треуголььника две стороны которого равны a и b, а угол между ними y формула:...

Известны ориентированные углы между векторами: угол(АВ,АС)=120 и угол (АВ,АД)=-60. Определите угол (АС,АД)
Известны ориентированные углы между векторами: угол(АВ,АС)=120 и угол (АВ,АД)=-60. Определите угол...

Угол между лучами. Угол между векторами. Решение треугольника.
1. Найдите угол между лучом ОД и положительной полуосью OX , если Д(-2;2). 2. Решите треугольник...

Угол между векторами
2. Заданы векторы a (-1, 2, 0) и j (0, 1, 0). Вычислить: Cos (a^j). (Ответ: 2/√5).


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru