Code – Functions, Sine Ellipses, Noise Rectangles

Ellipses with Sine Modulation:

int numberEllipses = 32;
float segmentSize;
color c;

void setup() {
  size(640, 480);
  //divide the circle by number of ellipses we want to draw
  segmentSize = TWO_PI / numberEllipses;
  //show the use of function that returns an int
  println( multiplyBy2(100) );
  //set color to black to start
  c = color(0);

void draw() {
  drawCircles(width/2, height/2);


void keyPressed(){
  if (key==' '){
    c = color(random(255),random(255),random(255));

//this is just for example and not used in the code
int multiplyBy2(int num) {
  return num * 2;

//draw one ellipse
void drawEllipse(int index) {
  //push and pop matrix to rotate this circle only
  //change the rotation for each circle based on its index
  //the frequency is a scaled frameCount audjusted individually for each circle using i 
  float frequency = frameCount*.001*index;
  //the ampltiude adjusts a base height of 80 with sine
  float amplitude = 80 * sin(frameCount*.01);
  ellipse(0, 0, 170, sin(frequency) *amplitude );

//draw all the ellipses
void drawCircles(int x, int y) {
  translate(x, y);
  for (int i = 0; i < numberEllipses; i++) {



Rectangles with Noise Modulation:

//width of each rectangle
int w = 8;
float speed = .01;
float granulation = .001;

void setup(){
  size(640, 480);

void draw(){
  //noise adjusting height of the rectangles
  for (int i=0; i<width; i+=w){
    //the slower the frequency the smoother the noise
    //use i to individuate each rectangle
    //scale i down some
    //then change over time with scaled down version of frameCount
    float frequency = (frameCount*speed) + (i*granulation);
    float amp = 100;
    //noise outputs between 0 & 1
    float adjustedNoise = noise(frequency)-.5; //make it so it gives us numbers between -.5 and .5
    float heightAdjustment = adjustedNoise * amp;
    rect(i+w/2, height*.25 + heightAdjustment, w, 100);
  //noise adjusting rotation of the rectangles
  for (int i=0; i<width; i+=w){
    float frequency = (frameCount*speed) + (i*granulation);
    //map noise from 0-1 to 0-TWO_PI to get an angle around a circle
    float angle = map(noise(frequency), 0, 1, 0, TWO_PI);
    translate(i+w/2, height-height*.25);
    rect(0,0, w, 100);


Leave a Reply