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 ] 

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



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

Сейчас этот форум просматривают: Gg322


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

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