Weird waving shape animation with my custom noise function.

The weird wave shape animation.


My custom noise function creates a microbiota world.

It's a creative coding animation work that was made with the 'Processing'.

It's a by-product of Sounds From the Street.

I used my custom noise (almost a random), I made this weird wave shape animation. My custom noise is an unruly boy. Need a perfect parameter to draw a formed shape.
And it's so fun to find these parameters.







 

The 'Processing' code example.

Please feel free to use this example code under the terms of the GPL. To see other works based on my code is my pleasure. And my honor.


// World in My Eyes.
// Processing 3.2.1
// 2018.03.12

int waveCnt;
float seedExpand;
float seedShape[];

void setup() {

  size(900, 900);
  colorMode(HSB, 360, 100, 100, 100);
  blendMode(BLEND);
  smooth(8);
  //  noLoop();

  waveCnt = 9;
  seedExpand = random(100);

  seedShape = new float[waveCnt];
  float rndDegree = random(20, 70);
  for (int i = 0; i < waveCnt; ++i) {
    seedShape[i] = map(sin(radians(rndDegree * (i + 1))), -1, 1, 8000, 50000); // I want various value
  }

}

void draw() {

  background(0, 0, 100, 100);
  noStroke();

  // rotate canvas
  translate(width / 2, height / 2);
  rotate(-radians(10));
  translate(-width / 2, -height / 2);
  
  drawWaves();
  drawScope();
  /*
  saveFrame("frames/####.png");
  if (frameCount > 30 * 15) {
    exit ();
  }
  */
}

void drawWaves() {

  int lineIndex = 0;
    
  for (int x = 0; x <= width; x += width / (waveCnt - 1)) {

    float lastX = x;
    float seedWave = seedShape[lineIndex]  + frameCount * 0.005; // wave shape

    for (float y = 0; y < height * 2; y += 0.2) {

      float currentY = y * (0.5 + noise(seedShape[lineIndex] + seedExpand) * 1.5);
      float divX = customNoise(seedWave) * 50.0;
      float currentX = x + divX;

      if (abs(divX) < 0.5 &&  abs(currentX - lastX) < 0.2) {
        // do no draw such a straight line
      } else {
        fill(240, 50, 20, map(abs(currentX - lastX), 0, 100, 10.0, 100.0));
        ellipse(currentX, currentY, 6, 6);
      }

      lastX = currentX;
      seedWave += 0.45; // make a shape, important value

    }

    ++lineIndex;

  }

  seedExpand += 0.001;

}

void drawScope() {

  pushMatrix();
  translate(width / 2, height / 2);
  strokeWeight(200.0);
  stroke(0.0, 0.0, 0.0, 100.0);
  fill(0.0, 0.0, 0.0, 0.0);
  ellipse(0.0, 0.0, 1100.0, 1100.0);
  popMatrix();

}

float customNoise(float value) {

  value *= map(sin(radians(value * 0.01)), -1, 1, 0.004, 0.002);
  return pow(sin(value), 3) * cos(pow(value, 2));

}

/*
Copyright (C) 2018 deconbatch

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>
*/



 

Next Post Previous Post
No Comment
Add Comment
comment url