Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вращение тела одновременно по двум осям, Движение вращающегося тела по окружности 
:(
    Опции темы
REDiez
Дата 7.7.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.9.2005

Репутация: нет
Всего: нет



Добрый день.

Задача заключается в следующем:
необходимо вращать цилиндр по окружности радиуса R=1, при этом сам цилиндр должен также вращаться вокруг своей собственной оси.
Как это сделать с помощью OpenGL?

Координаты центра цилиндра в глобальной системе координат (0,1,0).
Одновременное вращение по двум осям (glRotate(Angle,1,1,0)) к нужному результату, понятное дело не приводит.
Пока что получается либо вращение цилиндра по окружности без вращения цилиндра воруг собственной оси, либо наоборотsmile
Для упрощения можно считать, что цилиндр должен вращаться по окружности вокруг оси X, а собственная ось вращения цилиндра Y.)

Заранее благодарю за ответы.  

Это сообщение отредактировал(а) REDiez - 7.7.2006, 11:26
PM MAIL   Вверх
Alexeis
Дата 7.7.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(REDiez @  7.7.2006,  11:25 Найти цитируемый пост)
Одновременное вращение по двум осям (glRotate(Angle,1,1,0)) к нужному результату,

нужно просто дважды вызвать процедуру
Код

glRotate(Angle,1,0,0))
glRotate(Angle,0,1,0))

 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
REDiez
Дата 7.7.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.9.2005

Репутация: нет
Всего: нет



Так тоже не работает.) 
После glRotate(Angle,1,0,0)) будет новая ось Y.) А мне бы как-то старую сохранить.)  
PM MAIL   Вверх
Alexeis
Дата 7.7.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(REDiez @  7.7.2006,  13:05 Найти цитируемый пост)
 А мне бы как-то старую сохранит

Насколько я помню в OpenGl есть специальная функция для сохранния настроек. Воспользуйтесь glPushAttrib и glPopAttrib с параментами
GL_TRANSFORM_BIT или GL_VIEWPORT_BIT.
glPopAttrib - сохранит настройки перед движением
glPopAttrib - востановит их в нужный момет. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
REDiez
Дата 7.7.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.9.2005

Репутация: нет
Всего: нет



Если я правильно понимаю, то применительно к данному случаю glPushAttrib и glPopAttrib  мало чем отличаются от glPushMatrix или glPopMatrix.)
И не то не другое проблемы не решают.) 
PM MAIL   Вверх
Alexeis
Дата 7.7.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



А теперь понял! надо ось цилиндр сдвигать в начало координат, повернуть вокруг своей оси, затем вернуть его в начальное положнеие (когда он вращается вокруг внешней оси), затем повернуть вокруг внешней оси и далее повторяем первый и второй шаги по очереди. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
REDiez
Дата 7.7.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.9.2005

Репутация: нет
Всего: нет



Переводя ваши слова в программный код - это получается так:
glTranslate(-1,0,0);
glRotate(Angle,1,0,0); - поворот вокруг своей оси
glTranslate(1,0,0);
glRotate(Angle,0,1,0); - поворот вокруг внешней оси
glCallList (1);  - цилиндр представлен в виде списка

Подход то кажется правильный, но пока что еще не работает.) 
PM MAIL   Вверх
Alexeis
Дата 7.7.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



А почему сдвиг по оси x при вращениии вокруг глобальной оси положение цилиндра в пространсве меняется, а сдвиг в центр должен происходить при любом положении цилиндра, значит параметры
Цитата(REDiez @  7.7.2006,  15:22 Найти цитируемый пост)
glTranslate
 надо будет пересчитать для каждого момента времени.
 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
REDiez
Дата 7.7.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.9.2005

Репутация: нет
Всего: нет



Возможно и так. Но мне пока всеравно не понятно как это сделать.)
Надеюсь будут еще какие-нибудь варианты решения.) 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0920 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.