topical media & game development
graphic-processing-site-examples-Topics-Effects-Plasma-Plasma.pde / pde
Plasma Demo Effect
by luis2048.
Cycles of changing colours warped to give an illusion
of liquid, organic movement.Colors are the sum of sine
functions and various formulas. Based on formula by Robert Klep.
int pixelSize=2;
PGraphics pg;
void setup(){
size(640, 360);
// Create buffered image for plasma effect
pg = createGraphics(160, 90, P2D);
colorMode(HSB);
noSmooth();
}
void draw()
{
float xc = 25;
// Enable this to control the speed of animation regardless of CPU power
// int timeDisplacement = millis()/30;
// This runs plasma as fast as your computer can handle
int timeDisplacement = frameCount;
// No need to do this math for every pixel
float calculation1 = sin( radians(timeDisplacement * 0.61655617));
float calculation2 = sin( radians(timeDisplacement * -3.6352262));
// Output into a buffered image for reuse
pg.beginDraw();
pg.loadPixels();
// Plasma algorithm
for (int x = 0; x < pg.width; x++, xc += pixelSize)
{
float yc = 25;
float s1 = 128 + 128 * sin(radians(xc) * calculation1 );
for (int y = 0; y < pg.height; y++, yc += pixelSize)
{
float s2 = 128 + 128 * sin(radians(yc) * calculation2 );
float s3 = 128 + 128 * sin(radians((xc + yc + timeDisplacement * 5) / 2));
float s = (s1+ s2 + s3) / 3;
pg.pixels[x+y*pg.width] = color(s, 255 - s / 2.0, 255);
}
}
pg.updatePixels();
pg.endDraw();
// display the results
image(pg,0,0,width,height);
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.