JSFiddle - React, Tailwind, and code Playground

by Kirubel Girma

HTML

<body>

		<script src="https://raw.githubusercontent.com/mrdoob/three.js/master/build/three.js"></script>

		<script src="https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/Projector.js"></script>
		<script src="https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/CanvasRenderer.js"></script>
    </body>

CSS

body {
				background-color: #000000;
				margin: 0px;
				overflow: hidden;
			}
			a {
				color:#0078ff;
			}

JavaScript

var mouseX = 0, mouseY = 0,
			windowHalfX = window.innerWidth / 2,
			windowHalfY = window.innerHeight / 2,
			SEPARATION = 200,
			AMOUNTX = 10,
			AMOUNTY = 10,
			camera, scene, renderer;
			init();
			animate();
			function init() {
				var container, separation = 100, amountX = 50, amountY = 50,
				particles, particle;
				container = document.createElement('div');
				document.body.appendChild(container);
				camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
				camera.position.z = 100;
				scene = new THREE.Scene();
				renderer = new THREE.CanvasRenderer();
				renderer.setPixelRatio( window.devicePixelRatio );
				renderer.setSize( window.innerWidth, window.innerHeight );
				container.appendChild( renderer.domElement );
				// particles
				var PI2 = Math.PI * 2;
				var material = new THREE.SpriteCanvasMaterial( {
					color: 0xffffff,
					program: function ( context ) {
						context.beginPath();
						context.arc( 0, 0, 0.5, 0, PI2, true );
						context.fill();
					}
				} );
				var geometry = new THREE.Geometry();
				for ( var i = 0; i < 100; i ++ ) {
					particle = new THREE.Sprite( material );
					particle.position.x = Math.random() * 2 - 1;
					particle.position.y = Math.random() * 2 - 1;
					particle.position.z = Math.random() * 2 - 1;
					particle.position.normalize();
					particle.position.multiplyScalar( Math.random() * 10 + 450 );
					particle.scale.x = particle.scale.y = 10;
					scene.add( particle );
					geometry.vertices.push( particle.position );
				}
				// lines
				var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0xffffff, opacity: 0.5 } ) );
				scene.add( line );
				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
				document.addEventListener( 'touchstart', onDocumentTouchStart, false );
				document.addEventListener( 'touchmove', onDocumentTouchMove, false );
				//
				window.addEventListener( 'resize', onWindowResize,...