Сети

12.2.1. Сети Самый общий способ визуализации функции видаДдг,^)- отображение поверхности. Процедура построения поверхности, которую мы рассматривали в главе 10, начиналась с определения множества опорных точек. Если значения функции известны только в отдельных точках (т.е. отсутствует аналитическое описание функции), то в нашем распоряжении массив выборок или результатов измерения: В топографии и картографии линии уровня принято называть горизонталями. - Прим. ред.

12.2. Поля превышений и линии уровня Можно предполагать, что точки выборки расположены с постоянным шагом на плоскости лгу: х, = х0+/'Адг, i = 0,...,N, y,=yo+j&y, j = 0,..., M, где Àr и Ду - шаг между выборками в направлении х и у. Если известен аналитический вид функции/, то значения в массиве формируются вычислением значения функции в точках х„у. Но гораздо чаще приходится иметь дело с результатами измерений.

Проще всего сформировать поверхности, воспользовавшись форматом описания сети, состоящей либо из треугольных, либо из четырехугольных ячеек. Взяв четыре выборки г(/, ;, г,+1 /+1 и г()/+1, расположенные в соседних элементах массива, можно сформировать либо одну четырехугольную, либо две треугольные ячейки сети. Таким образом, массив данных позволяет сформировать сеть, состоящую либо из NM четырехугольных ячеек, либо из 2NM треугольных. Разработать соответствующую программу в системе OpenGL не представляет большого труда. На рис. 12.3 показана сеть из четырехугольных ячеек, построенная по данным топографической съемки участка острова Гонолулу в группе Гавайских островов.

Сеть, построенная по данным топографической съемки участка острова Гонолулу

Рис. 12.3. Сеть, построенная по данным топографической съемки участка острова Гонолулу Остановимся на некоторых аспектах формирования и модификации такой сети в OpenGL-программе. Во-первых, если использовать для формирования сети весь набор имеющихся данных, то в ней окажется очень много ячеек маленького размера. В результате плотность линий в изображении будет очень большой, что может привести к появлению муара. Следовательно, нужно каким-то образом отобрать из всего массива некоторый подмассив. Очевидное решение - брать не все выборки подряд, а, например, каждую k-ю, задавшись определенным значением к. Другой вариант - выполнить усреднение соседних выборок на какой-то базе усреднения. В любом случае должен быть сформирован массив меньшей размерности, что соответственно уменьшит размерность сети. Во-вторых, при формировании изображения, показанного на рис. 12.3, черным цветом вычерчивались линии контура ячеек, а белым цветом заливались многоугольники ячеек. Линии контура ячеек позволяют передать в изображении характер рельефа, а вычерчивать и заливать многоугольники нужно для того, чтобы удалить невидимые наблюдателю участки сети. Можно было бы воспользоваться алгоритмом удаления невидимых поверхностей, который имеется в составе системных средств OpenGL. Но в данном случае этого делать не стоит, поскольку данные, описывающие рельеф, уже упорядочены. Если формировать ячейки сети в порядке от более удаленных к ближним, то при заливке многоугольников, ближе расположенных к наблюдателю, автоматически удалятся контуры закрываемых ими ранее сформированных ячеек, которые таким образом становятся невидимыми для наблюдателя. Если в графической системе стандартные средства удаления невидимых поверхностей реализованы про-


⇐ Предыдущая| |Следующая ⇒