Skip to content

Instantly share code, notes, and snippets.

@phil
Created April 5, 2016 19:19
Show Gist options
  • Save phil/bb0141d8342369c27d5faa198cebbed5 to your computer and use it in GitHub Desktop.
Save phil/bb0141d8342369c27d5faa198cebbed5 to your computer and use it in GitHub Desktop.
Simple procedural Galaxy Renderer using Javascript and Canvas
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Grids!</title>
<style type="text/css">
body {
background-color:black;
margin:0px;
overflow : hidden;
}
</style>
</head>
<body bgcolor="white">
<script>
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var context = canvas.getContext('2d');
var stars = new Array();
//setInterval(draw, 1000/30);
function draw() {
//c.clearRect(0,0,canvas.width, canvas.height);
//c.fillStyle = 'rgba(0,0,0,0.05)';
//c.fillRect(0,0,canvas.width, canvas.height);
context.save();
context.translate(canvas.width/2, canvas.height/2);
//while(particles.length>200) particles.shift();
context.fillStyle = 'black'
context.strokeStyle = '#fa00ff';
context.lineWidth = 5;
context.moveTo(0, 0);
context.lineTo(0, 375);
context.stroke();
context.restore();
}
function random(min, max) {
return Math.random() * (max-min) + min;
}
//function fibN(n){
// var series = [1, 2];
// while(series.length < n){
// var length = series.length;
// series.push(series[length-1] + series[length-2]);
// }
// return series[series.length-1];
//}
function generateMasterSeed(){
var series = [1, Number(random(1, 25).toFixed())];
while(series.length < 100){
var length = series.length;
series.push(series[length-1] + series[length-2]);
}
// cut first 2 digits of the numbers
//for(i=0;i<series.length;i++){
// var str = series[i];
// if (str.length > 2) {
// str = str.slice(3);
// }
// series[i] = str;
//}
var seedNumbers = series.join("");
var splitNumbers = seedNumbers.split("");
var seedNumbers2 = [];
for(i=0; i<= splitNumbers.length; i++){
if (splitNumbers[i] != "0"){
seedNumbers2.push(splitNumbers[i]);
}
}
console.log(seedNumbers2.join(""));
seedNumbers = seedNumbers2.join("");
console.log(seedNumbers.length);
return seedNumbers;
}
function drawStar(c, star) {
c.beginPath();
c.arc(star.x,star.y, star.size, 2 * Math.PI, false);
c.fillStyle = "white";
c.fill();
}
function drawStars() {
context.translate(canvas.width/2, canvas.height/2);
for(i=0; i < 56; i++){
star = new Star(i);
//drawStar(context, seedNumbers.slice(sliceStart, sliceEnd),
//seedNumbers.slice(sliceStart+3, sliceEnd+4));
drawStar(context, star);
}
}
function Seed(seed){
this.cache = seed;
console.log(this.cache);
this.get = function(index, size){
return this.cache.slice(index, index+size);
}
this.number = function(index, size){
return Number(this.cache.slice(index, index+size));
}
}
function Star(idx){
this.size = 2;
this.idx = idx
this.seed = new Seed(masterSeed.get(idx+3, 10));
console.log(this.seed);
this.generatePoint = function(idx){
p = this.seed.number(idx, 3);
if(this.seed.number(idx, 1) >= 5){
p = -p;
}
multiplier = this.seed.number(6, 1);
return (p / multiplier) / 2;
}
this.x = this.generatePoint(this.seed.number(1, 1));
this.y = this.generatePoint(this.seed.number(8, 1));
console.log(this);
}
var masterSeed = new Seed(generateMasterSeed());
drawStars();
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment