====== Surprising Space: Movement, Gradation, Radiation, and Anomaly ======
By: [[yuna-wu|Yuna Wu]]
let x, y;
var stars = [];
function setup() {
createCanvas(1800,780)
//Stars
for (var i = 0; i < 1000; i++) {
stars[i] = new Star();
}
// Starts in the middle
x = width / 2;
y = height / 2;
//radiation
//noLoop();
}
class Planet {
constructor (pSize, sColor, startingX, startingY)
{ this.planetSize = pSize;
this.planetColor = sColor;
this.positionX = startingX;
this.positionY = startingY;
}
draw () {
colorMode(RGB, 255)
noStroke();
fill(240, 235, 221);
ellipse(this.positionX+80, 85, 150, 150);
fill(201, 195, 177)
ellipse(this.positionX+40, 85, 30, 50);
ellipse(this.positionX+100, 60, 50, 40);
ellipse(this.positionX+100, 120, 40, 45);
}
}
class UFO {
constructor (startingX, startingY, scale)
{ this.positionX = startingX;
this.positionY = startingY;
this.scale = scale;
}
draw () {
colorMode(RGB, 255)
noStroke();
scale(this.scale);
fill(57, 44, 153);
rect(this.positionX+220, this.positionY+1, 6, 35, 20);
circle(this.positionX+223, this.positionY+6, 10);
fill(215, 215, 224);
ellipse(this.positionX+226, this.positionY+46, 75, 45);
fill(161, 161, 230);
ellipse(this.positionX+226, this.positionY+66, 115, 45);
fill(12, 72, 105);
ellipse(this.positionX+226, this.positionY+66, 19, 19);
fill(131, 133, 138);
ellipse(this.positionX+205, this.positionY+55, 10, 10);
ellipse(this.positionX+200, this.positionY+75, 10, 10);
ellipse(this.positionX+185, this.positionY+60, 10, 10);
ellipse(this.positionX+245, this.positionY+55, 10, 10);
ellipse(this.positionX+250, this.positionY+75, 10, 10);
ellipse(this.positionX+265, this.positionY+60, 10, 10);
resetMatrix();
}
}
function uFOArray (n) {
let outputArray = [];
for (let i = 0; i < n ; i++) {
outputArray.push(new UFO (10+(i*3), 120, (i*0.15)))
}
return outputArray
}
let myUFOs = uFOArray(8);
//black hole
class blackHole {
constructor(startingX, startingY, s) {
this.positionX = startingX;
this.positionY = startingY;
this.size = s
}
draw() {
noStroke();
colorMode(HSB, 360, 100, 100);
let dim = this.size;
let radius = dim/2;
//let h = random(0, 360);
let h = 10;
let b = 0;
for (let r = radius; r > 0; --r) {
fill(h, 100, b);
ellipse(this.positionX, this.positionY, r, r);
h = (h + 0.2) % 360;
b = b+1
fill(0)
ellipse(this.positionX, this.positionY,55, 55);
}
}
}
//Rockets class
class Rocket {
constructor(startingX, startingY) {
this.positionX = startingX;
this.positionY = startingY
}
draw() {
translate(this.positionX+180,this.positionY+50);
rotate(radians(-10));
//fire
//fill(252, 210, 104);
//ellipse(248, 406, 85, 185);
//fill(122, 34, 24);
//ellipse(248, 406, 55, 155);
//rocket
fill(191, 187, 187);
rect(200, 250, 95, 155, 20);
fill(201, 71, 71);
triangle(200, 265, 295, 265, 248, 175);
ellipse(248, 306, 55, 55);
fill(186, 219, 230);
ellipse(248, 306, 45, 45);
noFill();
stroke(255);
resetMatrix();
}
}
// star class //
class Star {
constructor() {
this.x = random(width);
this.y = random(height);
this.size = random(0.25, 3);
this.t = random(TAU);
}
draw() {
this.t += 0.1;
var scale = this.size + sin(this.t) * 2;
fill(255)
noStroke();
ellipse(this.x, this.y, scale, scale);
}
}
function draw() {
background(1, 3, 28);
//stars
for (var i = 0; i < stars.length; i++) {
stars[i].draw();
}
let blackHole1 = new blackHole (500, 200, 500)
blackHole1.draw();
colorMode(RGB, 255)
let g = drawingContext.createLinearGradient(200,250, 200,500);
g.addColorStop(0, color(225,0));
g.addColorStop(0.5, color(180, 208, 240));
g.addColorStop(1, color(225,0));
drawingContext.fillStyle = g;
noStroke();
square(0,0,1800)
//rocket
colorMode(RGB, 255)
let g2 = drawingContext.createLinearGradient(280,250, 150,800);
g2.addColorStop(0, color(255));
g2.addColorStop(0.2, color(255, 180, 0));
g2.addColorStop(1, color(45, 3, 0));
drawingContext.fillStyle = g2;
translate(this.positionX+180,this.positionY+50);
rotate(radians(-10));
ellipse(426, 620, 95, 485);
resetMatrix();
let g3 = drawingContext.createLinearGradient(350, 340, 250,500);
g3.addColorStop(0, color(255));
g3.addColorStop(0.5, color(255, 249, 194));
g3.addColorStop(0.9, color(194, 164, 16));
g3.addColorStop(1, color(200, 100, 0));
drawingContext.fillStyle = g3;
translate(this.positionX+180,this.positionY+50);
rotate(radians(-10));
ellipse(426, 520, 75, 205);
resetMatrix();
//plante
let planet1 = new Planet (10, "blue", 10, 10)
planet1.draw();
let rockest1 = new Rocket(10, 10)
rockest1.draw();
for(let i = 0; i < myUFOs.length ; i++){
myUFOs[i].draw()
}
}
Back to [[yuna-wu|Yuna Wu's Page]]