Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вращение через кватернионы (XNA), Переход между сисетмами координат 
V
    Опции темы
Bonus
Дата 3.3.2008, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



есть родительский объект с кватернионом вращения:

parentObj.rotation = new Quaternion.Identity;

есть дочерний объект с двумя кватернионами, описывающими его вращение в глобальной системе координат, и в системе координат его родителя:

childObj.rotation = new Quaternion.Identity;

childObj.globalRotation = parentObj.rotation * childObj.rotation;

Вопрос: как вычислить кватернион childObj.rotation, если известны parentObj.rotation и childObj.globalRotation?

Т.е. зная кватернион вращения дочернего объекта в глобальной системе координат и кватернион вращения родительского объекта нужно вычислить кватернион вращения дочернего объекта в системе координат родительского объекта.
PM MAIL   Вверх
mr.DUDA
Дата 3.3.2008, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Скомбинировать глобальный кватернион вращения чилда с инвертированным глобальным кватернионом вращения родителя. Получится разница, которая и есть локальное вращение чилда в пространстве родителя.


--------------------
user posted image
PM MAIL WWW   Вверх
Bonus
Дата 3.3.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



вот это дает не правильный результат:

childObj.rotation = chilObj.globalRotation * Quaternion.Inverse(parentObj.globalRotation);

потому что после этого получается что childObj.globalRotation не равен parentObj.globalRotation * childObj.rotation.

А мне нужно:

childObj.globalRotation = parentObj.globalRotation * childObj.rotation;

childObj.rotation = chilObj.globalRotation * ???;

нужно сделать так, чтобы вращением чилда можно было управлять через оба свойства.

З.Ы. сорри если сложно объясняю...
PM MAIL   Вверх
Bonus
Дата 4.3.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



up


 ! 
arilou
нет абсолютно никакой необходимости бустить топик. когда у форумчан будет возможность ответить, они обязательно это сделают


Это сообщение отредактировал(а) arilou - 4.3.2008, 16:51
PM MAIL   Вверх
Bonus
Дата 5.3.2008, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



Блиииин. Надо было всего лишь местами поменять:

childObj.rotation = Quaternion.Inverse(parentObj.globalRotation) * chilObj.globalRotation;

и все заработало...

З.Ы. сори за нетерпеливость.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.