parent
1a30ee84b7
commit
3a1d505d8b
14 changed files with 2285 additions and 55 deletions
@ -0,0 +1,156 @@ |
|||||||
|
'use strict'; |
||||||
|
|
||||||
|
var BuoyAnalysisChart3 = { |
||||||
|
|
||||||
|
h: 258, |
||||||
|
|
||||||
|
w: 498, |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
*/ |
||||||
|
buildCamera: function() { |
||||||
|
var viewAngle = 45; |
||||||
|
var aspectRatio = BuoyAnalysisChart3.w / BuoyAnalysisChart3.h; |
||||||
|
var near = 1; |
||||||
|
var far = 10000; |
||||||
|
|
||||||
|
return new THREE.PerspectiveCamera(viewAngle, aspectRatio, near, far); |
||||||
|
}, |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
*/ |
||||||
|
getLighting: function() { |
||||||
|
var pointLight = new THREE.PointLight('#fff'); |
||||||
|
|
||||||
|
pointLight.position.x = 50; |
||||||
|
pointLight.position.y = 40; |
||||||
|
pointLight.position.z = 40; |
||||||
|
|
||||||
|
return [pointLight]; |
||||||
|
}, |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
*/ |
||||||
|
draw: function() { |
||||||
|
var renderer = new THREE.WebGLRenderer({ antialias: true }); |
||||||
|
renderer.setSize( BuoyAnalysisChart3.w, BuoyAnalysisChart3.h ); |
||||||
|
renderer.setClearColor('#fff'); |
||||||
|
|
||||||
|
document.getElementById('chart3').appendChild( renderer.domElement ); |
||||||
|
|
||||||
|
var scene = new THREE.Scene(); |
||||||
|
|
||||||
|
var mat = new THREE.LineBasicMaterial({ linewidth: 3, color: '#f0f' }); |
||||||
|
|
||||||
|
var axisHelper = new THREE.AxisHelper(500); |
||||||
|
scene.add(axisHelper); |
||||||
|
|
||||||
|
BuoyAnalysisChart3.getLighting().forEach(function(light) { |
||||||
|
scene.add(light); |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
var obj = new THREE.Object3D(); |
||||||
|
|
||||||
|
BuoyAnalysisMap.reticle.stations.forEach(function(station, index) { |
||||||
|
if (index > 0) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
var h, geo, mat, mesh; |
||||||
|
|
||||||
|
|
||||||
|
// Ribbons. Colorize stations.
|
||||||
|
var width = 40; |
||||||
|
var height = 300; |
||||||
|
var width_segments = 1; |
||||||
|
var height_segments = BuoyAnalysisData.years.end - BuoyAnalysisData.years.start; |
||||||
|
|
||||||
|
var geo = new THREE.PlaneGeometry(width, height, width_segments, height_segments); |
||||||
|
|
||||||
|
for (var year = BuoyAnalysisData.years.start, i = 0; year <= BuoyAnalysisData.years.end; year++, i++) { |
||||||
|
h = BuoyAnalysisData.stationJson[station]['a' + year]['wt']['y'] * 10; |
||||||
|
|
||||||
|
// if (h === 0) {
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// geo = new THREE.PlaneGeometry(30, 30, 1);
|
||||||
|
// mat = new THREE.MeshLambertMaterial( {color: 'rgb(100, 100, 0)'} );
|
||||||
|
// mesh = new THREE.Mesh( geo, mat );
|
||||||
|
|
||||||
|
// geo.applyMatrix( new THREE.Matrix4().makeTranslation( 0, 0, 0 ) );
|
||||||
|
// mesh.position.set((year - BuoyAnalysisData.years.start) * 32, index * 32, h);
|
||||||
|
// obj.add(mesh);
|
||||||
|
|
||||||
|
geo.vertices[2 * i].z = h; |
||||||
|
geo.vertices[2 * i + 1].z = h; |
||||||
|
} |
||||||
|
|
||||||
|
// for(var i = 0; i < plane.vertices.length / 2; i++) {
|
||||||
|
// plane.vertices[2 * i].z = Math.pow(2, i / 20);
|
||||||
|
// plane.vertices[2 * i + 1].z = Math.pow(2, i / 20);
|
||||||
|
// }
|
||||||
|
|
||||||
|
var mesh = new THREE.Mesh(geo, new THREE.MeshLambertMaterial({color: 0xccffcc})); |
||||||
|
mesh.material.side = THREE.DoubleSide; |
||||||
|
// mesh.doubleSided = true;
|
||||||
|
|
||||||
|
// mesh.rotation.y = Math.PI/2-0.5;
|
||||||
|
mesh.position.y = index * 100 + height / 2; |
||||||
|
obj.add(mesh); |
||||||
|
}); |
||||||
|
|
||||||
|
obj.position.set(150, 0, 0); |
||||||
|
scene.add(obj); |
||||||
|
|
||||||
|
var camX = -20; |
||||||
|
var camY = -300; |
||||||
|
var camZ = 150; |
||||||
|
|
||||||
|
var tgtX = 425; |
||||||
|
var tgtY = 300; |
||||||
|
var tgtZ = -20; |
||||||
|
|
||||||
|
|
||||||
|
// var geoCam = new THREE.BoxGeometry(10, 10, 10);
|
||||||
|
// var matCam = new THREE.MeshLambertMaterial( {color: '#f0f'} );
|
||||||
|
// var boxCam = new THREE.Mesh( geoCam, matCam );
|
||||||
|
|
||||||
|
// boxCam.position.set(camX, camY, camZ);
|
||||||
|
// scene.add(boxCam);
|
||||||
|
|
||||||
|
// var geoTgt = new THREE.BoxGeometry(10, 10, 10);
|
||||||
|
// var matTgt = new THREE.MeshLambertMaterial( {color: '#0ff'} );
|
||||||
|
// var boxTgt = new THREE.Mesh( geoTgt, matTgt );
|
||||||
|
|
||||||
|
// boxTgt.position.set(tgtX, tgtY, tgtZ);
|
||||||
|
// scene.add(boxTgt);
|
||||||
|
|
||||||
|
var camera = BuoyAnalysisChart3.buildCamera(); |
||||||
|
camera.up.set( 0, 0, 1 ); |
||||||
|
camera.position.set(camX, camY, camZ); |
||||||
|
|
||||||
|
var controls = new THREE.OrbitControls( camera, renderer.domElement ); |
||||||
|
controls.target = new THREE.Vector3(tgtX, tgtY, tgtZ); |
||||||
|
|
||||||
|
// // Range is 0 to Math.PI radians.
|
||||||
|
// controls.minPolarAngle = 50 * Math.PI / 180; // radians
|
||||||
|
// controls.maxPolarAngle = 90 * Math.PI / 180; // radians
|
||||||
|
|
||||||
|
// // How far you can orbit horizontally, upper and lower limits.
|
||||||
|
// // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].
|
||||||
|
// controls.minAzimuthAngle = -90 * Math.PI / 180; // radians
|
||||||
|
// controls.maxAzimuthAngle = 0 * Math.PI / 180; // radians
|
||||||
|
controls.update(); |
||||||
|
|
||||||
|
(function animate() { |
||||||
|
requestAnimationFrame(animate); |
||||||
|
renderer.render(scene, camera); |
||||||
|
controls.update(); |
||||||
|
})(); |
||||||
|
} |
||||||
|
}; |
@ -0,0 +1,8 @@ |
|||||||
|
#chart3 { |
||||||
|
border:1px solid #f00; |
||||||
|
height:260px; |
||||||
|
left:20px; |
||||||
|
position:absolute; |
||||||
|
top:640px; |
||||||
|
width:500px; |
||||||
|
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue