2013-07-14 3 views
1

У меня возникли проблемы с преобразованием координат пикселей с мыши на трехмерную усечку. Я использую код, похожий на glProject() на OGL ES 1.1. Я попытался использовать glUnProject(), но я не мог заставить вектор работать, и я знаю, что есть более простой способ сделать это. Я надеялся, что смогу сравнить трехмерные и 2D-координаты и понять это, но мне это не удалось. Так вот что я знаю:преобразование Ortho в сборку усечения

  1. Я использую 3D Vertex от полигона, который в настоящее время: выбрал

    -1.0,1.0,0.0

  2. Тогда я преобразовать его в пикселях координаты с glProject():

    140,0, 259,0, 0,0

  3. я затем использовать пиксель координаты мыши:

    140,0, 220,0, 0,0

  4. Это часть я не могу понять:

    -1,0, -1,0, 0,0

Я получил # 3 координаты от координаты # 4, но то, что я хочу сделать, - это противоположность, которая преобразует пиксели в 3D.

Все, что мне действительно нужно знать, это то, как далеко мышь была перемещена в 3D-координатах из другой точки 3D.

ответ

0

Хорошо, что я получил приблизительный алгоритм работы. Способ, которым я работал, был:

glFrustum (ax, bx, ay, by, az, bz);

Я использовал отношение ax и az, умноженное на длину z, чтобы найти длину tx и ty сторон треугольника. Затем я использовал координаты пикселей, чтобы найти x и y. Я не уверен, что gluUnProject() лучше, но тот, который я использовал, намного меньше и легче понять.

Смежные вопросы