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

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

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




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


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


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


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

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

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