Я хочу получить переводы / повороты, как показано в следующем видео -
http://www.youtube.com/watch?v=92h0xuV4Yrg
Я знаю, что для независимого перевода и поворота типичный метод - сначала повернуть объект, а затем перевести.
Как показано здесь:
PushMatrix();
LoadIdentity();
Translate(posx,posy,posz); // Second, move the object to its final destination
Rotate(); // First, apply rotations (which rotate around object-origin
Draw();
PopMatrix();
Но мое требование - вращать объект вокруг мировой координаты и перемещать его с помощью мыши.
Как видно из видео,вращение происходит вокруг источника мира, а не вокруг объекта-источника. Это означает, что логика должна быть противоположна приведенной выше (сначала переведите, а затем выполните вращение)
PushMatrix();
LoadIdentity();
Rotate(); // Second, apply rotations (which rotate around world-origin)
Translate(posx,posy,posz); // First, move the object to its final destination
Draw();
PopMatrix();
Но окончательный перевод в видеовыполняется относительно конечной позиции после поворотов (что не совпадает со значениями posx, posy, posz, которыми я манипулирую с помощью мыши).
Как добиться такого рода переводов