Студопедия — Gimbal lock
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Gimbal lock






Анализируя поведение куба при попытке его поворота вокруг обеих осей (X и Y) на углы большие, чем 90 градусов, вы, конечно обнаружили эффект (парадокс), который называется блокировкой шарнирного соединения (Gimbal lock).

Эффектом Gimbal lock называют потерю одной степени свободы шарнирного механизма, которая происходит, когда две из трех осей вращения совмещены. Мысленно поверните механизм на 90 градусов вокруг вертикальной оси (оси Y) и убедитесь, что два обода будут расположены в одной плоскости. Такое положение называют блокировкой шарнирного соединения (Gimbal lock), так как попытка повернуть оба совмещенных обода обречена на неудачу. Как говорится в статье (http://en.wikipedia.org/wiki/Gimbal_lock), термин lock (блокировка) неточен (misleading). На самом деле все три вращения (по отдельности) возможны даже в положении Gimbal lock. Все три шарнира (или оси — gimbals) могут свободно вращаться, но из-за того, что в рассматриваемом положении две оси расположены в одной плоскости, то эту плоскость (оба шарнира сразу) повернуть не удастся.

С точки зрения математики рассматриваемый эффект можно объяснить тем, что произведение матриц не коммутирует, а именно: произведение A·B не равно произведению B·A.

void OnPaint()

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode (GL_MODELVIEW);

glLoadIdentity ();

 

glTranslated(gdTransX, gdTransY, gdTransZ);

glRotated(gdAngleY, 0.,1.,0.);

glRotated(gdAngleX, 1.,0.,0.);

 

glCallList(1);

 

glutSwapBuffers();

}

Еще раз просмотрите порядок команд, определяющих матрицу моделирования. Команды со второй по шестую создают эту матрицу. Четырехмерные векторы (quaternions) будут умножаться на нее справа. Множество векторов — это команды glVertex3d, которые имеются в списке номер 1. Напомню, что вызов glCallList(1) проиграет список команд, среди которых главную роль играют команды вида glVertex3d(x, y, z). Эти команды задают векторы в 4-х мерном пространстве (четвертая координата по умолчанию равна 1). Итак. при каждой перерисовке все множество векторов будет по очереди умножено справа на матрицу моделирования.

¨ Команда glLoadIdentity создает единичную матрицу I и загружает ее в текущую матрицу моделирования (верхнюю в стеке из 32 матриц).

¨ Команда glTranslated(gdTransX, gdTransY, gdTransZ); умножает матрицу моделирования (в данный момент единичную) на матрицу сдвига T.

¨ Команда glRotated (gdAngleY, 0.,1.,0.); умножает матрицу моделирования (в данный момент I▪T) на матрицу вращения вокруг оси Y. Назовем эту матрицу Ry.

¨ Команда glRotated (gdAngleX, 1.,0.,0.); умножает матрицу моделирования (в данный момент I▪T▪Ry) на матрицу вращения вокруг оси X. Назовем эту матрицу Rx.

Напомню, что кубик составляется из 6 граней, каждая из которых является четырехугольником. Все 24 (24 = 6▪4) вектора вершин, из которых создаются примитивы (GL_QUADS), умножаются справа на результирующую матрицу моделирования, которая к этому времени равна I▪T▪Ry▪Rx.

Поиграйте с кубиком и постарайтесь запомнить его поведение при поворотах на углы, большие 90 градусов. Затем поменяйте порядок команд вращения так, чтобы матрица моделирования стала равной I▪T▪Rx▪Ry. Сравните поведение кубика при поворотах с тем, что было ранее. Теперь вы должны почувствовать, как влияет на результат перестановка матриц в матричном произведении.

Если вы переместите команду(ы) вращения в позицию до команды glTranslated, то кубик будет вращаться не вокруг своей оси, а вокруг центра сцены!







Дата добавления: 2015-10-19; просмотров: 680. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия