OlegTar
@OlegTar
программист .NET, Javascript, Perl

Как вращать кубик вокруг фиксированных осей?

Здравствуйте.
Пишу проект на Си#, на OpenGL (библиотека opentk)
Итак, есть кубик, он должен вращаться мышкой влево/вправо, вверх/вниз.

Итак, вопрос:

Как сделать так, чтобы кубик вращался вокруг двух осей, которые находятся в плоскости параллельной экрану монитора?

Наведите хотя бы на мысль или на кейворды, по которым гуглить. Заранее спасибо.

Здесь я описываю, что я уже делал, советую почитать, перед тем, как мне давать совет
1) Команды вида

GL.Rotate(<угол наклона>, Vector3d.UnitY);
GL.Rotate(<угол наклона>, Vector3.UnitX);


Не подходят, так как в таком случае, если перевернёшь кубик вверх-тормашками, и попытаешься его вращать кубик влево-вправо, то движения кубика инвертируются — он будет вращаться вправо-влево.

2) Потом я решил вычислять оси динамически, но и тут неудача, кубик при вращении ведёт себя как-то не так, крутится не куда надо.
Долго объяснять из-за чего неудача, в двух словах из-за того, что вращение вокруг первой оси, потом вокруг второй не равносильно вращениям в другом порядке.

3) Потом я решил не вращать кубик, а менять положение камеры с помощью GL.LookAt.
Однако, и здесь неудача: кубик ни с того, ни с сего резко поворачивается на 180 градусов в определенных точках (хотя я выводил логи — граничных условий нет),
если повернуть кубик особым образом, то при движении мышки с зажатой кнопкой влево-вправо, кубик будет вращаться вокруг оси, перпендикулярной экрану монитора
  • Вопрос задан
  • 4034 просмотра
Пригласить эксперта
Ответы на вопрос 2
@GraD_Kh
Можете уточнить, что значит вращать вокруг двух осей? попеременно в смысле?
Ответ написан
stepanton
@stepanton
Как это сделать ответить не смогу, ибо сам сейчас столкнулся с такой же проблемой. Но скажу куда гуглить, а гуглить в сторону углов Эйлера и матриц поворотов.
Если разберетесь расскажите о результате.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы