Перейти к содержимому
qwertyMAN

Математический визуализатор

Рекомендуемые сообщения

yDSkdKm.jpg

 

Добрый день, надеюсь не забыли обо мне!

А я пришёл вам новую программу показать:gamer2:

Давайте разбираться...

 

Скрытый текст

KlE7FXP.jpg

Пример работы: симуляция магнитного поля между двумя полюсами

 

Описание:

  • Программа написана на языке программирования lua и работает на движке love2d
  • Визуализация использует GLSL шейдеры версии 3
  • Для хранения работ используются отдельные файлы с шейдерами, чтобы не трогать весь код программы
  • Кнопки внизу экрана скрываются до наведения на них мышкой :excl:
  • Кнопки хранятся как объект со своими функциями и свойствами внутри. И вкладываются в массив инструментария

 

Скрытый текст

Q3hhgzY.jpg

Пример работы: волны искажений

 

Возможности:

  • Навигация и/или зуммирование на колесо мыши
  • Несколько типов анимации. (на кнопку включается анимация движения волн, остальные типы пишутся в шейдерах)
  • Сохранение кадра
  • Сохранение анимации
  • Настройка "шага волны" и скорости течения времени кнопками (обязательно необходимо для построения кадра)

 

Видеообзор:

Скрытый текст

 

 

Готовые gif анимации:

Рисунок электромагнитных полей:

Скрытый текст

sKCvl9h.gif

 

Волновые искажения:

Скрытый текст

CwuxlQY.gif

 

Цветные иллюзии:

Скрытый текст

0wGtBUz.gif

lcGPD2r.gif

Иллюзия в том, что кружков (кроме двойного) нет. На этих участках случайно совпадают цвета

 

Прочее:

Скрытый текст

fG5J7w7.gif

bKpZI57.gif

 

Обычные рисунки:

Эксперименты над волнами:

Скрытый текст

S8CxvCl.jpgyAi1zPp.jpgqXhwqNj.jpg

he4Kj5P.jpg

Yq2A6w4.jpg

 

История версий:

Скрытый текст

Первая версия:

Я собирался написать шашки или шахматы. Сделал алгоритм рисованием шахматной доски. И в целях эксперимента вдруг обнаружил, что мой алгоритм может рисовать куда более интересные рисунки помимо шахматного узора. И тут понеслось...

Я прикрутил небольшую Unix подобную консоль со всякими фишками вроде подсказок и автоввода, считая что консоль намного удобнее UI (как же я тогда ошибался:smile3:)

Консоль позволила в самой игре вводить формулы которые будут рисоваться, ввести цвет градиента. и прочее. Но сама игра оставалась очень примитивной. Она тормозила до 1-2 FPS из-за того, что все пиксели на экране высчитывались на ЦП в реальном времени

 

Вторая версия:

Переписал с нуля.

Прикрутил отображение на канвасах. То есть теперь рисунок рисовался лишь раз, а дальше просто выводилась уже нарисованная картинка. Что давало больше 60 FPS при отображении. Но на генерацию новых картинок уходило много времени. Я даже сделал экран загрузки, чтобы видеть прогресс генерации анимации. Тогда и появились первые анимации с возможностью их сохранять в png. Чтобы потом склеить в gif.

Но на этом все возможности программы заканчивались. Они была без консоли и UI.

И именно эта версия была утеряна.

 

Третья версия:

Текущая! Опять с нуля переписал.

Изначально писал игру "сапёр" с возможностью создавать свои правила игры. В основном для тестирования алгоритма ИИ который я хотел проверить.

А потом понял что моя система навигации идеальна для моего старого проекта по визуализации и не стал реализовывать сапёра.

Теперь камеру можно поставить в любую точку куда захочу!

Добавил кнопочки и куча функций которые они могут выполнять.

Добавил всплывающие подсказки!

И самое главное - прикрутил шейдеры GLSL.

 

Четвёртая версия:

На самом деле я её уже начал писать.

Реализовал окошки, систему загрузки модификаций и логирование в консоль каждого действия.

Добавил поддержку кастомных изображений курсоров. (пока что только один)

Ограничил FPS для меньшей нагрузки на комп.

 

THJ89BF.png

FPS тут искусственно ограничен до 60, но счётчик как-то по своему считает этот показатель

 

Реализую более гибкую систему кнопочек. (в love2d движок нужно писать самому, тут ничего такого нет)

Будет как минимум второй режим отображения, где можно будет расставить объекты на поле, которые будут передавать свои координаты на шейдеры для обработки

Будет более гибкая система сохранений, с возможностью использовать например предустановленные настройки. Которые позволят посмотреть интересные места на поле без долгих поисков.

Будут на кнопочки реализованы разные надстройки над шейдерами. Например: используемые цвета, используемая функция размытия волн.

 

Кто-то тут может сказать: "а где ссылка на программу?"

А её и не будет пока не реализую нормальную систему сохранений.

Почему тогда я выкладываю недоработку?

Потому что мне нужно рассказать о проекте для резюме. Это моя лучшая программа и я её люблю.

Оттягивать нет смысла, первая версия разрабатывалась ещё полтора года назад. А значит до релиза четвёртой ждать ещё неизвестно сколько.

 

Так что спасибо за внимание! :smile9:

Если вдруг кому-то тема визуализации так же интересна как и мне - пишите в ЛС. Было бы интересно обсудить.

Изменено пользователем qwertyMAN
Установка спойлера

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поздравьте с тысячной публикацией!!!

Скрытый текст

XmR9TK9.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В видеообзоре стоило бы показать как вводится формула и как от этого изменяется изображение

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
37 минут назад, qwertyMAN сказал:

Кто-то тут может сказать: "а где ссылка на программу?"

А её и не будет пока не реализую нормальную систему сохранений.

Жаль, что нет кода. В давние времена, когда я интересовался темой процедурной генерации графики, вдохновлялся этим сайтом http://arbuz.uz/x_vernisag.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
38 минут назад, hohserg сказал:

В видеообзоре стоило бы показать как вводится формула и как от этого изменяется изображение

Добавлять консоль в новую версию - глупость, а старую прогу дорабатывать ради видео - провальная идея.

 

@eu_tomat спасибо большое, эта статья по сути то что я делал. Но с разделением на цвета более плавно:

http://arbuz.uz/s_uravnenie.html

(скажу по секрету - такой стиль окраски можно будет скопировать и использовать как настройку стиля рисовки в четвёртой версии программы)

Код рисунков как видишь не сложный.

Более интересно было с математической точки зрения реализовать правильное зуммирование в моей проге. И я эту задачу решил! Я думаю как-нибудь видео по этой теме сделаю. Люблю объяснять решение математических задач в программировании.

Кстати, может знаешь, может кто-то уже сделал такую программу как у меня с удобным управлением?

Я видел в интернете всякие шейдеры и визуализаторы фракталов с маленьким экранчиком в браузере. Но такая штука нисколько не удобная и не интересная. По этому и взялся за написание своей программы и доволен результатом! Хоть они и не идеальна. Зато работает!

Изменено пользователем qwertyMAN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
28 минут назад, qwertyMAN сказал:

Добавлять консоль в новую версию - глупость, а старую прогу дорабатывать ради видео - провальная идея.

Т.е. нельзя визуализировать произвольную функцию? В чем тогда смысл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
42 минуты назад, qwertyMAN сказал:

Кстати, может знаешь, может кто-то уже сделал такую программу как у меня с удобным управлением?

Я видел в интернете всякие шейдеры и визуализаторы фракталов с маленьким экранчиком в браузере.

В те времена, когда эта тема была мне интересна, не встречал. Сам я писал визуализатор фрактала Жюлиа на HTML/JavaScript. В полный экран рисовал, но параметры я задавал через поля формы и адресную строку браузера. То есть, на управлении я не заморачивался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@eu_tomat @eu_tomat вот кстати поигрался с этой раскраской из статьи. По сути раскраска - стиль. И его можно будет применять к любой работе. Однако сейчас моя прога не поддерживает такое и нужно всё в одном файле прописывать.

 

Скрытый текст

oSfmJp4.gif

 

14 минуты назад, hohserg сказал:

Т.е. нельзя визуализировать произвольную функцию? В чем тогда смысл?

Смысл в том, что я постараюсь в новой версии учесть это и реализовать УДОБНЫЕ сохранения. Ты по сути пишешь один файл где творишь что хочешь (почти) А потом программа читает этот файл и всё реализует.

Неужели ты думаешь, что одной формулой тут всё ограничивается?:smile3:

Так было только в первой версии. Но алгоритмы сейчас куда длиннее. Анимация выше - 27 строк кода. По факту 15 из них отвечают за сами вычисления.

А добавлять текстовый редактор в свою программу я не собираюсь. Да и не нужно это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, qwertyMAN сказал:

Ты по сути пишешь один файл где творишь что хочешь (почти) А потом программа читает этот файл и всё реализует.

https://www.shadertoy.com/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...