Вариация плазмы. Но...
Это ооочень быстрая плазма :)
Здесь расчет синусов и косинусов ведется, только при создании палитры и при расчете 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);