Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.02.2011, 08:48
cpu вне форума Посмотреть профиль Отправить личное сообщение для cpu Найти все сообщения от cpu
  № 1  
Ответить с цитированием
cpu

Регистрация: Mar 2010
Сообщений: 223
По умолчанию Угол между векторами со знаком. [решено]

Как получить угол между векторами со знаком? Т.е по правую руку, или по левую..

Добавлено через 41 минуту
Решил через определитель матрицы.
Сам угол получаю так:
Код:
cos = (x1*x2 + y1*y2) / sqrt ((x1*x1 + y1*y1) * (x2*x2 + y2*y2))
Направление через знак определителя матрицы:
Код:
|x1 y1|
|x2 y2|
Если "минус", то по левую руку, если "плюс" то по правую...


Последний раз редактировалось cpu; 13.02.2011 в 09:31.
Старый 13.02.2011, 10:23
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Лучше через atan2, пример для мувиков на картинке внизу на AS2:
Код AS1/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);
Ну или компактнее:
Код AS1/AS2:
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, эта функция дает знак угла.
Изображения
 
__________________
Идите первым!


Последний раз редактировалось mooncar; 13.02.2011 в 10:32.
Старый 13.02.2011, 10:31
cpu вне форума Посмотреть профиль Отправить личное сообщение для cpu Найти все сообщения от cpu
  № 3  
Ответить с цитированием
cpu

Регистрация: Mar 2010
Сообщений: 223
Цитата:
Правда, возможно я ошибся, тригоном. задачки давно решал. Тем не менее смотрите в сторону Math.atan2, эта функция дает знак угла
, да нет. проверил, все работает..


Последний раз редактировалось cpu; 13.02.2011 в 12:40.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:20.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.