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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
По умолчанию Матрица переноса

Создаю контроллер к 3д объекту и не могу найти оптимального решения.
Направление объекта по осям х и у задаётся по координатам мыши х и у соответственно.
Сам поворот осуществляется через
Код AS3:
matrix.prependRotation(angleX, Vector3D.X_AXIS); 
matrix.prependRotation(angleY, Vector3D.Y_AXIS);
далее необходимо передвинуть объект по его направлению. По моей логике необходимо вектор направления умножить на скорость и это произведение суммировать с координатами "на данный момент". Как я понял про метод appendTranslation у Matrix3D, он просто добавляет указанные числа к координатам объекта. Получается если некоторые координаты будут отрицательные а он подвинет объект на положительные числа, то объект сдвинется не по вектору направления объекта... надеюсь не очень запутанно изъясняюсь?
Получается необходимо вытащить из матрицы вектор направления (decompose?), его множить на скорость и двигать объект. На мой взгляд идеальное решение в этом случае, чтобы вектор направления всегда был по длине равен единице, тогда при умножении на скорость, координаты просто принимали бы нужный знак.
пытался это осуществить, но на практике получился расход от 1.6 до 0.4
Подскажите нормальное решение.

P.S. как правильно из матрицы вытянуть вектор направления объекта?


Последний раз редактировалось willis83; 28.01.2012 в 22:11.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:04.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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