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

Условие:

Найти угол в градусах, минутах и секундах между векторами [latex]\overrightarrow{a}=(a_x,a_y,a_z)[/latex] и [latex]\overrightarrow{b}=(b_x,b_y,b_z)[/latex].

Входные данные:

Координаты векторов [latex] \overrightarrow{a}[/latex] и [latex]\overrightarrow{b}[/latex].

Выходные данные:

Угол в градусах, минутах и секундах.

Тесты

Входные данные Выходные данные
1 1 1 4 20 31 12 53° 1′ 23″
2 1 61 12 1 11 1 7° 17′ 33″
3 1 0 0 0 0 1 90° 0′ 0″
4 -1 0 1 -2 2 1 44° 59′ 59″

Код

 

Решение:

Для решения данной задачи необходимо найти косинус между векторами, а после перевести радианы в градусы.
Косинус между векторами найдем по формуле [latex] \cos \alpha = \frac{\vec{a}\vec{b}}{\left|\vec{a} \right|\left|\vec{b} \right|}[/latex] .
Скалярное произведение найдем по формуле [latex] \left|\vec{a} \right| \left|\vec{b} \right|={a}_{x}{b}_{x}+{a}_{y}{b}_{y}+{a}_{z}{b}_{z} [/latex] .
Модуль вектора найдем по формуле [latex] \left|\vec{a} \right| = \sqrt{ {{a}_{x}}^{2}+{{a}_{y}}^{2}+{{a}_{z}}^{2} } [/latex] ; [latex] \left|\vec{b} \right| = \sqrt{ {{b}_{x}}^{2}+{{b}_{y}}^{2}+{{b}_{z}}^{2} } [/latex] .
Затем переведем радианы в градусы по формуле [latex] \frac{180}{ \arccos (-1.0) \arccos (\cos \alpha )} [/latex] .
[latex] \arccos (-1.0) [/latex] это число [latex] \pi [/latex] .

Ссылки:

Решение задачи на ideone.com: http://ideone.com/Gx3IVU
Косинус угла между векторами: http://ru.onlinemschool.com/math/library/vector/angl/
Скалярное произведение векторов: http://ru.onlinemschool.com/math/library/vector/multiply/
Модуль вектора: http://ru.onlinemschool.com/math/library/vector/length/
Перевод радиан в градусы: http://www.cleverstudents.ru/trigonometry/radian_and_degree_conversion.html
Условие задачи: https://cpp.mazurok.com/mtasks/

Related Images:

2 thoughts on “ML 27. Угол между векторами

  1. — Сделайте правильные отступы в коде.
    — Для задания числа [latex]\pi[/latex] нужно использовать константу M_PI.
    — Не используйте, пожалуйста, символы кириллицы в постоянных ссылках.
    — Нет ни одной причины использовать циклы.

  2. — Посмотрите, как оформлены все ссылки на этой страничке или других сайтах в сети. Обычно стараются не публиковать явно динные бессмысленные URL (адрес перехода). Этот текст не несет смысловой нагрузки и читатель не должен его видеть. Гиперссылки нужно вставлять прямо в текст в тех местах где впервые встречается, например, скалярное произведение. Но не выносить все ссылки в канец страницы.
    — Зачем давать ссылку на условие задачи если Вы его приводите полностью? Тем более, что условие находится на нашем сайте на странице с сотней других задач. Для кого эта ссылка?
    — Чтобы напечатать строку, содержащую двойные кавычки, нужно экранировать этот символ наклонной чертой — \». Выглядит странновато — «\»», но второй способ ещё «страньше» 😉
    — В коде на ideone отступов нет вообще.
    — Как влияет первая строка на работу Вашей программы?

    И самое главное. Программа, приведенная в тексте статьи, не компилируется. По ссылке на IDEOne открывается совсем другая программа, которая компилируется, но работает неверно. С её точки зрения угол между двумя противонаправленными векторами (0,0,1) и (0,0,-1) составляет 180° 42′ 49».
    Почему Вы отправляете это мне на проверку?

Добавить комментарий