Perlin Noise of different frequencies

We often use noise in our projects to create a random field, generate a dynamic pattern that appears atmospheric, or as simply a starting point. Below are two examples of animated 2D noise fields created with processing. One is a field of rectangles and the other a field of vectors. They both use Perlin noise, an algorithm for procedural gradient noise created by Ken Perlin in 1983.


import controlP5.*;

ControlP5 cp5;

float xsize = 12;
float ysize = 12;

float space = 60;

float zcount = 0;
float xcount = 0;


void setup(){
  size(1000,1000);
  
  cp5 = new ControlP5(this);
 
  cp5.addSlider("Nscale")
    .setPosition(40,40)
    .setRange(0,20)
    .setSize(200,20)
    .setValue(8)
    .setColorActive(color(180,180,180))
     .setColorLabel(color(255))
     .setColorBackground(color(70,70,70))
     .setColorValue(color(0,0,0))
     .setColorForeground(color(150,150,150))
   ;
  
   cp5.addSlider("speed")
    .setPosition(40,80)
    .setRange(0,0.01)
    .setSize(200,20)
    .setValue(0.005)
    .setColorActive(color(180,180,180))
     .setColorLabel(color(255))
     .setColorBackground(color(70,70,70))
     .setColorValue(color(0,0,0))
     .setColorForeground(color(150,150,150))
   ;
  
}


void draw(){
  background(0);

  noStroke();
  for(int x = 0; x < xsize; x++){
    for(int y = 0; y < ysize; y++){
      float n = noise(x/Nscale + xcount, y/Nscale + zcount);

      stroke(255);
      strokeWeight(4);
      point(x*space + width/2-(xsize*space/2)+space/2,y*space+height/2-(ysize*space/2)+space/2);
      float theta = map(n,1,0,0,2*PI);
          
      float r = space;

      float xp = x*space + width/2-(xsize*space/2)+space/2 + r * cos(theta);
      float yp = y*space + height/2-(ysize*space/2)+space/2 + r * sin(theta);
      stroke(255,255);
      strokeWeight(1);
      line(x*space + width/2-(xsize*space/2)+space/2,y*space+height/2-(ysize*space/2)+space/2,xp,yp);
        
      
        
    }
  }

    zcount = zcount + speed;
  
}

import controlP5.*;

ControlP5 cp5;

float xsize = 12;
float ysize = 12;

float space = 60;

float zcount = 0;
float xcount = 0;


void setup(){
  size(1000,1000);
  
  cp5 = new ControlP5(this);
 
  cp5.addSlider("Nscale")
    .setPosition(40,40)
    .setRange(0,20)
    .setSize(200,20)
    .setValue(8)
    .setColorActive(color(180,180,180))
     .setColorLabel(color(255))
     .setColorBackground(color(70,70,70))
     .setColorValue(color(0,0,0))
     .setColorForeground(color(150,150,150))
   ;
  
   cp5.addSlider("speed")
    .setPosition(40,80)
    .setRange(0,0.01)
    .setSize(200,20)
    .setValue(0.005)
    .setColorActive(color(180,180,180))
     .setColorLabel(color(255))
     .setColorBackground(color(70,70,70))
     .setColorValue(color(0,0,0))
     .setColorForeground(color(150,150,150))
   ;
  
}


void draw(){
  background(0);

  noStroke();
  for(int x = 0; x < xsize; x++){
    for(int y = 0; y < ysize; y++){
      float n = noise(x/Nscale + xcount, y/Nscale + zcount);

      stroke(255);
      strokeWeight(4);
      point(x*space + width/2-(xsize*space/2)+space/2,y*space+height/2-(ysize*space/2)+space/2);
      float theta = map(n,1,0,0,2*PI);
          
      float r = space;

      float xp = x*space + width/2-(xsize*space/2)+space/2 + r * cos(theta);
      float yp = y*space + height/2-(ysize*space/2)+space/2 + r * sin(theta);
      stroke(255,255);
      strokeWeight(1);
      line(x*space + width/2-(xsize*space/2)+space/2,y*space+height/2-(ysize*space/2)+space/2,xp,yp);
        
      
        
    }
  }

    zcount = zcount + speed;
}