Вращайте куб с помощью щелчка мышью и перетаскивания мышью (Opengl) - PullRequest
1 голос
/ 01 августа 2020

Я хочу перемещать трехмерный куб, удерживая нажатой левую кнопку мыши + перетаскивание мышью. удерживание левой кнопки мыши и перетаскивание мыши должно позволить пользователю перемещаться по орбите по горизонтали и вертикали. В настоящее время мой код позволяет отображать трехмерный куб, но он не вращается вокруг объекта, когда я щелкаю и перетаскиваю. Вот мой код:

void UMouseClick(int button, int state, int x, int y)
{
    if((button == GLUT_LEFT_BUTTON) && (state == GLUT_DOWN)){
         cout << "Left Mouse Button Clicked!" << endl;
         currentClickLeft = true; // this is my global variable
}

if((button == GLUT_LEFT_BUTTON) && (state == GLUT_UP)){
         cout << "Left Mouse Button Released!" << endl;
         currentClickLeft = false;
}

void UMouseMove(int x, int y)
{
   if(currentClickLeft == true && mouseDtected) {
        lastMouseX = x;
        lastMouseY = y;
        mouseDetected = false;

        mouseXOffset = x - lastMouseX;
        mouseYOffset = lastMouseY - y;

        lastMouseX = x;
        lastMouseY = y;

        mouseXOffset *= sensitivity;
        mouseYOffset *= sensitivity;

        yaw += mouseXOffset;
        pitch += mouseYOffset;

        front.x = 10.0f * cos(yaw);
        front.y = 10.0f * sin(pitch);
        front.z = sin(yaw) * cos(pitch) * 10.f;
}

В чем именно заключается проблема?

Кроме того, я новичок в этом языке программирования, поэтому, если я что-то не предоставил, дайте мне знать.

1 Ответ

1 голос
/ 02 августа 2020

Мне было бы безопаснее иметь:

if ((currentClickLeft == true)&&(mouseDtected))

Но настоящая проблема в том, что у вас есть:

lastMouseX = x;
lastMouseY = y;

раньше:

mouseXOffset = x - lastMouseX;
mouseYOffset = lastMouseY - y;

Итак, ваш смещения всегда нулевые !!! После этого вы сделаете это снова, поэтому я уверен, что вы просто забыли его удалить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...