Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > opengl. по 2-м координатам узнать 3-ю


Автор: GolIy 26.8.2010, 11:32
привет.
opengl 3d. строю различные объекты с помощью функции glVertex3d. Для задания объекта я задаю координаты вершин, и объект строится связывая все заданные вершины. Вопрос такой - есть ли возможность узнать z-координату объекта зная x,y ? т.е. координаты вершин то я знаю, я же их задал для посторения, но мне нужно теперь узнать z координату например в центре, если смотреть сверху. Понятно что объекты могут быть разные, и одна часть может сверху налаживатся другой, тем самым для одних x, y может быть несколько z. но я строю объекты такие что у мя всегда для одних x,y будет только одна z координата. вот только как её узнать..

Автор: Rickert 26.8.2010, 18:53
Не понял сути проблемы. У вас есть список x,y,z координат вершин: в чём проблема пройти по ним и найти необходимую?

Автор: Amp 27.8.2010, 10:57
Цитата(Rickert @  26.8.2010,  18:53 Найти цитируемый пост)
Не понял сути проблемы. У вас есть список x,y,z координат вершин: в чём проблема пройти по ним и найти необходимую? 

Ему нужно узнать z координату любой точки полигона, построенного по заданным вершинами.

Вариант в лоб - связка gluUnProject и glReadPixels с параметром GL_DEPTH_COMPONENT.
Другой вариант - строить пересечение прямой, проходящей через {x, y}, с плоскостями (или еще чем-то, что может быть описано формулами) из которых состоит геометрия. Способ относительно прост, когда геометрия примитивна и ее мало. В противном случае выбрать подходящие под данные нужды фреймворки или физ. движки.

Автор: HackOn 27.8.2010, 20:37
Пересчитывать z координату по несколько раз в секунду не есть хорошо для производительности. 
Если Вам нужно часто узнавать z координату объекта, и вы ей никак не оперируете, то лучше просто "запомнить" ее или записывать в массив. Но для более-менее больших проектов, это, конечно же, не вариант.
У меня был случай, в программе я смотрел на 3D карту сверху, но чуть под наклоном. Искажение было невелико и я вообще не использовал Z координату, только x и y. Например, при выборе объектов. Работало.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)