//Brandon Darreff
//Section A
//bdarreff@andrew.cmu.edu
//Project-03
function setup() {
createCanvas(600, 400, WEBGL);
}
function draw() {
var orbitMe = frameCount * 0.001; //Mercury orbit speed
var orbitV = frameCount * 0.0001; //Venus orbit speed
var orbitE = frameCount * 0.01; //Earth orbit speed
var orbitM= frameCount * 0.01; //Mars orbit speed
var orbitJ = frameCount * 0.07; //Jupiter orbit speed
var orbitS = frameCount * 0.01; //Saturn orbit speed
var orbitU = frameCount * 0.05; //Uranus orbit speed
var orbitN = frameCount * 0.05; //Neptune orbit speed
var res = 100 //resolution of spheres
background(0);
//sunlight tracked to mouse position
var sunlightY = (mouseY / height - 0.5) * (-2);
var sunlightX = (mouseX) / width - 0.5;
pointLight(250, 250, 250, sunlightX, sunlightY, 0);
//Mercury
translate(-width, -350);
push();
//orbit
rotateZ (orbitMe);
rotateX (orbitMe);
rotateY (orbitMe);
//surface color
ambientMaterial(100);
sphere(20, res);
pop();
//Venus
translate(height / 4, height / 4);
push();
//orbit
rotateZ (orbitV);
rotateX (orbitV);
rotateY (orbitV);
//surface color
ambientMaterial(174, 103, 58);
sphere(30, res);
pop();
//Earth
translate(height / 4, height / 4);
push();
//orbit
rotateZ (orbitE);
rotateX (orbitE);
rotateY (orbitE);
//surface color
ambientMaterial(32, 67, 100);
sphere (35, res);
pop();
//object orbiting earth
push();
ambientMaterial(255, 30);
rotateY(orbitE);
rotateX(orbitE)
ellipse(-87, 90, 200, 100, 100, 0);
pop();
//Mars
translate(height / 4, 70);
push();
//orbit
rotateZ (orbitM);
rotateX (orbitM);
rotateY (orbitM);
//surface color
ambientMaterial(131, 51, 44);
sphere(25, res);
pop();
//object orbiting mars
push();
ambientMaterial(255, 30);
rotateZ(orbitE);
ellipse(-87, 90, 100, 80, 100, 0);
pop();
//Jupiter
translate(200, 120);
push();
//orbit
rotateZ (orbitJ);
rotateX (orbitJ);
rotateY (orbitJ);
//surface color
ambientMaterial(199, 142, 87);
sphere(150, res);
pop();
//object orbiting jupiter
push();
ambientMaterial(255, 30);
rotateX(orbitJ);
ellipse(-87, 90, 200, 100, 100, 0);
pop();
//Saturn
translate(260, 120);
push();
//orbit
rotateZ (orbitS);
rotateX (orbitS);
rotateY (orbitS);
//surface color
ambientMaterial(210, 169, 121);
sphere(120, res);
pop();
//object orbiting saturn
push();
ambientMaterial(255, 30);
rotateX(orbitS);
rotateY(orbitS);
ellipse(-87, 90, 500, 100, 100, 0);
pop();
//Uranus
translate(210, 75);
push();
//orbit
rotateZ (orbitU);
rotateX (orbitU);
rotateY (orbitU);
//surface color
ambientMaterial(104, 179, 205);
sphere(70, res);
pop();
//Neptune
translate(180, 75);
push();
//orbit
rotateZ (orbitN);
rotateX (orbitN);
rotateY (orbitN);
//surface color
ambientMaterial(97, 136, 202);
sphere(70, res);
pop();
//object orbiting neptune
push();
ambientMaterial(255, 25);
rotateX(orbitN);
rotateY(orbitN);
rotateZ(orbitN);
ellipse(-87, 90, 300, 100, 100, 0);
pop();
}
With this project I focused on creating a dynamic drawing which mimics changing sunlight on spheres meant to represent planets. Each planet rotates around its own axis at a rate derived from its respective actual rotation speed and additional objects are set into motion around various planet axises. The sunlight projected onto the spheres is tracked by the position of the mouse to add another dynamic variable to the overall image.