Просмотр полной версии : Угол между векторами со знаком.
Как получить угол между векторами со знаком? Т.е по правую руку, или по левую..
Добавлено через 41 минуту
Решил через определитель матрицы.
Сам угол получаю так: cos = (x1*x2 + y1*y2) / sqrt ((x1*x1 + y1*y1) * (x2*x2 + y2*y2))
Направление через знак определителя матрицы:
|x1 y1|
|x2 y2|
Если "минус", то по левую руку, если "плюс" то по правую...
Лучше через atan2, пример для мувиков на картинке внизу на AS2:
var delt_x1:Number = m1._x - m0._x ;
var delt_y1:Number = m0._y - m1._y ;
var delt_x2:Number = m2._x - m0._x ;
var delt_y2:Number = m0._y - m2._y ;
var angle1:Number = Math.atan2(delt_x1, delt_y1) * 180 / Math.PI ;
var angle2:Number = Math.atan2(delt_x2, delt_y2) * 180 / Math.PI ;
trace('angle1: ' + angle1);
trace('angle2: ' + angle2);
var angleDelta:Number = angle1 - angle2;
trace('Угол со знаком м/у вектором (m0, m1) и (m0, m2): ' + angleDelta);
Ну или компактнее:
var angleDelta:Number = (Math.atan2(m1._x - m0._x, m0._y - m1._y) - Math.atan2(m2._x - m0._x, m0._y - m2._y)) * 180 / Math.PI
trace('Угол со знаком м/у вектором (m0, m1) и (m0, m2): ' + angleDelta);
Взято положение мувиков, чтобы не брать цифры с потолка для примера.
Для угла м/у вектором (m0, m1) и (m0, m2) примера будет -70.7139673432521 градусов.
Правда, возможно я ошибся, тригоном. задачки давно решал. Тем не менее смотрите в сторону Math.atan2, эта функция дает знак угла.
Правда, возможно я ошибся, тригоном. задачки давно решал. Тем не менее смотрите в сторону Math.atan2, эта функция дает знак угла, да нет. проверил, все работает..
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.