Ingram's Surprising Space: Movement

by Ingram chung

  function setup() {
  createCanvas(1700, 800);
  //frameRate(5);
  noLoop()
}

let shapes = ["ellipse","triangle","rect"];

let colors = ["pink","yellow","white","red","lavender"]

function pick (inputArray) {
  return inputArray[Math.floor(inputArray.length * Math.random())]
}
// start from 75 (tip of ellipse, 150/2), since ellipse is 150 wide
function buildArray (n, fillFunction) {
  let outputArray = [];
  for (let i = 0; i < n; i++) {
    outputArray.push(fillFunction(i))
  }
  return outputArray
}

    function randomRange (min, max) {
  return min + ((max-min) * Math.random())
}

class SuperNova {
  constructor (xposition,yposition,maxSize,myColor)
  { this.color = pick(colors);
    this.shape = pick(shapes);// start from 75 (tip of ellipse, 150/2), since ellipse is 150 wide
    //this.xposition = randomRange(400,1750);
    this.xposition = xposition;
    this.yposition = yposition;
    this.size = randomRange(1,maxSize);
  }

  draw () {
   
  fill(this.color);
  translate(this.xposition,this.yposition);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size   , 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
    
 resetMatrix()
  }
}

class Star {
  constructor (xposition,yposition,maxSize,myColor)
  { this.color = pick(colors);
    this.shape = pick(shapes);// start from 75 (tip of ellipse, 150/2), since ellipse is 150 wide
    //this.xposition = randomRange(400,1750);
    this.xposition = xposition;
    this.yposition = yposition;
    this.size = randomRange(1,maxSize);
  }

  draw () {
    if (this.color == "white") 
    {this.xposition > 275 && this.xposition < 800; 
    } 
    if (this.color == "pink" && "red")
    {this.size * 2;
    }
    
    //if (this.xposition > 500 && (this.xposition = 600));
    if (this.xposition > 500);

    {   stroke(255);
//  fill(255, 244, 25);
  
  // left side random color flowers
  fill(this.color);
  translate(this.xposition,this.yposition);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);  
  rotate(radians(40));
  ellipse(75, 0, 150 * this.size, 50);
    }
    
 resetMatrix()
  }
}

// check buildArray on the wiki to make 10 objects

let nova = buildArray (1, x => new SuperNova(900,400,15,"white"));

let g = drawingContext.createLinearGradient(500, 250, -10, -30, -10, 90);
g.addColorStop(1, 'rgb(0,0,0)k');
g.addColorStop(0.5, '#9E9E9E');
g.addColorStop(0, 'rgb(255,255,255)');
drawingContext.fillStyle = g;
triangle(500, 250, -10, -30, -10, 90);
noStroke();

function draw() {
  background(20);
  console.log (nova);
  nova.forEach ( x => x.draw());
}