O
O
OlegTar2012-10-30 01:06:59
3D
OlegTar, 2012-10-30 01:06:59

How to rotate a cube around fixed axes?

Hello.
I am writing a project in C#, in OpenGL (opentk library)
So, there is a cube, it must be rotated with the mouse left / right, up / down.

So, the question is:

How to make the cube rotate around two axes that are in a plane parallel to the monitor screen ?

Point at least to a thought or to keywords for which to google. Thanks in advance.

Here I describe what I have already done, I advise you to read before giving me advice
1) View commands

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


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

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

3) Потом я решил не вращать кубик, а менять положение камеры с помощью GL.LookAt.
Однако, и здесь неудача: кубик ни с того, ни с сего резко поворачивается на 180 градусов в определенных точках (хотя я выводил логи — граничных условий нет),
если повернуть кубик особым образом, то при движении мышки с зажатой кнопкой влево-вправо, кубик будет вращаться вокруг оси, перпендикулярной экрану монитора

Answer the question

In order to leave comments, you need to log in

2 answer(s)
G
GraD_Kh, 2012-10-30
@GraD_Kh

Can you clarify what it means to rotate around two axes? alternately mean?

S
stepanton, 2013-04-08
@stepanton

I can’t answer how to do this, because I myself am now faced with the same problem. But I’ll tell you where to google, and google in the direction of Euler angles and rotation matrices.
If you figure it out please tell me the result.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question