CS1335 Java and Processing
  • CS 1335 Computer Science 1
  • Getting Started
    • Processing IDE
    • Java vs Javascript
    • Review: Processing, Functions
    • HSB Color Mode
      • HSB Color Wheel
        • Example Code
      • HSB Color Palette Tool
    • Recursion
      • Recursion Call-Stack
      • Example Code
        • Example Code Feb 5 S20
        • Feb 12 Code
  • Project 1
    • Subjective Modeling of Emotions
    • Emotions represented using color, form, space
      • Kandinsky Color - Emotion
      • Emotional Intelligence
    • Project 1: PShapes
      • Example Code
      • Inspiration
    • PShape with Cutout - Inner Contour
    • VertexShape - Recursion
    • Project 1: Recursive Drawing
    • Project 1: Programmatic Variations in Color
      • Recursion with rotate, scale
      • Plan Region Size, Color
    • Map Function
    • Transforms for Mirroring
    • Project1-Steps
  • Grid Based Designs
    • Computational Design
      • Generative Design
    • Artist: Victor Vasarely
    • Grid Pattern Design
    • 1D - Array of PShapes for Grid Layout
      • Truchet Tiling
      • Example Code
    • PShapes in Grid Regions
    • Grid Region Logic
    • Pattern Preview - Transforms: Translate & Scale
  • Project 2
    • Project 2 - 2D Arrays for Gradient Logic
      • 2D Array Grid with Labels
    • Grid Patterns using 2D Array Indexes: i, j
      • Example Class Code
    • lerpColor( ) and map( ) Functions
    • Demo Lerp Colors
    • 2D Arrays with lerpColor
    • Create PShape 2D Array
    • Function: Populate2DArray( )
    • Function: DisplayShapeMatrix()
    • Transforms for Position, Rotation, Scale of ShapeMatrix Elements
    • Project 2 - Steps
    • Animation for ShapeMatrix
      • Animation w/Noise
  • Object Oriented Programming
    • Introduction to Objects
    • OOP vs Data-Flow
    • Button States
    • Buttons as Objects
      • Button Class
    • Create Object Instances
    • Button Types
    • Modeling Buttons: States and Events
    • OOP - Inheritance
    • OOP - Polymorphism
    • Child-Class: PImageButton
    • PShape - SVG Objects
    • Menu of Buttons
    • ButtonGroup - Final Version
    • Slider Controller
    • UML Class Diagram
  • Project 3
    • Project 3 - Logic, Steps
    • Example Code S20
      • Code Wed Apr 1
      • Code Wed Apr 8 v1
      • Code Wed Apr 8 v2
      • Code Mon Apr 13
      • Code Wed Apr 15
      • Code Mon Apr 20
      • Code Wed Apr 22
      • Code Mon Apr 27
      • Code Wed Apr 29
    • Project 3 - Class Definitions
      • Button
      • PImageButton
      • ButtonGroup
      • Pattern
        • PShapes - SVG, Vertex Shapes
        • Setting Colors For Patterns
        • Pattern - With Child-PShapes
      • Slider
      • Particles
  • Java Syntax
    • Java Syntax
      • Typed-Variables
      • Float - Integer Conversion Errors
      • Modulus
      • Functions
      • Object Reference Data Types
      • Arrays
        • Class Example Code
      • Switch-Case Statement
      • Ternary Operator
      • Class
      • Learning Science
    • UML Class Diagram
    • Glossary
  • Resources and References
    • Resources
    • Random Inspiration
      • Ulm School
      • Heart-Mind, Mind, Body
      • Statistical Uncertainty
Powered by GitBook
On this page

Was this helpful?

  1. Project 2
  2. Animation for ShapeMatrix

Animation w/Noise

PreviousAnimation for ShapeMatrixNextIntroduction to Objects

Last updated 5 years ago

Was this helpful?

Animation with noise( ) added to the animation timer gives more organic feeling of energy.

Similar animation without noise has perfectly consistant timing.

noise( )

Processing Link:

Perlin noise has a more organic appearance because it produces a naturally ordered (“smooth”) sequence of pseudo-random numbers. The graph below shows Perlin noise over time, with the x-axis representing time; note the smoothness of the curve.

Images below from Khan Academy - Show how noise ( ) differs from random( )

void updateArray_Display(  ){
  int maxFC1 = 100;
  int maxFC2 = 50;
  float noiseFC1 = noise(frameCount)*5;
  
  //uncomment to see how noise values change
  //println("FC " + frameCount + " NoiseFC1+frameCount%time2 " + (noiseFC1+frameCount)%maxFC1 + " noiseFC1 " + noiseFC1); 
  
  //use the changing noise signal in the map function
  float fractionFC = map((noiseFC1+frameCount)%maxFC1, 0, maxFC1-1,0.0,1.0);
  float fractionSize = map(noiseFC1+(frameCount%maxFC2),0, (maxFC2-1)/2,0.3,1.0);
  
  float mXHue = map( mouseX, 0,width, 80,185);
  accentMx = color(mXHue,90,70,50); 
  color curColor1=lerpColor( purple, aqua, fractionFC);
  color curColor2 =lerpColor( aqua, accentMx, fractionSize);
  int rows = 8;
  int cols = 8;
  float cellSize = width/cols;
  
  PShape[][] myShapes1 = new PShape[rows][cols]; //num elements is rows*cols
  PShape[][] myShapes2 = new PShape[rows][cols]; //num elements is rows*cols
 
  populate2DArray1( myShapes1, rows, cols, cellSize*fractionSize, curColor2, curColor1);
  populate2DArray2( myShapes2, rows, cols, cellSize*fractionSize, curColor2, curColor1);
 
  pushMatrix();
  scale( 0.5,0.5);
  displayShapeMatrix( myShapes1, rows, cols, cellSize);
  popMatrix();
  
  
  pushMatrix();
  translate(width, 0); //move origin to upper right
  scale( -0.5,0.5);
  displayShapeMatrix( myShapes2, rows, cols, cellSize);
  popMatrix();
  
  
  pushMatrix();
  translate(0, height); //move origin to upper right
  scale( 0.5,-0.5);
  displayShapeMatrix( myShapes2, rows, cols, cellSize);
  popMatrix();
  
  pushMatrix();
  translate(width, height); //move origin to upper right
  scale( -0.5,-0.5);
  displayShapeMatrix( myShapes1, rows, cols, cellSize);
  popMatrix();
}
https://processing.org/reference/noise_.html
Khan Academy
https://www.khanacademy.org/computing/computer-programming/programming-natural-simulations/programming-noise/a/perlin-noise