FAQ
 
 
Cover  \ Exhibition  \ Learning  \ Reference  \ Download  \ Discourse   
    Examples \ Tutorials \ Courses & Workshops
 
   
 
 
Examples for Processing (BETA) version 91+. If you have a previous version, use the examples included with your software. If you see any errors or have comments, please let us know.



Sine Wave
Daniel Shiffman <http://www.shiffman.net>

Render a simple sine wave

Created 2 May 2005

   
// Sine Wave 
// Daniel Shiffman <http://www.shiffman.net> 

int xspacing = 8;   // How far apart should each horizontal location be spaced 
int w;              // Width of entire wave 
 
float theta = 0.0;       // Start angle at 0 
float amplitude = 75.0;  // Height of wave 
float period = 500.0;    // How many pixels before the wave repeats 
float dx;                 // Value for incrementing X, to be calculated as a function of period and xspacing 
float[] yvalues;          // Using an array to store height values for the wave (not entirely necessary) 
 
void setup() { 
  size(200,200); 
  framerate(30); 
  colorMode(RGB,255,255,255,100); 
  smooth(); 
  w = width+16; 
  dx = (TWO_PI / period) * xspacing; 
  yvalues = new float[w/xspacing]; 
} 
 
void draw() { 
  background(0); 
  calcWave(); 
  renderWave(); 
 
} 
 
void calcWave() { 
  // Increment theta (try different values for 'angular velocity' here 
  theta += 0.02; 
 
  // For every x value, calculate a y value with sine function 
  float x = theta; 
  for (int i = 0; i < yvalues.length; i++) { 
    yvalues[i] = sin(x)*amplitude; 
    x+=dx; 
  } 
} 
 
void renderWave() { 
  // A simple way to draw the wave with an ellipse at each location 
  for (int x = 0; x < yvalues.length; x++) { 
    noStroke(); 
    fill(255,50); 
    ellipseMode(CENTER); 
    ellipse(x*xspacing,width/2+yvalues[x],16,16); 
  } 
} 
 
 







   
  Processing is an open project initiated by Ben Fry and Casey Reas  
  © Info