Простейший вариант выглядит примерно так:
1) Очищаем буфер (делаем в памяти картинку и заливаем её цветом $000000 - black) и создаём единый индекс цветов в 766 значения (от 0 = $000000 до 255 = $FF0000 - увеличивая только красную составляющую, далее от 256 = $FF0100 до 511 = $FFFF00 - увеличивая только зелёную составляющую, и наконец от 512 = $FFFF01 до 765 = $FFFFFF - увеличивая только синию составляющую)
2) Случайным образом в самой нижней строке выводим несколько "белых" точек $FFFFFF (подбирается опытным путём)
3) В цикле (сверху вниз) просматриваем все ячейки буфера и для каждой находим четверть суммы Index = (buf[Row, Col] + buf[Row + 1, Col - 1] + buf[Row + 1, Col] + buf[Row + 1, Col + 1]) div 4
4) По полученному значению из индекса получаем значение цвета и устанавливаем в текущие координаты Row x Col
5) Выводим буфер на канву и переходим к (2)
Если хорошо оптимизировать данные действия (прямая запись в изображение в буфере, кэширование, ассемблер) , то можно получить довольно-таки динамичное отображение, которое будет походить на горящий огонь.
Далее можно накладывать изображение из буфера на изображение снимка экрана или загруженной картинки по ХOR... Но это уже тогда, когда основной алгоритм будет работать с частотой примерно 25 кадров в секунду!
Другие языки программирования и технологии
Посоветуйте алгоритм горящего пламени. точнее нужно описание. желательно пламя по реалистичней...
К сожаление алгоритм горящего пламени недоступен по идейным соображениям. Вас устроит алгоритм просто пламени, или потухшего пламени? Опишите техзадачу для точного решения. А то вот уже полкоробка спичек исчиркал-а что то не понимаю о чем речь
Простое пламя - случайные числа снизу + хитрое сглаживание
Сложное фотореалистичное пламя - 3д анимированная модель, которая не может быть простой.
Сложное фотореалистичное пламя - 3д анимированная модель, которая не может быть простой.
Виктор Онищенко
вообще меня устроит простое. но где о нем почитать?
я делал так
1 заполнял нижнюю строку массива случайными значениями от 0 до 255 (255 это максимальная яркость точки)
2 заполнял следующую строку сумируя значения соседних точек и разделяя на их количество и т д
пламя сильно ровное и спокойное. тогда я добавил в формулу проверку если вычисленная точка совпадает с нижней то она равна нулю.
в результате оно стало более похоже. но все же не то
может еще какие есть варианты?
да а еще мне желательно почитать и о 3д математической модели пламени. если есть где описание то поделитесь пожалуйста
я делал так
1 заполнял нижнюю строку массива случайными значениями от 0 до 255 (255 это максимальная яркость точки)
2 заполнял следующую строку сумируя значения соседних точек и разделяя на их количество и т д
пламя сильно ровное и спокойное. тогда я добавил в формулу проверку если вычисленная точка совпадает с нижней то она равна нулю.
в результате оно стало более похоже. но все же не то
может еще какие есть варианты?
да а еще мне желательно почитать и о 3д математической модели пламени. если есть где описание то поделитесь пожалуйста
Думаю лучше тебе посмотреть видео в замедленной съёмке.
Похожие вопросы
- Помогите с Д/з для 6 класса по географии (см. внутри) Мне нужно описание реке Волги по плану
- Написать программу в Паскале для построения графика функций. К программе желательно составить алгоритм.
- Нужно ли быть очень сильным математиком и хорошо уметь конструировать алгоритмы на позиции Software Engineer?
- очень нужно, помогите пожалуйста. Приведите словесное описание алгоритма сложения двух обыкновенных дробей a/b и c/d
- посоветуйте книженции по структурам и алгоритмам. желательно с ссылками, и уж совсем хорошо, если в fb2.
- Вопрос про Алгоритмы сегодняшних онлайн-переводчиков: Почему Яндекс переводит лучше и точнее Гугловских???
- Дан массив MAS(9). Обработать его за алгоритмом( в пояснениях) В Pascal желательно!!!=))
- Нужно написать программу (помогите с алгоритмом) с++
- программирование это в 1-ую очередь алгоритмы или математика а потом алгоритмы; 2. ПМИ или МОАИС? (желательно подробно)
- Изучил несколько простых алгоритмов сортировки, осталось изучить быструю и слияние, нужно ли вообще писать эти алгоритмы
не очень реалистичное было пламя. тогдадобавил проверку. если вычисленная точка одинаковой яркости с нижней то присваиваю ей значение ноль. пламя получилось более реалистично.
как еще можно изменить?