Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];

Вниз

OpenGL вращение сцены   Найти похожие ветки 

 
DFT   (2008-07-02 18:31) [0]

Здравствуйте!
Подскажите пожалуйста.
Вопрос на тему OpenGL.
Как с помощью курсора мыши (то есть двух определяемых координат), вращать объемную сцену по трем осям, как это сделано в многих CAD-программах?


 
han_malign ©   (2008-07-04 15:07) [1]

http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D1%8F


 
DFT   (2008-07-07 17:54) [2]

Наконец-то решил проблему.

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

Вот найденный мной пример на С++:

void CDEMOView::OnMouseMove(UINT nFlags, CPoint point)
{
          if ( button_is_down && point != m_point )
   {
              double x = point.x - m_point.x;
             double y = point.y - m_point.y;
              if ( nFlags & MK_LBUTTON )
       {
           double t = sqrt ( x*x + y*y );
           rotate ( t, y/t, x/t, 0. );
       }
       else
              if ( nFlags & MK_RBUTTON && sy > 0 )
       {
           double t = 2./sy;
           move ( x*t, -y*t, 0. );
       }
       m_point = point;
   }
          CView::OnMouseMove(nFlags, point);
}

void CDEMOView::rotate ( double a, double x, double y, double z )
{
   glMatrixMode ( GL_MODELVIEW );
   double data[16];
   glGetDoublev ( GL_MODELVIEW_MATRIX, data );
   glLoadIdentity ();
   glRotated ( a, x, y, z );
   glMultMatrixd ( data );
   Invalidate(TRUE);
}

Всем спасибо за помощь!



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.003 c
2-1305020114
werewolf2
2011-05-10 13:35
2011.08.21
работа с элементом списка


15-1304368197
Юрий
2011-05-03 00:29
2011.08.21
С днем рождения ! 3 мая 2011 вторник


8-1215009117
DFT
2008-07-02 18:31
2011.08.21
OpenGL вращение сцены


8-1215281172
Дмитрий Белькевич
2008-07-05 22:06
2011.08.21
Фильтры деинтерлейса.


2-1304867719
delphi
2011-05-08 19:15
2011.08.21
Процесс копирования





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский