Select Git revision
three.js_lines.html
-
Neil Gershenfeld authoredNeil Gershenfeld authored
three.js_lines.html 2.73 KiB
<html>
<!--
three.js_lines.html
Neil Gershenfeld 5/12/15
three.js line-drawing test
-->
<head>
<style>
body {margin:0px;overflow:hidden;}
</style>
</head>
<body>
<div id="container"></div>
<script src="js/three.min.js"></script>
<script src="js/stats.min.js"></script>
<script>
var renderer,scene,camera,stats,lines,dx,dy
init()
animate()
function init() {
var width = window.innerWidth
var height = window.innerHeight
var aspect = height/width
if (aspect > 1)
camera = new THREE.OrthographicCamera(-1,1,-aspect,aspect,0,2)
else
camera = new THREE.OrthographicCamera(-1/aspect,1/aspect,-1,1,0,2)
camera.position.z = 1
scene = new THREE.Scene()
root = new THREE.Object3D()
var linegeom = new THREE.Geometry()
var nlines = 1000
dx = []
dy = []
for (var i = 0; i < nlines; ++i) {
linegeom.vertices.push(
new THREE.Vector3(2*Math.random()-1,2*Math.random()-1,0),
new THREE.Vector3(2*Math.random()-1,2*Math.random()-1,0)
)
dx.push(0.02*(Math.random()-.5))
dx.push(0.02*(Math.random()-.5))
dy.push(0.02*(Math.random()-.5))
dy.push(0.02*(Math.random()-.5))
}
lines = new THREE.Line(linegeom,
new THREE.LineBasicMaterial({color:0x000000,linewidth:2}),
THREE.LinePieces)
scene.add(lines)
renderer = new THREE.WebGLRenderer({antialias:true})
renderer.setClearColor(0xffffff,1)
renderer.setSize(width,height)
var container = document.getElementById('container')
container.appendChild(renderer.domElement)
stats = new Stats()
stats.domElement.style.position = 'absolute'
stats.domElement.style.top = '0px'
container.appendChild(stats.domElement)
window.addEventListener('resize',resize,false)
}
function resize() {
aspect = window.innerHeight/window.innerWidth
if (aspect > 1) {
camera.left = -1
camera.right = 1
camera.bottom = -aspect
camera.top = aspect
}
else {
camera.left = -1/aspect
camera.right = 1/aspect
camera.bottom = -1
camera.top = 1
}
camera.updateProjectionMatrix()
renderer.setSize(window.innerWidth,window.innerHeight)
}
function animate() {
render()
stats.update()
requestAnimationFrame(animate)
}
function render() {
for (var i = 0; i < (lines.geometry.vertices.length); ++i) {
lines.geometry.vertices[i].x += dx[i]
if ((lines.geometry.vertices[i].x < -1)
|| (lines.geometry.vertices[i].x > 1))
dx[i] = -dx[i]
lines.geometry.vertices[i].y += dy[i]
if ((lines.geometry.vertices[i].y < -1)
|| (lines.geometry.vertices[i].y > 1))
dy[i] = -dy[i]
}
lines.geometry.verticesNeedUpdate = true
renderer.render(scene,camera)
}
</script>
</body>
</html>