| <!doctype html> | |
| <html> | |
| <head> | |
|   <title>Graph 3D camera position</title> | |
| 
 | |
|   <style> | |
|     body {font: 10pt arial;} | |
|     td {font: 10pt arial} | |
|   </style> | |
| 
 | |
|   <script type="text/javascript" src="../../dist/vis.js"></script> | |
| 
 | |
|   <script type="text/javascript"> | |
|     var data = null; | |
|     var graph = null; | |
| 
 | |
|     function custom(x, y) { | |
|       return (Math.sin(x/50) * Math.cos(y/50) * 50 + 50); | |
|     } | |
| 
 | |
|     // callback function, called when the camera position has changed | |
|     function onCameraPositionChange() { | |
|       // adjust the values of startDate and endDate | |
|       var pos = graph.getCameraPosition(); | |
|       document.getElementById('horizontal').value = parseFloat(pos.horizontal.toFixed(3)); | |
|       document.getElementById('vertical').value   = parseFloat(pos.vertical.toFixed(3)); | |
|       document.getElementById('distance').value   = parseFloat(pos.distance.toFixed(3)); | |
|     } | |
| 
 | |
|     // set the camera position | |
|     function setCameraPosition() { | |
|       var horizontal = parseFloat(document.getElementById('horizontal').value); | |
|       var vertical = parseFloat(document.getElementById('vertical').value); | |
|       var distance = parseFloat(document.getElementById('distance').value); | |
|       var pos = { | |
|         horizontal: horizontal, | |
|         vertical: vertical, | |
|         distance: distance | |
|       }; | |
|       graph.setCameraPosition(pos); | |
| 
 | |
|       // retrieve the camera position again, to get the applied values | |
|       onCameraPositionChange(); | |
|     } | |
| 
 | |
|     // Called when the Visualization API is loaded. | |
|     function drawVisualization() { | |
|       // Create and populate a data table. | |
|       data = new vis.DataSet(); | |
|       // create some nice looking data with sin/cos | |
|       var steps = 50;  // number of datapoints will be steps*steps | |
|       var axisMax = 314; | |
|       var axisStep = axisMax / steps; | |
|       for (var x = 0; x < axisMax; x+=axisStep) { | |
|         for (var y = 0; y < axisMax; y+=axisStep) { | |
|           var value = custom(x,y); | |
|           data.add([ | |
|             {x:x,y:y,z:value,t:0,style:value} | |
|           ]); | |
|         } | |
|       } | |
| 
 | |
|       // specify options | |
|       var options = { | |
|         width:  '600px', | |
|         height: '600px', | |
|         style: 'surface', | |
|         showPerspective: true, | |
|         showGrid: true, | |
|         showShadow: false, | |
|         keepAspectRatio: true, | |
|         verticalRatio: 0.5 | |
|       }; | |
| 
 | |
|       // create our graph | |
|       var container = document.getElementById('mygraph'); | |
|       graph = new vis.Graph3d(container, data, options); | |
| 
 | |
|       graph.on('cameraPositionChange', onCameraPositionChange); | |
|     } | |
|   </script> | |
|    | |
| </head> | |
| 
 | |
| <body onload="drawVisualization()"> | |
| <h1>Graph 3d camera position</h1> | |
| <table> | |
|   <tr> | |
|     <td>Horizontal angle (0 to 2*pi)</td> | |
|     <td><input type="text" id="horizontal" value="1.0"></td> | |
|   </tr> | |
|   <tr> | |
|     <td>Vertical angle (0 to 0.5*pi)</td> | |
|     <td><input type="text" id="vertical" value="0.5"></td> | |
|   </tr> | |
|   <tr> | |
|     <td>Distance (0.71 to 5.0)</td> | |
|     <td><input type="text" id="distance" value="1.7"></td> | |
|   </tr> | |
|   <tr> | |
|     <td></td> | |
|     <td><input type="button" value="Set" onclick="setCameraPosition();"></td> | |
|   </tr> | |
| </table> | |
| 
 | |
| <div id="mygraph"></div> | |
| 
 | |
| <div id="info"></div> | |
| </body> | |
| </html>
 |