Комплекс Физических Программ
Последние несколько лет я в свободное время делаю довольно большой проект — комплекс программ для моделирования физики.
Началось всё с отдельных экспериментов: хотелось самому попробовать написать симуляцию жидкости, гравитации, оптики, электрических цепей, частиц, разных волновых процессов. Потом этих экспериментов становилось всё больше, и в какой-то момент я решил собрать их в одну программу.
Сейчас там уже несколько десятков разных модулей. Например:
— гравитационные системы и N-body симуляции;
— жидкости на основе SPH;
— оптика;
— ray tracing и path tracing;
— электрические цепи;
— электромагнитные и волновые процессы;
— реакционно-диффузионные системы;
— симуляции частиц;
— различные 2D/3D физические эксперименты и визуализации.
Причём мне интересно не просто нарисовать красивую анимацию. Я стараюсь делать именно интерактивные модели, где можно менять параметры, двигать объекты, ставить эксперименты и смотреть, что из этого получится.
Например, в модуле с оптикой можно собирать сцену с источниками света и оптическими объектами, а изображение рассчитывается с помощью ray tracing/path tracing. В других модулях можно наблюдать поведение жидкости, гравитационных систем или различных полей.
Проект написан в основном на C#/.NET, но в отдельных местах я использую OpenGL, GPU-вычисления и другие вещи, которые позволяют считать всё это достаточно быстро.
Сейчас я постепенно привожу весь этот зоопарк в нормальный вид: объединяю старые программы, переписываю код, делаю общий интерфейс, улучшаю производительность и добавляю новые симуляции.
Пока это ещё не законченный продукт, но проект уже достаточно большой, поэтому стало интересно показать его людям со стороны.
Если здесь есть физики, преподаватели, разработчики игр/графики, люди, занимающиеся математическим моделированием, CAD/CAE или просто любители подобных вещей — мне было бы интересно услышать мнение.
Особенно интересно:
— какие физические эксперименты вы бы хотели увидеть в такой программе;
— что в подобных программах вам обычно не хватает;
— интереснее ли вам готовые демонстрации или возможность самостоятельно собирать эксперимент;
— могла бы такая программа вообще быть вам полезна.
Если тема зайдёт, могу отдельно сделать несколько постов и подробнее показать разные модули и то, как они устроены изнутри.