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

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

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; просмотров: 781. Нарушение авторских прав; Мы поможем в написании вашей работы!




Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


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

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

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Педагогическая структура процесса социализации Характеризуя социализацию как педагогический процессе, следует рассмотреть ее основные компоненты: цель, содержание, средства, функции субъекта и объекта...

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

Типовые ситуационные задачи. Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт. ст. Влияние психоэмоциональных факторов отсутствует. Колебаний АД практически нет. Головной боли нет. Нормализовать...

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