А.В. Скворцов
АЛГОРИТМЫ АНАЛИЗА ТРИАНГУЛЯЦИОННОМ МОДЕЛИ ПОВЕРХНОСТИ
Рассматривается базовый набор алгоритмов, используемый для анализа триангуляционных моделей поверхностей. Предлагаются новые алгоритмы построения изолиний и изоконтуров, расчета зон видимости, расчета объемов земляных работ. Описываются детали реализации.
В геоинформатике для представления различных поверхностей, в частности рельефа, применяется две основных модели [1]:
1) регулярная сеть точек;
2) триангуляционная модель, построенная по нерегулярной сети отсчетов.
Обе модели имеют свои преимущества и недостатки, и поэтому выбор применяемой модели зависит от конкретной ситуации. Так, алгоритмы построения и анализа триангуляционной модели, как правило, сложнее, чем для случая регулярной сети, но точность и качество получаемого решения выше. Сравнение различных методов представления поверхностей приведено в [2].
Настоящая работа посвящена алгоритмам анализа триангуляционной модели поверхностей. Рассматривается минимальный набор базовых алгоритмов, необходимый для работы с моделью, включая решение таких задач, как интерполяция высот, измерения площади по поверхности, построение изолиний, изоконтуров и изоклин, построение экспозиций склонов, расчет зон видимости, расчет земляных работ.
Некоторые из используемых в геоинформационной системе ГрафИн алгоритмов ранее были описаны в [3]. В настоящей работе описываются переработанные и новые ранее не описанные алгоритмы.
Все описываемые в работе алгоритмы реализованы автором в геоинформационной системе ГрафИн (ГИС ГрафИн)
[4, 5] и прошли апробирование на реальных задачах.
Структуры данных и базовые алгоритмы
В ГИС ГрафИн в качестве основы для представления триангуляционной модели поверхностей используется триангуляция Делоне с ограничениями [6-8]. Система поддерживает три типа исходных данных (рис. 1):
1. Исходные трехмерные точки (хі, уі, ).
2. Структурные линии в виде ломаной, заданной трехмерными или двумерными точками. Для двумерного случая структурная линия будет огибать поверхность, не меняя её форму. В трехмерном случае структурная линия будет существенно изменять поверхность.
3. Регионы, задаваемые в виде многоугольников. Регионы могут задавать внутреннюю или внешнюю границу триангуляции, определять горизонтальные плато или просто входить в триангуляцию в качестве структурных линий. Граница региона может задаваться в виде набора трехмерных координат, двумерных координат с общей высотой или в виде двумерных координат без задания высоты. В последнем случае форма поверхности не изменяется регионом, а только вносятся структурные ребра.
Во внутреннем представлении все координаты хранятся в виде целых чисел, что позволяет в явном виде контролировать возникающие при вычислениях ошибки округлений и избегать нарушений структуры триангуляции [8].
При необходимости получения значения высоты в некоторой точке треугольника используется линейная интерполяция по его вершинам.
Рис. 1. Триангуляционная модель рельефа в ГИС ГрафИн
Реализованный в системе алгоритм построения триангуляции поддерживает два режима работы. В первом случае на вход алгоритма подаются сразу все исходные точки, структурные линии и регионы. Во втором случае алгоритм можно вызывать многократно для добавления некоторых объектов в частично построенную триангуляцию.
Первый режим наиболее эффективен, так как алгоритм строит разнообразные структуры, эффективность функционирования которых зависит от всех исходных наборов точек сразу (например, выбор кэша [6] или выбор коэффициентов преобразования во внутреннее целочисленное представление координат объектов). Второй режим используется для выделения некоторой части триангуляции внутри некоторого региона.
С помощью второго режима легко решается задача определения площади по поверхности в пределах заданного региона. Для этого в исходную триангуляцию вставляется этот регион в качестве внешней границы, после чего суммируется площадь всех видимых треугольников модели.
Построение изолиний и изоконтуров
Одним из базовых алгоритмов анализа триангуляционных поверхностей, безусловно, является алгоритм построения изолиний и изоконтуров.
Определение. Изолиниями уровня И называют геометрическое место точек на поверхности, имеющих высоту И и имеющих в любой своей окрестности другие точки с меньшей высотой:
!н = {(х,У)|2(х,У) = И, Ve > 0:3(х',у'):
: |(х’,у’),(х,у)| <е, 2(х',у') < И }
Наличие в любой окрестности точки с меньшей высотой позволяет избежать неопределенностей, когда в триангуляции имеются горизонтальные треугольники (плато) с высотой И. В противном случае изолиния не будет представляться в виде линий.
Определение. Изоконтурами между уровнями к1 и к2 называют замыкание геометрического места точек на поверхности, имеющих высоту к е [к1 ,к2]:
1к = {(х,У)\к2 < 2(х,У) < кг\
В известных автору реализациях при расчете изолиний обычно избегают сложностей с таким определением изолинии, сдвигая высоту к на некоторое малое Д, а изоконтуры определяют как зоны между изолиниями. В разработанном же автором алгоритме все эти особенности учитываются.
Основная идея построения изолиний с учетом плато заданной высоты к заключается во временном удалении всех плато с уровнем к из триангуляции, после чего применяются обычные алгоритмы [3] построения кусочков изолиний, а затем они соединяются с границами удаленного плато.
При расчете изоконтуров между уровнями к\ и к2 также необходимо вначале временно удалить плато уровней к\ и к2 из триангуляции, построить две группы изолиний уровней к\ и к2, вычислить линии замыкания изолиний вдоль границы триангуляции, построить изоконтуры уровней ке(к1, к2), а в заключение объединить их с удаленными плато уровня к1.
Получаемые алгоритмы не очень отличаются по сложности реализации от ранее известных, однако позволяют более точно рассчитывать изолинии. На рис. 2 представлен результат построения изолиний и изоконтуров по модели, приведенной на рис. 1.
Рис. 2. Результат построения изоконтуров
Имеющиеся алгоритмы построения изолиний и изоконтуров могут быть использованы для решения и некоторых смежных задач, например для построения изоклин. Для этого достаточно перейти к поверхности уклонов, рассчитав в каждом узле триангуляции средний угол наклона треугольников вокруг каждого узла. Пример выполненного расчета приведен на рис. 3.
Построение зон видимости
В задаче построения зон видимости по заданному положению наблюдателя в пространстве требуется определить, какие участки поверхности ему видны, а какие нет. В ряде случаев эту задачу можно решать приближенно, например переходя к растровому представлению, однако часто требуются более точные результаты расчетов.
Рис. 3. Расчет территории с уклоном больше 5°
Для решения данной задачи можно использовать некоторые методы удаления невидимых линий, применяемых в машинной графике, например алгоритмы 2-буфера и плавающего горизонта.
Данную задачу иногда решают в упрощенном варианте, строя только линии видимости, которые представляют собой лучи, исходящие из точки видимости в разные стороны и разбитые на части по принципу видимости. Данная задача решается значительно проще, чем полный случай. Для этого вначале строится профиль поверхности вдоль этого луча, а потом методом плавающего горизонта формируются его видимые и невидимые части.
Для решения полной задачи в ГИС ГрафИн используется точный алгоритм, основанный на идее алгоритма плавающего горизонта [9]. В отличие от обычного алгоритма, используемого в машинной графике, в нашем случае горизонт будет представляться не в виде растра, а в виде ломаной кругового обзора. На рис. 4 по горизонтали откладывается азимут направления зрения, а по вертикали - максимальный текущий вертикальный горизонт зрения.
Рис. 4. Текущий круговой плавающий горизонт
В начале работы алгоритма текущий круговой плавающий горизонт устанавливаем в виде горизонтальной линии на уровне -90°. Далее последовательно анализируем все треугольники триангуляции от ближайших к точке зрения до самых удаленных. Каждый треугольник сравниваем с текущим горизонтом и выделяем те части треугольника, которые видны и не видны, и затем модифицируем текущий горизонт этим треугольником.
В данном алгоритме самое сложное заключается в поиске такого правильного порядка обхода треугольни-
ков, чтобы все ранее анализируемые треугольники не заслонялись более поздними. К сожалению, такой порядок не всегда существует, хотя в практических задачах, видимо, исключения возникают редко.
Рис. 5. Проблема правильного выбора порядка обхода треугольников
На рис. 5 точкой обозначено положение наблюдателя, сплошными линиями - уже проанализированные треугольники. Анализ же пунктирных треугольников невозможен, так как перед каждым из них находится какой-то другой, закрывающий обзор. В таком сложном случае можно либо разрезать некоторый треугольник на части, либо просто продолжить анализ с наименее перекрываемого или самого близкого к наблюдателю треугольника. Второй вариант, возможно, даст ошибку в вычислении, но он значительно более прост.
Для определения порядка обхода создаем список незаслоняемых треугольников Ь. Пока список не пуст, последовательно анализируем все его треугольники. После выполнения анализа очередного треугольника возможна ситуация, когда смежные с ним треугольники станут также незаслоняемыми, и тогда их надо также поместить в список Ь. Если список Ь станет пустым, то при наличии в триангуляции еще не проанализированных треугольников выбираем из них тот, центр которого находится ближе всех к точке зрения, и повторяем цикл анализа списка.
Расчет объемов земляных работ
В задаче расчета объемов земляных работ в дополнение к существующей модели рельефа задается желаемая модель. Требуется рассчитать, какую территорию нужно срезать, а какую засыпать, чтобы получить желаемую поверхность. При этом нужно определить объемы перемещаемых масс грунта (сумма срезанного и засыпанного объемов) и балансовый объем (разница срезанного и засыпанного объемов, т. е. избыток или недостаток грунта).
В наиболее простой постановке желаемая форма рельефа задается как некоторый регион на карте, в пределах которого требуется выравнивание поверхности под заданный горизонтальный уровень. Это применяется для оценки объемов работ при рытье котлованов с вертикальными стенками. Решение задачи с котлованом выполняется следующим образом.
Алгоритм расчета земляных работ при рытье котлована с вертикальными стенками и горизонтальным дном.
Шаг 1. Делается вырезка из общей триангуляции некоторой части по границе котлована. По сути, вначале делается копия исходной триангуляции и в неё вставляется граница котлована в качестве внешней границы триангуляции, т. е. все треугольники вне котлована отбрасываются.
Шаг 2. Вызывается алгоритм построения изоконтуров для вырезанной триангуляции на требуемом уровне дна котлована. Алгоритм возвратит два полигона, определяющих территории с излишком и с недостатком грунта соответственно.
Шаг 3. Для каждого треугольника вырезанной триангуляции выполняется сравнение с требуемым уровнем дна котлована. Если треугольник находится целиком выше дна, то его требуется засыпать, если целиком ниже - то срезать. Объем засыпки-срезки определяется как объем соответствующей треугольной призмы с двумя основаниями, одно из которых является текущим треугольником, а второе
- проекцией этого треугольника на дно котлована.
Если треугольник пересекается с плоскостью дна котлована, то делается сечение треугольника на две части, для которых отдельно вычисляются объемы соответствующих призм. Конец алгоритма.
В более сложной постановке задачи расчета земляных работ требуемая поверхность задается как другая независимая триангуляционная модель. В такой форме задача возникает при проектировании вертикальной планировки территорий самого разного назначения.
Обычно эта задача решается на регулярных моделях с предварительным преобразованием исходных триангуляционных моделей. В явном же виде на триангуляции обычно эту задачу не решают, так как существующие для этого алгоритмы сложны и могут генерировать очень сложные полигоны, имеющие число точек, пропорциональное квадрату общего числа узлов в исходных триангуляциях. Но в некоторых случаях возникает потребность в таких явных вычислениях, и поэтому автором предлагается следующий достаточно простой алгоритм.
Задача расчета земляных работ. Пусть дана исходная модель рельефа в виде триангуляции Т1 и желаемая модель Т2. Требуется вычислить полигон Ь, определяющий территорию, в пределах которого поверхность Т1 выше Т2, полигон Н, на котором Т1 ниже Т2, и полигон Е, на котором уровни Т1 и Т2 равны. Также требуется вычислить объем земли, который надо срезать, и объем, который надо насыпать.
Алгоритм расчета земляных работ.
Шаг 1. Определяется минимальный полигон, охватывающий триангуляции Т1 и Т2 как пересечение охватываемых триангуляциями территорий.
Шаг 2. Создается новая триангуляция Т, и в неё вносятся в качестве структурных ребер все ребра триангуляций Т1 и Т2. Для каждого узла п1 триангуляции Т нужно 1 2
вычислить высоты и , определяющие высоты это-
го узла в триангуляциях Т1 и Т2 соответственно.
Шаг 3. Для каждого треугольника tj новой триангуляции определяем, не пересекаются ли триангуляции Т1 и Т2 в пределах треугольника ^.
1. Если Ук = 1,3 : 2 = 2 *к, то оба треугольника
лежат в одной плоскости и треугольник tj попадает в полигон Е.
2. Если У к, I = 1,3 : 2Хкк < 2 2 , то в пределах этого треугольника поверхность Т1 не выше Т2 , поэтому треугольник ^ попадает в полигон Н.
3. Если У к, I = 1,3 : 2Хкк > 2 2 , то в пределах этого треугольника поверхность Т1 не ниже Т2 , поэтому треугольник tj попадает в полигон Ь.
4. Иначе, если 3к, I = 1,3 : 2\к > 22 и 3т, п = 1,3 :
1 2
2 т < 2 п, то поверхности пересекаются в пределах
данного треугольника (рис. 6). Поэтому мы должны найти пересечение двух пространственных треугольников в виде некоторого отрезка, разделяющего треугольник на две части, которые в дальнейшем войдут в разные результирующие полигоны Ь и Н. После деления треугольника удобно рассчитать объемы земляных работ в пределах данного треугольника.
Шаг 4. Собираем из всех найденных частей полигоны Ь, Н и Е. Конец алгоритма.
Сложность данного алгоритма зависит в основном от трудоемкости построения триангуляции Т. В худшем случае это может быть 0((М+Ж2)2), где
- число узлов исходных триангуляций. Тем не менее в среднем эта величина может составлять 0(М+Ж2) на равномерных распределениях исходных узлов триангуляций. Все это напрямую следует из анализа трудоемкости построения триангуляции Делоне с ограничениями [7].
Рис. 6. Пересечение пространственных треугольников
ЛИТЕРАТУРА
1. Кошкарёв А.В., Тикунов В.С. Геоинформатика. М.: Картгеоцентр-Геодезиздат, 1993. 213 с.
2. Костюк Ю.Л. Представление рельефа земной поверхности в геоинформационных системах // Геоинформатика-2000: Труды Межд. науч.-практ. конф. Томск: Изд-во Том. ун-та, 2000. С. 12-17.
3. Жихарев С.А., Скворцов А.В. Моделирование рельефа в системе ГрафИн // Геоинформатика: Теория и практика. Вып. 1. Томск: Изд-во Том. ун-та, 1998. С. 193-204.
4. Скворцов А.В. Система ГрафИн // Геоинформатика: Теория и практика. Вып. 1. Томск: Изд-во Том. ун-та, 1998. С. 181-192.
5. Скворцов А.В. Инструментальная геоинформационная система ГрафИн: новая версия // Геоинформатика-2000: Труды Межд. науч.-
практ. конф. Томск: Изд-во Том. ун-та, 2000. С. 90-96.
6. Скворцов А.В., Костюк Ю.Л. Эффективные алгоритмы построения триангуляции Делоне // Геоинформатика: Теория и практика. Вып. 1. Томск: Изд-во Том. ун-та, 1998. С. 22-47.
7. Скворцов А.В., Костюк Ю.Л. Применение триангуляции для решения задач вычислительной геометрии // Геоинформатика: Теория и практика. Вып. 1. Томск: Изд-во Том. ун-та, 1998. С. 22-47.
8. Скворцов А.В. Особенности реализации алгоритмов построения триангуляции Делоне с ограничениями // Наст. журн.
9. Роджерс Д. Алгоритмические основы машинной графики: Пер. с англ. М.: Мир, 1989. 512 с.
Статья представлена кафедрой теоретических основ информатики факультета информатики Томского государственного университета,
поступила в научную редакцию номера 3 декабря 2001 г.