<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>
<? if (!empty($_GET['s'])) {
    
$s intval($_GET['s']);
} else {
    
$s 250;
?>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!--
Copyright 2008 Google Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<title>Earth Stereoscopic view</title>
<meta name="description" content="Stereoscopic Earth view using Google Earth browser plugin" />
<meta name="keywords" content="stereographics, google earth, 3D, stereoscapes, cross view, GIS, geographic" />

  <script src="http://www.google.com/jsapi?key=ABQIAAAAw3BrxANqPQrDF3i-BIABYxQJqY1rPYzEgN6DCh6NXOCZP6CbIBQMW79KO5x4CXyX-_qTpdPBavy7xA"></script>
  <script type="text/javascript">
google.load("earth", "1");
google.load("maps", "2.99");

var geMaster, geSlave;
var geocoder;
var laMaster, laSlave;
var camMaster, camSlave;
var distPOV = -0.0000002 ; // to adjust points of view

function el(e) { return document.getElementById(e); }

// 2008-06-12 "José Antonio Meira da Rocha" <joseantoniorocha@gmail.com>
function seno(degrees) {
    return Math.sin(degrees * (Math.PI/180)) * distPOV * laMaster.getRange();
}
function coseno(degrees) {
    return Math.cos(degrees * (Math.PI/180)) * distPOV * laMaster.getRange();
}
// end Meira code

function syncSlave() {
  if (geMaster && geSlave && laMaster && laSlave) {
    laMaster = geMaster.getView().copyAsLookAt(geMaster.ALTITUDE_RELATIVE_TO_GROUND);
    laSlave.set(
        laMaster.getLatitude()  - seno(laMaster.getHeading()), // Meira: Add Vert POV offset
        laMaster.getLongitude() + coseno(laMaster.getHeading()), // Meira: Add Horiz POV offset
        laMaster.getAltitude(), laMaster.getAltitudeMode(), 
        laMaster.getHeading(), laMaster.getTilt(),
        laMaster.getRange()
    );
    geSlave.getView().setAbstractView(laSlave);            
   }
}

function init() {
  geocoder = new google.maps.ClientGeocoder();

  // Create the earths
  google.earth.createInstance(
    "geMaster",
    function(object) {
      geMaster = object;
      geMaster.getLayerRoot().enableLayerById(geMaster.LAYER_BORDERS, true);
      geMaster.getLayerRoot().enableLayerById(geMaster.LAYER_BUILDINGS, true);
      geMaster.getOptions().setAtmosphereVisibility(true);
      laMaster = geMaster.createLookAt('');
      camMaster = geMaster.createCamera('');
      object.getWindow().setVisibility(true);
    },
    function(object) {});
  google.earth.createInstance(
    "geSlave",
    function(object) {
      geSlave = object;
      geSlave.getLayerRoot().enableLayerById(geSlave.LAYER_BORDERS, true);
      geSlave.getLayerRoot().enableLayerById(geSlave.LAYER_BUILDINGS, true);
      geSlave.getOptions().setAtmosphereVisibility(true);
      geSlave.getOptions().setFlyToSpeed(geSlave.SPEED_TELEPORT);
      laSlave = geSlave.createLookAt('');
      camSlave = geSlave.createCamera('');
      google.earth.addEventListener(geSlave, 'frameend', syncSlave);
      object.getWindow().setVisibility(true);
    },
    /***
     * This function will be called if plugin fails to load, in case
     * you need to handle that error condition.
     ***/
    function(object) {});
}

function submitLocation() {
  var address = el('address').value;
  geocoder.getLatLng(
    address, 
    function(point) {
      if (point && geMaster != null)
        var la = geMaster.createLookAt('');
        la.set(point.y, point.x, 0, geMaster.ALTITUDE_RELATIVE_TO_GROUND, 
               100, 0, 1000000);
        geMaster.getView().setAbstractView(la);
    }
  );
}

</script>

<style>
body {color:#89f;background-color:#000;font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;}
h1 {font-size:16pt;line-height:16pt;margin:0;padding:0;}
h3 {font-size:12pt;line-height:10pt;margin:0;padding:0;}
table, form {margin:0;padding:0;}
td {vertical-align:middle;}
a:link,a:visited {color:#6c6;}
input {background-color:#db6;border:thin solid #363;}
</style>

</head>
<body onload='init()' id='body'>
<br/><br/><br/><br/><br/><center>
  <table width="<? echo ($s*2); ?>px" height="<? echo $s?>px" align="center">
    <tr>
      <td width=48% height="<? echo $s?>px">
        <div id='geMasterContainer' style='border: 0px solid silver; height: 100%;'>
          <div id='geMaster' style='height: 100%;'></div>
        </div>
      </td>
      <td width=48% height="<? echo $s?>px">
        <div id='geSlaveContainer' style='border: 0px solid silver; height: 100%;'>
          <div id='geSlave' style='height: 100%;'></div>
        </div>
      </td>
    </tr>
  </table></center>

<br/><br/>
<p style="color:gray; font-size:0.7em">Scroll down for more info</p>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>

<hr/>
<p>FROM <a 
href="http://www.meiradarocha.jor.br/earth/stereo-earth.html">http://www.meiradarocha.jor.br/earth/stereo-earth.html</a>, <br/>
Modified by nearby to make size made adjustable (in the url) and the ads and distacting stuff removed to hopefully make it easier to 
view...</p>
<hr/>

  <table>
    <tr>
      <td><h1>Stereoscopic Earth</h1></td>
      <td>
        <form action='javascript:submitLocation();void(0);'>
          <input type=text size=30 id='address'></input>
          <input type=submit value='Go to location'>
        </form>
      </td>
      <td><h3><a href="http://www.vision3d.com/methd04.html">How to see Stereoscopic Earth (cross view)</a></h3></td>
     </tr>
  </table>


<br>Mouse controls left pane. Right pane is slave.
<br><a href="http://meiradarocha.jor.br/news/">Meira da Rocha home page</a>. <a href="mailto:joseantoniorocha@gmail.com">Talk to Prof. Ms. José Antonio Meira da Rocha.</a>
  
</body>
</html>