Здравствуйте Enderl, Вы писали:
E>Не как не могу сделать нормальное управление камерой.. Точнее получается, но не так как хочется. E>Крутутить камерой c помощью мыши без ограничений... пытался с помощью glRotatef E>Но он вращает несовсем так. (и по ручному крутил)
E>ниже вункции, надо: чтобы первый вызов повернул камеру а второй вызов функции уже основывался на предыдущем повороте, а то получается, что когда вектор направлен на ось z (с помощью первой функцией) то он должен подниматься, вверх(вниз), а он вращяется вогруд своей ось.
E>glRotatef(x,0,1,0); E>glRotatef(y,0,0,1);
Если я правильно понял вопрос, возможно поможет такой подход:
1) берётся вектор смещения мыши V(dx, dy, 0) = V0(x0, y0, 0) — V1(x1, y1, 0)
V0 — текущее положение, V1 — предыдущее
2) Затем он векторно умножается не вектор проектирования (скажем, P(0, 0, -1))
R = V*P — векторное (не скалярное) произведение
3) Теперь поворачиваем камеру: Rot(R, a) — вокруг вектора R на угол a,
причём угол a может выбираться произвольно — главное, он должен находиться в прямой зависимости от величины сдвига мыши dx, dy. Его можно взять, например, таким: a = |V|*pi/540.0 (|V| — длиина вектора V)
Вот, вобщем-то, и всё...