Здравствуйте, PaNov, Вы писали:
Ev.>>Треугольники тут не нужны, строить изолинии просто, а вот строить их с учетом разломов на карте — это уже другая тема.
PN>Чтобы я мог попытаться Вам помочь, мне необходимо понимать — как именно у вас описывается поверхность: PN>- как набор нерегулярно (произвольно) расположенных в пространстве трехмерных точек PN>- как набор регулярно расположенных по какому-либо алгоритму точек (прямоугольники — по сути матрица высотных отметок, шестиугольники, ...)
Ev.>>Разломы задаются набором контуров. Вот пример с учетом разлома и без.
PN>Вы говорите контуры, а на первой картинке видно, что это отрезок или фрагмент полилинии, но никак не контур. PN>Правильно ли я понимаю, что разломы задаются набором как контуров, так и полилиний?
PN>Еще вопрос. При задании контура или полилинии указываются высотные отметки или же всё-таки разлом — это свойство поверхности, и он PN>описывается заданием высотных отметок поверхности, а толстые красные линии на чертеже — это информация, производная от поверхности?
Поверхность описана матрицей высотных отметок (формат surfer grid)
Разломы заданы набором контуров(т.е. список произвольных контуров) без высотных отметок, только координаты на поверхности.
Сейчас пытаюсь строить изолинии так:
-пересчитываю поверхность в ячейки, т.е. перехожу от матрицы значений в узлах к прямоугольным ячейкам — 1 ячейка — 1 полигон.
-проверяю прохождение разломов через ячейку, и если проходит, то делю ячейку — получается в ячейке 2 полигона или более, в зависимости от количества пересечений разломами
-расчитываю высотные значения на новых ребрах полученных после разломов методом обратных расстояний (либо крайкинга)
в итоге получаю матрицу ячеек с различным количеством полигонов в каждой ячейке.
далее строю изолинии нахожу в ячейке начало изолинии и далее ищу выход из ячейки.
более-менее строится, есть косяки. на сетке 500 на 500 скорость построения примерно 15 секунд
вот думаю как оптимизировать алгоритм, т.к. есть узкие места в интерполировании высот на новых ребрах, а также в алгоритме обхода.