Ron Liu's Generative Flower

let canvasWidth = 1700;
let canvasHeight = 800;
 
function setup() {
  createCanvas(canvasWidth,canvasHeight)
   background(169, 213, 214);
  angleMode(DEGREES);
   frameRate(5);
  noLoop()
}
 
 
 
 
function pick (inputArray) {
  return inputArray[Math.floor(inputArray.length * Math.random())]
}
 
let colors = ["white,"]
 
function drawfantasticflower(){
for (let i = 0; i < n ; i++){
}
}
 
function redFlowers(){
  xposition = [10,200]
 
}
 
class BackgroundPattern {
  constructor (size, gColor, x,y)
  { this.backgroundSize = size;
    this.backgroundColor = gColor;
   this.xposition = randomRange(20,canvasWidth - 20);
    this.yposition = randomRange(y, 5 + y);
  }
  draw () {
    fill("pink");
    rect(this.xposition, this.yposition, this.backgroundSize, this.backgroundSize);
    fill("black")
    ellipse(this.xposition+10, this.yposition+10, this.backgroundSize, this.backgroundSize)
    fill("white")
    rect(this.xposition+15, this.yposition+15,this.backgroundSize, this.backgroundSize)
 
  }
}
 
function randomRange (min, max) {
  return min + ((max-min) * Math.random())
}
 
class FantasticFlower{
  constructor (fsize,fcolor,maxX,maxY)
  {this.color = pick(colors);
    this.fantasticflowersize=fsize;
   this.fantasticflower=fcolor;
   this.xposition = randomRange(300,maxX);
    this.yposition = randomRange(50,maxY);
  }
  draw(number){
fill(color("beige"));
    scale(this.fantasticflowersize);
translate(this.xposition,this.yposition)
//translate(width / 2, height / 2);
     for (let i = 0; i < number ; i++) {
        rotate(27)
 
       fill(this.color)
          ellipse(70,120,20,100)
       if (this.fantasticflowersize < 0.5) {fill(77, 219, 197)} else {fill(51, 64, 62)};
       if (this.fantasticflowersize > 0.49) {rect(60,90,20,70)} else {ellipse(60,90,20,50)
        if (this.fantasticflowersize > 0.75){traingle(80,50,70)} else {square(60,30,20)}
};
 
 
    }
    resetMatrix()
    translate(200,600)
    //translate(width / 2, height / 2)
    for (let i = 0; i < number ; i++) {
        rotate(10)
 
    }
 
 resetMatrix()
 
  }}
 
function buildArray (n, fillFunction) {
  let outputArray = [];
  for (let i = 0; i < n; i++) {
    outputArray.push(fillFunction(i))
  }
  return outputArray
}
 
//let largeShapes = buildArray(100,i => new FantasticFlower(5, "small", 80, 80));
 
let smallShapes = buildArray(100,i => new FantasticFlower(0.25, "small", 6200, 3000));
 
let mediumShapes = buildArray(20,i => new FantasticFlower(0.5, "medium", 1600, 1600));
 
function backgroundPatternArray (number,x,y) {
    let outputArray = [];
    for (let i = 0; i < number ; i++) {
        outputArray.push(new BackgroundPattern (10,"orange",x + (i * 35),y))
    }
    return outputArray
}
 
 function Background2 (startingX, startingY, numberOfArrays, arrayLength) {
  for(let i = 0; i < numberOfArrays ; i++){
    let myBackground = backgroundPatternArray (arrayLength, startingX, startingY+(i*35));
    for(let i = 0; i < myBackground.length ; i++){
      myBackground[i].draw()
    }
  }
}
 
function draw() {
  Background2 (20,20,22,200);
  //let fantasticflower2 = new FantasticFlower (1, "black", 40, 156);
  //fantasticflower2.draw(40);
   smallShapes.forEach(x => x.draw(40))
     mediumShapes.forEach(x => x.draw(40))
}