2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Триангуляция озера
Сообщение19.02.2018, 17:59 


28/07/14
68
Добрый день. Я на данный момент занимаюсь математическим моделированием движения жидкости в озерах (в т.ч используя метод конечных элементов). Для этого мне нужно как-то получить рассматриваемую область - в моем случае озеро, которое разбито на треугольники.

Первое что я попробовал - взять открытые данные из OSM и просто применить к этому набору триангуляцию Делоне из питоновского пакета matplotlib. Получилось конечно же плохо, да к тому же я не могу указывать на какое количество треугольников мне надо разбивать область. Если второе решается увеличением (добавлением) внутренних точек, то с первым у меня проблема. Если триангулировать напрямую, то в конечном итоге получается совершенно не та фигура, что нужна и это логично, ибо откуда matplotlib будет знать где у меня границы и какие точки нельзя между собой соединять, но тут и встает вопрос, а как это делать? Ведь настоящие географические данные даются лишь в виде точек, которые описывают контур объекта.

Вот в качестве примера озеро Байкал, корое получилось вообще не так как я хотел из-за огромного количества точек и ошибочного метода триангуляции:

Изображение

 Профиль  
                  
 
 Re: Триангуляция озера
Сообщение19.02.2018, 19:58 
Заслуженный участник


27/04/09
28128
Ну правильно, вам вообще конкретное представление контура набором точек (линейная плотность точек на контуре — для достаточно похожих контуров она может сильно отличаться, для ломаных пример вообще тривиально строится) не должно указываать конечную триангуляцию, потому что одно дело представить с какой-то точностью контур, а другое — разбить с какой-то мелкостью ограниченную им область.

Правда, посоветовать ничего не могу кроме тривиальной и, возможно, не очень осмысленной на практике процедуры пересечения равномерной треугольной решётки и данной области — описание контура покажет, где резать. Это не очень осмысленно, потому что наверняка нужна разная плотность элементов в разных местах области, и про то, как её выбирают, вообще не в курсе. Но наверняка же в книгах по конечным элементам что-то есть (может быть даже про заполнение области, заданной границей)?

 Профиль  
                  
 
 Re: Триангуляция озера
Сообщение20.02.2018, 10:47 
Заслуженный участник


26/05/14
981
Вам нужна ограниченная триангуляция Делоне. Ограниченная - значит что некоторые рёбра заданы заранее (рёбра многоугольника в вашем случае).
Кроме того нужно добавлять новые точки внутри. Ищите генерацию мешей для метода конечных элементов. Таких библиотек должно быть много.
Пример алгоритма: Ruppert's algorithm.

 Профиль  
                  
 
 Re: Триангуляция озера
Сообщение22.02.2018, 01:29 


28/07/14
68
Спасибо большое за ответы!

Цитата:
Пример алгоритма: Ruppert's algorithm.


И правда он, сам до него дорыл параллельно. Есть еще некий "chew's second algorithm". Единственное - не нашел реализацию на питоне, что плохо. Вроде бы на эти два алгоритма даже "почти что сырые" данные из osm хорошо ложатся.

 Профиль  
                  
 
 Re: Триангуляция озера
Сообщение22.02.2018, 01:44 
Заслуженный участник


26/05/14
981
Есть реализация в CGAL 4.11 - 2D Conforming Triangulations and Meshes.
Её можно использовать в Питоне: CGAL/cgal-swig-bindings.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group