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)