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

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

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Р,где...

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

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

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

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