Re: Огонь

From
Sergey Andrianov (2:5020/1507.400)
To
Roman Vinogradov
Date
2002-06-25T08:41:58Z
Area
RU.ALGORITHMS
Здравствуй, Roman!

Однажды 24-Jun-02  в 19:14   Roman Vinogradov (via gate)
написал       All    по поводу
-=-   Огонь  -=-

RV> From: "Roman Vinogradov" <roma-vin@mtu-net.ru>

RV> Привет всем!

RV> Может кто помнит паскалевскую прогу, рисующую красивый огонь?
RV> Kто может подсказать алгоритм, как это реализовано?

   Собственно, ключевое слово здесь "красивый". Но тут уж каждый волен проявлять свой вкус.
Вкратце, алгоритм огня сводится к тому, что (для полноэкранного "огня") устанавливается градиентная палитра черный-красный-желтый-белый, в нижней строке за пределами экрана помещается строка затравки, содержащая сгенерированный по случайному закону ряд точек, имеющий минимальное и максимальное значение цвета (0 и 255). Затем в цикле экран блурится и сдвигается вверх на одну точку. Вот маска, по которой происходит блур, и влияет на то, как будет выглядеть "огонь". Kак правило, маску делают асимметричной, а зачастую и такой, чтобы эта асимметрия одновременно избавляла от необходимости сдвигать поле на каждом шаге. 
   Вкратце - все. Но существует много тонкостей, чтобы это все работало быстро и выглядело красиво. 


                  До свидания,  в  08:35 MSK
                                 Sergey

---
 * Origin: Sergiev Posad (2:5020/1507.400)