2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему
 
 Угол между векторами
Сообщение06.03.2011, 14:34 


27/08/10
32
Здравствуйте!

Опять вопрос из практики любительского мат. программирования :)
Мне необходимо вычислить угол между двумя векторами с тем, чтобы составить матрицу поворота.

Проблема вот в чем: вычисление через формулу скалярного произведение дает только косинус угла - результат, понятно, бывает от 0 до 180 градусов. Мне же важен порядок векторов - в результате поворота первый вектор должен перейти во второй, и никак не наоборот - даже если угол между вторым и первым 30 градусов, а между первым и вторым - 330.

Я же истово желаю, чтобы в результате применения некоторой волшебной формулы я понял, что угол именно 330, а не 30 градусов.

Поворот подразумевается против часовой стрелки в декартовой прямоугольной системе координат.
Все происходит исключительно на плоскости.

Вполне допускаю, что я туп как пробка или не помню каких-то очевидных вещей - тем не менее, прошу Вашей помощи)

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 14:38 


19/05/10

3940
Россия
трехмерное пространство или двумерное?

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 14:39 


27/08/10
32
Двумерное :)

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 14:41 
Заслуженный участник
Аватара пользователя


11/04/08
2748
Физтех
Повороты чувствует векторное произведение. Пользуясь им и скалярным можно полностью всю информацию о любых углах между ними получить.

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 14:42 


29/09/06
4552
The DEADman в сообщении #419887 писал(а):
Все происходит исключительно на плоскости.
А Вы на секундочку выйдите за пределы плоскости, возьмите там у них векторное произведение, и ныряйте обратно на плоскость.
Имея и косинус, и синус можно горы свернуть.

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 14:43 
Заслуженный участник
Аватара пользователя


11/04/08
2748
Физтех
Алексей К.

(Оффтоп)

Физтехи чувствуют и думают одинаково :-)

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 14:51 


19/05/10

3940
Россия
Умножьте матрицу
$\left[ \begin {array}{cc} \cos \left( \alpha \right) &-\sin \left( 
\alpha \right) \\ \noalign{\medskip}\sin \left( \alpha \right) &\cos
 \left( \alpha \right) \end {array} \right] 
$
на ваш вектор и он повернется (против часовой стрелки) на угол $\alpha$

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 14:54 


27/08/10
32
Итак, я представляю вектора в виде a(x_1, y_1, 1) и b(x_2, y_2, 1).

Если я правильно вычисляю, результирующий вектор будет равен: c(y_1-y_2, x_2-x_1, x_1*y_2 - y_1*x_2). Вроде?

А дальше-то как?
В формуле для векторного произведения разве не модуль синуса стоит?..
(или это ненадежный источник в Интернет)

mihailm, спасибо! Но матрицей поворота я орудовать как раз умею; тут проблема немножко в другом, как мне синус посчитать)

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 16:23 


29/09/06
4552
The DEADman в сообщении #419898 писал(а):
В формуле для векторного произведения разве не модуль синуса стоит?..
Конечно, нет. Модуль может кто-нибудь впарить, когда пишет длину результирующего вектора.
$$\angle=\mathrm{atan}(x_1y_2-x_2y_1,\:x_1y_1+x_2y_2).$$Или atan2, смотртя на чём Вы программируете.

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 17:05 


27/08/10
32
Да, действительно, это была формула модуля.
А как по векторному произведению узнать собственно синус угла, без всяких абсолютных значений?..

Алексей К., спасибо! А что за выражение в формуле?

Вот еще наткнулся на некую вещь, с которой ни разу ни в школе, ни в университете отчего-то не сталкивался:

http://ru.wikipedia.org/wiki/%D0%9F%D1% ... 0%B8%D0%B5

Не проще ли взять синус угла оттуда заместо векторного произведения?

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 17:48 


29/09/06
4552
Это то же самое. Зэт-компоненту векторного произведения векторов на плоскости переназвали псевдоскалярным произведением. Чтоб не ходить за ней в 3D:
Алексей К. в сообщении #419892 писал(а):
А Вы на секундочку выйдите за пределы плоскости, возьмите там у них векторное произведение...

Чем Вам не нравится формула, что я чуть выше написал?

 Профиль  
                  
 
 Re: Угол между векторами
Сообщение06.03.2011, 17:55 


27/08/10
32
Да, я разобрался, спасибо!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group