Форум: "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