Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2012, 00:17   #1
wol4aravio
Пользователь
 
Регистрация: 27.04.2012
Сообщений: 18
Вопрос Движение жидкости по поверхности

Доброе время суток.

Господа, подскажите, в какую сторону надо копать: необходимо написать алгоритм, реализующий движение жидкости по поверхности. Для задачи известно следующее: функция рельефа от двух переменных, описывающая плоскость, и, собственно, прямоугольная область изменения значений функции.

Пробовал вводить матрицу рельефа (как двумерный массив) и по ней, анализируя соседние значения, определять направления стока - столкнулся с проблемой, что при слишком мелком дроблении области изменения, вылетает ошибка OutOfMemoryException, что в принципе очевидно.

Хотелось спросить, как можно другим способом сделать? Алгоритм потом планируется переводить на n-мерное пространство.
wol4aravio вне форума Ответить с цитированием
Старый 28.04.2012, 08:19   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А вообще такие алгоритмы существуют??? Физические модели напрмер??
Если их реализовать на небольшом наборе данных должно получится.?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 28.04.2012, 09:44   #3
wol4aravio
Пользователь
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
А вообще такие алгоритмы существуют??? Физические модели напрмер??
Ну как-то же игры пишутся. Взять, например, Terraria, там есть сток жидкости по рельефу, правда там движение жидкости задается в 2D пространстве.
Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Если их реализовать на небольшом наборе данных должно получится.?
Небольшой набор данных как раз не интересует.

Хотелось в общем поглядеть на алгоритм, может кто-нибудь подскажет хотя бы идею.
wol4aravio вне форума Ответить с цитированием
Старый 28.04.2012, 09:49   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от wol4aravio Посмотреть сообщение
Небольшой набор данных как раз не интересует..

То есть вы хотите, не зная алгоритма сразу делать на огромных множествах и надеетесь что все получится??? Хм. интересно.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 28.04.2012, 10:07   #5
wol4aravio
Пользователь
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
То есть вы хотите, не зная алгоритма сразу делать на огромных множествах и надеетесь что все получится??? Хм. интересно.
Я в первом сообщении писал, что проблема возникает при обработке именно большого объема данных:

Цитата:
Сообщение от wol4aravio Посмотреть сообщение
Пробовал вводить матрицу рельефа (как двумерный массив) и по ней, анализируя соседние значения, определять направления стока - столкнулся с проблемой, что при слишком мелком дроблении области изменения, вылетает ошибка OutOfMemoryException, что в принципе очевидно.
wol4aravio вне форума Ответить с цитированием
Старый 28.04.2012, 11:19   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
OutOfMemoryException, что в принципе очевидно.
нет не очевидно, может быть просто при активной работе с памятью идут утечки. (забываем вернуть).
на малых объемах такие утечки могут быть некритичны (не приводят к краху).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.04.2012, 14:52   #7
wol4aravio
Пользователь
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию

Может у кого-нибудь есть мысли насчет алгоритма?
wol4aravio вне форума Ответить с цитированием
Старый 01.05.2012, 00:41   #8
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

не совсем понятно что Вы хотите... обычная мат модель... формулу, вот вроде она...

http://ru.wikipedia.org/wiki/Уравнение_Буссинеска
Reskov вне форума Ответить с цитированием
Старый 01.05.2012, 01:38   #9
wol4aravio
Пользователь
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Reskov Посмотреть сообщение
не совсем понятно что Вы хотите... обычная мат модель... формулу, вот вроде она...

http://ru.wikipedia.org/wiki/Уравнение_Буссинеска
Например у рельеф плоскости задается уравнением f(x,y)=|x|+|y|, х и у изменяются от -2 до 2. Разбивая область на кусочки шириной в 1 ((-2;-1), (-1;0), (0;1), (1;2)) и оценивая минимум функции на ней можно сделать такую матрицу уровня поверхностей:

2 0 0 2
0 0 0 0
0 0 0 0
2 0 0 2

Как понять, например, что если начинать с левого нижнего угла вода растечется по всем точкам с уровнями 0?
wol4aravio вне форума Ответить с цитированием
Старый 01.05.2012, 12:46   #10
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

Ваша реализация подходит как раз под малый набор данных, хранить матрицу и работать с ней это довольно не благодарная задача
Цитата:
Как понять, например, что если начинать с левого нижнего угла вода растечется по всем точкам с уровнями 0?
почитайте про заливку изображений http://algolist.manual.ru/graphics/fill.php и на основе него сделайте сток воды и про поиск в ширину на основе очереди...
если же OutOfMemoryException происходит уже при задании матрицы поверхности, это значит что нужно сменить алгоритм моделирования... самое главное я до сих пор не смог понять что Вы хотите учитывать при построении модели сжатие жидкости, силу притяжения, силу натяжения поверхности... влияние внешних сил...
Ну т.е. хотя бы тот факт что когда она стекая с 10 она наберет большую скорость чем стекая с 2...
Про моделирование что-то похожее написано здесь http://www.aos.wisc.edu/~aos611/611Chapt1.pdf правда я особо невчитывался=)
Reskov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с программой для расчета объема жидкости в горизонтальной цилиндрической емкости. boltimur Фриланс 17 27.05.2015 09:04
вязкость жидкости titan2012 Общие вопросы C/C++ 1 25.02.2012 08:07
классы.наследование.жидкости zhenya.ya Общие вопросы C/C++ 8 23.10.2010 14:13
помогите создать апплет - Измерение коэффициента вязкости жидкости Mitron Общие вопросы по Java, Java SE, Kotlin 1 29.04.2008 20:14
Help!!!Движение точки по поверхности сферы alex23xandr Помощь студентам 4 20.05.2007 14:45