Получение позиции щелчка на плоскости y = 0 - PullRequest
0 голосов
/ 27 декабря 2011

Я пытаюсь получить координаты, по которым пользователь нажимает на плоскости y = 0

Я делаю это, проецируя координаты мыши, чтобы получить координаты мира в ближней и дальней плоскостях, а затем использую линейную интерполяцию, чтобы найти координаты на плоскости, но это не дает мне правильные координаты.

Мой код отказа от проекции:

    int viewport[4];
    double modelview[16];
    double projection[16];

    glGetIntegerv(GL_VIEWPORT, viewport);
    glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
    glGetDoublev(GL_PROJECTION_MATRIX, projection);

    double x, y, z;
    //x_ and y_ are the x and y coordinates of the mouse
    gluUnProject(x_, viewport[3] - y_, 0.0, modelview, projection, viewport, &x, &y, &z);
    near.x = x;
    near.y = y;
    near.z = z;
    gluUnProject(x_, viewport[3] - y_, 100.0, modelview, projection, viewport, &x, &y, &z);
    far.x = x;
    far.y = y;
    far.z = z;

    float t = -near.y / (far.y - near.y);
    target_.y = 0.0f;
    target_.x = near.x - t * (far.x - near.x);
    target_.z = near.z - t * (far.z - near.z);

    std::cout << target_ << std::endl;

но это всегда выводит: x: значение между + -1, которое, кажется, коррелирует с позицией щелчка, только что нормализованной, хотя я нигде не нормализую у: 0 z: -2

который я не могу понять

Редактировать

Извините, ошибка была в том, что я делал непроекции перед моими преобразованиями, которые вы не можете понять из приведенного выше кода. Я решил это сейчас.

1 Ответ

0 голосов
/ 28 декабря 2011

Извините, ошибка была в том, что я делал непроекции перед моими преобразованиями, которые вы не можете понять из приведенного выше кода.

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