![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
stat007 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: нет Всего: -4 |
Код приведённый ниже рисует каркасный КУБ синего цвета. Нужно доделать, что бы при нажатии на клавиатуре на стрелку влево, куб бы поворачивался влево, а при нажатии на правую стрелку, куб поворачивался вправо ...
Помогите это сделать.
|
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
За движение объекта отвечает видовая матрица. Собственно сам объект обычно не трогают (исходные координаты), меняют его отображение в пространстве.
меняя x, y, z, angleX, angleY, angleZ будем двигать и поворачивать объект соответственно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
Rickert |
|
||||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
Только когда мы говорим о конкретном объекте, а не о всём мире, нам необходимо снаала запомнить текущую матрицу вида:
Затем совершить поворот объекта, а потом вернуть видовую матрицу:
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
||||
|
|||||
stat007 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: нет Всего: -4 |
Alexeis,
А как это применить к данной программе?? |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
stat007, значит сначала сохраняем видовую матрицу glPushMatrix(), устанавливаем нужное преобразование (см мой код), затем передаем координаты модели (glVertex*), потом восстанавливаем видовую матрицу (glPopMatrix()) как сказал Rickert. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
stat007 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: нет Всего: -4 |
Alexeis,
Вот постарался сделать как говорилось ранее в функцию ChangeSize, но почему то не хочет всё-равно работать программа.. Так же попробовал создать ещё одну функцию keyboord, но пока результата от этого нет! Что делать????? Помогите кто понимает, как правильно дописать программу, что бы она заработала........ И как указать в функции keyboord в case вместо символов 'd' и 'a', как указать левую и правую стрелку на клавиатуре?????
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Отрисовкой очередного кадра занимается функция void RanderScene() , поскольку она вызывается циклически. Очевидно преобразования должны применяться к тому что мы рисуем.
Функция void keyboord вызывается при наступлении события от клавиатуры, без относительно того что сейчас твориться на экране, очевидно что в ней нужно менять некоторые переменные, влияющие на положение куба. void RanderScene() должна использовать эти переменные, чтобы нарисовать актуальное положение объекта, т.е. использовать в своем теле переменные которые меняются в void keyboord. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
stat007 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: нет Всего: -4 |
Это всё теория, я уже голову сломал - мучаюсь с этим, КАК ДОДЕЛАТЬ?????????
|
|||
|
||||
stat007 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: нет Всего: -4 |
Сам доделал.........
![]() Тема закрыта |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Правильно! Зато научился. Написали бы все за тебя, ничего бы не понял ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |