topical media & game development

talk show tell print

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.