Team:IIT Delhi/newpage

From 2014.igem.org

(Difference between revisions)
Line 1: Line 1:
{{CSS/Main}}
{{CSS/Main}}
{{CSS/newpage}}
{{CSS/newpage}}
-
 
<html>
<html>
 +
<head>
 +
<title>third</title>
 +
<style>
 +
/*some basic reset*/
 +
* {margin: 0; padding: 0;}
 +
canvas {display: block;}
 +
body {background: black;}
 +
center{color:white;}
 +
</style>
 +
</head>
 +
<body>
 +
<center><h1>igem iit delhi</h1></center>
 +
<script>
 +
//creating a canvas using JS
 +
var canvas = document.createElement("canvas");
 +
//making the canvas fullscreen
 +
var w = canvas.width = window.innerWidth;
 +
var h = canvas.height = window.innerHeight;
 +
 +
var fov = 250; //pixels are 250px away from us
 +
var ctx = canvas.getContext("2d");
 +
//appending the canvas to the body
 +
document.body.appendChild(canvas);
 +
//an array of pixels with 3 dimensional coordinates
 +
//a square sheet of dots separated by 5px
 +
var pixels = [];
 +
for(var x = -250; x < 250; x+=5)
 +
for(var z = -250; z < 250; z+=5)
 +
pixels.push({x: x, y: 40, z: z});
 +
 +
//time to draw the pixels
 +
function render()
 +
{
 +
ctx.clearRect(0,0,w,h);
 +
//grabbing a screenshot of the canvas using getImageData
 +
var imagedata = ctx.getImageData(0,0,w,h);
 +
//looping through all pixel points
 +
var i = pixels.length;
 +
while(i--)
 +
{
 +
var pixel = pixels[i];
 +
//calculating 2d position for 3d coordinates
 +
//fov = field of view = denotes how far the pixels are from us.
 +
//the scale will control how the spacing between the pixels will decrease with increasing distance from us.
 +
var scale = fov/(fov+pixel.z);
 +
var x2d = pixel.x * scale + w/2;
 +
var y2d = pixel.y * scale + h/2;
 +
//marking the points green - only if they are inside the screen
 +
if(x2d >= 0 && x2d <= w && y2d >= 0 && y2d <= h)
 +
{
 +
//imagedata.width gives the width of the captured region(canvas) which is multiplied with the Y coordinate and then added to the X coordinate. The whole thing is multiplied by 4 because of the 4 numbers saved to denote r,g,b,a. The final result gives the first color data(red) for the pixel.
 +
var c = (Math.round(y2d) * imagedata.width + Math.round(x2d))*4;
 +
imagedata.data[c] = 0; //red
 +
imagedata.data[c+1] = 255; //green
 +
imagedata.data[c+2] = 60; //blue
 +
imagedata.data[c+3] = 255; //alpha
 +
}
 +
pixel.z -= 1;
 +
if(pixel.z < -fov) pixel.z += 2*fov;
 +
}
 +
//putting imagedata back on the canvas
 +
ctx.putImageData(imagedata, 0, 0);
 +
}
 +
//animation time
 +
setInterval(render, 1000/30);
 +
</script>
 +
</body>
</html>
</html>

Revision as of 06:18, 24 March 2015

third

igem iit delhi