|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||||||||||
Баг в коде Reaction Diffusion Gray-Scott model11.12.2020, 02:04. Показов 4550. Ответов 47
Изначально первоисточник формул https://www.karlsims.com/rd.html
Как сделать тоже самое в коде С++ получить значение цвета параметр “c” из кода javascript. Пытаюсь сделать этот код Reaction Diffusion Gray-Scott model https://youtu.be/BV9ny785UNc?t=2315 что за
это типа нормализация? А где поиск макс мин значения во всем массиве значений? Как это вообще возможно. Или это обрезка значений? https://www.arduino.cc/referen... constrain/ x: if x is between a and b. a: if x is less than a. b: if x is greater than b. Тогда работать по идее не должно вообще. Вроде что-то рисует но проблема с окрасом. Нужен окрас всем каналам float от 0 до 1. Самое забавное что делал сам другой алгоритм с просто описания из Cyclic_Symmetric_Multi-Scale_Turing_Patterns.pdf Один паттерн Тьюринга,перевод гугла. «В этой модели есть только одно« вещество », которое играет роль пигментации, активатор и ингибитор. Он представлен одним числом с плавающей запятой для каждого элемента прямоугольный массив. Элементы массива можно рассматривать как эквивалентные ячейкам в дискретном модель, предложенная Тьюрингом в его статье. Число с плавающей запятой, представляющее концентрацию вещество становится значением пикселя в результирующем изображении шкалы серого. Распространение моделируется с помощью среднее значение определенной области вокруг каждого элемента, меньшей площади для активатора и большей область для ингибитора. Простое правило итеративно применяется ко всем элементам массива для (обычно) сотен временных шагов: если средняя концентрация в меньшей области больше, чем средняя концентрация в большей области, увеличьте значение на небольшую величину, в противном случае уменьшите значение на небольшую величину. В на каждом временном шаге полученные значения повторно нормализуются в несколько произвольный диапазон от -1,0 до 1,0, чтобы избежать "убегай". Чтобы избежать краевых эффектов, накладываются периодические граничные условия ». Сделал две свертки там с ядрами 3х3 и 5х5 Что –то рисовало. А этот код вроде намного проще и ядро всего 3х3, и на сайте большое разнообразие форм.Не знаю как исправить код.
1
|
|||||||||||
| 11.12.2020, 02:04 | |
|
Ответы с готовыми решениями:
47
Heat equaton, thermal diffusion equation, теплопроводность Создание input с привязкой к ng-model программно(в коде функции) Баг в коде |
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 16.12.2020, 03:32 [ТС] | |||
|
Главное что пашет, осталось только разбираться с этим всем. Скините проект где эти шейдеры? Есть vs2012 и vs2008.
0
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||
| 16.12.2020, 09:24 | ||||
|
Папка с шейдерами у вас уже есть.
0
|
||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 16.12.2020, 12:44 [ТС] | ||
|
Сделал 1.bat рядом с exe main.exe --skip-frames 10000 На вашем компе меняется скорость роста визуально сильно? Может это новый баг? Может скобки нужны, а вообще зачем там принимать команды от строки? Хватит в шейдерах задать это.
0
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 16.12.2020, 14:06 | |||
|
Обычный режим (skipFrames = 1): 1 проход вычислений (feedbackPass)Пропуск 1000 кадров (skipFrames = 1000): 1000 проходов вычислений (feedbackPass)Т.е. грубо, на 1000 команд рисования, в первом случае - на высисление тратится только половина, а во втором - практически все команды это вычисления.
0
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||||||
| 16.12.2020, 14:38 [ТС] | ||||||||
|
Если пропуск =20000 то заполнение экрана должно быть мгновенно либо упираться в скорость железа. Вот в этой проге Баг в коде Reaction Diffusion Gray-Scott model int iterNoRender=3;//сколько итераций без рендера пропускать, //ускорение анимации Означает пропуск N итераций без рендера. Между фреймами. Запустите и поменяйте iterNoRender =1 или iterNoRender =4. Разница видна визуально в анимации. Добавлено через 8 минут Может кто знает что это получилось за алгоритм? Это эксперименты с самодельной реакцией диффузии по описанию в тексте Баг в коде Reaction Diffusion Gray-Scott model Сильно меняется форма рисунков от параметров.
0
|
||||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 16.12.2020, 14:38 | |||
По умолчанию 1. В исходниках можете посмотреть, как работает.Кстати об исходниках, если у вас трудности со сборокой и линковкой, то вот простой проект CMake, исходники GLFW внутри. Там же "видео" инструкция, как собрать проект в пару кликов для студии вместе с библиотекой. Вам понадобится CMake Всё просто.
2
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 16.12.2020, 14:54 [ТС] | |
|
Вот в чем дело, в старой версии такой баг. В новой пашет. Причем пашет только скип 1000 странно.
Добавлено через 7 минут Вот еще в чем дело, у меня указан пропуск между кадрами который 60 раз в сек идет, а у вас пропуск каждую секунду. Поэтому у меня плавно идет.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 24.12.2020, 21:26 [ТС] | |
|
Похоже на диффузию только немного угловатая. Наверно это ее какой-то подвид. Может размыть и будет похоже.
Cделал вращение ядер свертки как функция от X строки и интерполяцию ближайшего соседа. Я думал если крутануть ядро то эти отростки линий будут под разными углами идти но не совсем так. Сильно мутирует форма. Вот нет вращения ядер. Вот крутит за проход строки из 200 значений до 0.05 от полного оборота. Слева направо угол поворота мал и округление не искажает ядро потому выглядит как вращения нет, дальше угол проходит некоторый порог и искажается форма ближе к правому участку. Похоже причина в самом методе интерполяции, ядро часто читает повторные ячейки массива и сильно искажается все из-за округления ближайшего соседа. Вот тут наглядно видно, поворот ядра 5х5 на 360. Получается далеко не квадратное ядро + повторное чтение неправильных ячеек свертки. Отсюда сильная мутация формы. Вот полный оборот ядра. Сейчас как эксперимент доделываю билинейную интерполяцию. Она должна быть по идее намного лучше т.к. ядро должно быть стабильно по форме. Не получается сделать утолщения линий в процессе рисования, единственно сильно влияет множитель суммы компонентов ядра t2=1.25. Если менять его в процессе итераций то срабатывает утолщение t2=1.15 но потом когда ставлю норма t2=1.25 чтобы не залило все толстыми белыми кусками алгоритм пожирает все утолщения и снова превращает все в узкие полосы…Хз как можно сделать. На этапе дебага ошибочно плюсовал разные компоненты ядра повторно...это приводило к утолщению полос но не могу повторить теперь =)). Рисует бывает наоборот утончая линии, какие-то разводки дорожек микросхем. А хотелось бы плавные линии и колебания толщин линий. Может нужны опыты с реакцией диффузии.. хз. Мне тут понравилось что алгоритм быстрый и рисует сложные лабиринты. Может сделать вести типа кисть концентрации и алгоритм по идее будет расти за кистью.
0
|
|
| 24.12.2020, 21:26 | |
|
Помогаю со студенческими работами здесь
48
баг в коде или уязвимостьо Непонятный баг в правильном коде Баг в коде (статическая структура) Баг stm8s003 или ошибка в коде? Не могу найти баг в своем коде Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера»
Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит.
Придуман Биллом Госпером в 1970-х, опубликован в. . .
|
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb">
<style>
<!]>
</ style>
<g id="bush">
</ g>
</ svg>
function fn(){
let rost;/ / высота древа
let xx=165,yy=210,w=256;
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|