Комментарии 8
В range можно использовать только 1 аргумент и не писать каждый раз 0. Т.е. не range(0, x), а range(x).
Ух ты, мне этот алгоритм лет двадцать пять назад объясняли на пальцах, теперь вот в коде увидел. Я ещё с тех пор слово «блюр» узнал.
Но сам из алгоритмической графики делал только слипающиеся пузыри, типа как на разломе пенопласта, только цветные. Самым сложным оказался плавный переход цвета в месте слияния. Там, правда, генерировалась статическая картинка. И ещё баловался рассчётом средней линии для векторных фигур — вроде того, что если конусной фрезой выборку делать такой формы, какая должна быть траектория конца фрезы. В общем виде математику решил, математическую библиотеку сделал, но на прикладной реализации застрял: всё ж таки специализация у меня всегда была на управленческом учёте, а это таки другое. Да и делал это всё лишь бы побаловаться...
Молодость, ассемблер, видеобуфер...
mov ax, A800h
mov ds, ax
mov es, ax
...
Вот его бы код посмотреть.
Спасибо, переписал на JS https://shaman4d.github.io/oldfx/flame.html
Можете попробовать не уменьшать значение на единицу, и сделать палитру большего размера. Тогда не будет этих уродливых треугольников в верхней части пламени. Или уменьшить высоту вьюпорта, чтобы пламя заливало весь объём.
Разбираем алгоритмы компьютерной графики. Часть 3 – анимация «Пламя»