evg

Вариация плазмы. Но...
Это ооочень быстрая плазма :)
Здесь расчет синусов и косинусов ведется, только при создании палитры и при расчете lookup table.
Дальше, при отрисовке берется выборка цвета из этой таблицы: (lut[pc]+time) & 127
Движение плазмы организуется добавлением к цвету константы, получаемой из счетчика кадров или времени.

Старт | Стоп
Палитра
        s1 = sin(i*Math.PI/25.);
        s2 = sin(i*Math.PI/50.+Math.PI/4.);						
        r = 128 + s1 * 128;
        g = 128 + s2 * 128;        
        b = s1 * 128.; 

Палитру ограничим 128 значениями ибо дальше цвета будут повторяться.


lookup table
      s1 = (127.5 +(127.5 * sin(x / 32.0)));
      s2 = (127.5 +(127.5 * cos(y / 32.0)));
      s3 = (127.5 +(127.5 * sin(Math.sqrt((x * x + y * y)) / 32.0)));
      lut[x + y * SCREEN_WIDTH] = ((s1 + s2 + s3) / 4);

Коментарии