Advertisement
dams2007

P5 gradient

Aug 7th, 2023
1,028
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 2.70 KB | Source Code | 0 0
  1. let clrBG = 255;
  2.  
  3. let stage = new p5.Vector(1000,1000);
  4. let canvasSize = new p5.Vector(stage.x + 250, stage.y + 250);
  5.  
  6. let baseCanvas;
  7. let baseCanvasW;
  8. let baseCanvasH;
  9. let _whichCanvas;
  10. let _w;
  11. let _h;
  12. let _s;
  13.  
  14. let Y_AXIS = 1;
  15. let X_AXIS = 2;
  16.  
  17. let _layer1;
  18.  
  19. // COLORS
  20.  
  21. let color_1;
  22. let color_2;
  23. let color_3;
  24. let color_4;
  25. let color_5;
  26.  
  27. let colorBackground;
  28.  
  29. // ROTATIONS VALUES
  30. let rotationValues = [45,135,225,315];
  31. let y = 0;
  32.  
  33. function setup() {
  34.   colorMode(RGB, 255, 255, 255);
  35.   angleMode(DEGREES);
  36.   createCanvas(stage.x, stage.y);
  37.  
  38.  
  39.   color_1 = color(35, 35, 35);
  40.   color_2 = color(175, 252, 65);
  41.   color_3 = color(178, 255, 158);
  42.   color_4 = color(29, 211, 176);
  43.   color_5 = color(8, 99, 117);
  44.  
  45.   colorBackground = [{0:color_1, 1:color_2}, {0:color_1, 1:color_3}, {0:color_1, 1:color_4}, {0:color_1, 1: color_5}];
  46.  
  47.  
  48.   baseCanvasW   = int(stage.x); // 1000
  49.   baseCanvasH   = int(stage.y); // 1000
  50.  
  51.   centerX = baseCanvasH / 2;
  52.   centerY = baseCanvasH / 2;
  53.  
  54.   _layer1 = createGraphics(baseCanvasW, baseCanvasH); // 1000 x 1000
  55.   baseCanvas = createGraphics(baseCanvasW, baseCanvasH); // 1000 x 1000
  56.  
  57.   _whichCanvas = baseCanvas;
  58.   _w           = baseCanvasW;
  59.   _h           = baseCanvasH;
  60.   _s           = 1.0;
  61.  
  62.   createbackground(_layer1);
  63. }
  64.  
  65. function draw() {
  66.   _whichCanvas.image(_layer1, 0, 0);
  67.   image(_whichCanvas,0,0);
  68. }
  69.  
  70. function createbackground(layer){
  71.    
  72.   let iteration = 30;
  73.  
  74.   while(iteration > 0) {
  75.  
  76.       let randomRot = rotationValues[Math.round(random(0, 3))];
  77.       let rectWidth = random(_w * 0.1, _w * 0.8);
  78.       let rectHeight =  random(_h * 0.05, _h * 0.2);
  79.       let randX =  random(0, _w);
  80.       let randY =  random(0, _h);
  81.  
  82.       let randomGradient = Math.round(random(0, 3));
  83.  
  84.       let c1 = colorBackground[randomGradient][0];
  85.       let c2 = colorBackground[randomGradient][1];
  86.    
  87.       layer.translate(centerX, centerY);
  88.       layer.rectMode(CENTER);
  89.       layer.rotate(radians(randomRot));
  90.       layer.translate(-centerX, -centerY);
  91.  
  92.       setGradient(layer, randX, randY, rectWidth, rectHeight, c2, c1, X_AXIS);
  93.       layer.noStroke();
  94.       iteration--;
  95.   }
  96.  
  97. }
  98.  
  99. function setGradient(layer, x, y, w, h, c1, c2, axis) {
  100.  
  101.   let inter;
  102.  
  103.   if (axis == Y_AXIS) {  // Top to bottom gradient
  104.     for (let i = y; i <= y+h; i++) {
  105.       inter = map(i, y, y+h, 0, 1);
  106.       let c = lerpColor(c1, c2, inter);
  107.       layer.stroke(c);
  108.       layer.line(x, i, x+w, i);
  109.     }
  110.   }
  111.   else if (axis == X_AXIS) {  // Left to right gradient
  112.     for (let i = x; i <= x+w; i++) {
  113.      inter = map(i, x, x+w, 0, 1);
  114.       let c = lerpColor(c1, c2, inter);
  115.       layer.stroke(c);
  116.       layer.line(i, y, i, y+h);
  117.     }
  118.   }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement