{
 "metadata": {
  "name": ""
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "# Interactive 3D Solar System\n",
      "\n",
      "This notebook can be used in two ways.\n",
      "\n",
      "To enable a live Mayavi scene\n",
      "that you can rotate with the mouse\n",
      "and scale with the `+` and `-` keys,\n",
      "set the following value to `False`.\n",
      "\n",
      "But if you are a contributor to the project\n",
      "who wants to re-render the inline images\n",
      "for a fresh presentation of this notebook online,\n",
      "set the following value to `True`."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "take_screenshots = True"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%pylab wx\n",
      "if take_screenshots:\n",
      "    %pylab inline"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Populating the interactive namespace from numpy and matplotlib\n",
        "Populating the interactive namespace from numpy and matplotlib"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from mayavi import mlab\n",
      "from mayavi.sources.builtin_surface import BuiltinSurface\n",
      "from sgp4.earth_gravity import wgs72\n",
      "from skyfield.constants import AU_KM\n",
      "from skyfield.api import JulianDate, nine_planets, earth\n",
      "\n",
      "pylab.rcParams['figure.figsize'] = (8.0, 8.0)\n",
      "\n",
      "mlab.figure(bgcolor=(0.0, 0.0, 0.0))\n",
      "planet_color = (0.7, 1.0, 1.0)\n",
      "yellow = (1.0, 1.0, 0.0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# One Earth year\n",
      "\n",
      "day_array = arange(1, 366.3, 0.25)\n",
      "jd = JulianDate(utc=(2014, 6, day_array, 0, 0, 0))\n",
      "print 'Start:', jd.tt[0]\n",
      "print 'End:  ', jd.tt[-1]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Start: 2456809.50078\n",
        "End:   2457174.75078\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def reposition_camera(distance, focalpoint=(0.0, 0.0, 0.0)):\n",
      "    \"\"\"Move the camera above the solar system.\"\"\"\n",
      "    mlab.view(azimuth=90.0, elevation=360.0 - 23.4,\n",
      "              distance=distance, focalpoint=focalpoint)\n",
      "    if take_screenshots:\n",
      "        imshow(mlab.screenshot(antialiased=True))\n",
      "        axis('off')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Get ready to draw!\n",
      "\n",
      "mlab.clf()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Our first step will be drawing the orbits of the planets\n",
      "over the period of a single Earth year.\n",
      "Note that we are plotting positions in astronomical units (AU),\n",
      "so that the radius of the Earth\u2019s orbit in the plot\n",
      "should be roughly 1.0.\n",
      "Positioning our camera at a distance of 10\u00a0AU\n",
      "shows us the four inner planets, out to the orbit of Mars:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "for planet in nine_planets:\n",
      "    x, y, z = planet(jd).position.AU\n",
      "    mlab.plot3d(x, y, z, color=planet_color,\n",
      "                tube_radius=None, line_width=2.0)\n",
      "    print planet.jplname, '- plotted', len(x), 'points'\n",
      "\n",
      "reposition_camera(10.0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "mercury - plotted 1462 points\n",
        "venus"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " - plotted 1462 points\n",
        "earth"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " - plotted 1462 points\n",
        "mars"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " - plotted 1462 points\n",
        "jupiter"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " - plotted 1462 points\n",
        "saturn"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " - plotted 1462 points\n",
        "uranus"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " - plotted 1462 points\n",
        "neptune"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " - plotted 1462 points\n",
        "pluto"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " - plotted 1462 points\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAGICAYAAACdhuOfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABh9JREFUeJzt3LENgEAMBEGMvv+WTQXEi8RMA/fZysnP7u4FACTu+gEA\n8GdCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAoVOMzkwxCwCZtx+lXcQAEBJiAAgJ\nMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQ\nEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgB\nICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQ\nA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAh\nIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgA\nQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkx\nAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABAS\nYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEg\nJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBAD\nQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEh\nBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABC\nQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEA\nhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJi\nAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAk\nxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANA\nSIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEG\ngJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJC\nDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCE\nhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIA\nCAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTE\nABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BI\niAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaA\nkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIM\nACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISE\nGABCQgwAISEGgJAQA0DoFKO7W8wCwOe4iAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgB\nICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAIQe1sMNDRInXCEAAAAA\nSUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0xe04c38c>"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We have to step much farther back from the scene,\n",
      "to a distance of over 100\u00a0AU,\n",
      "to bring the orbits of the outer planets and Pluto into view.\n",
      "\n",
      "Jupiter and Saturn are the planets which, over one Earth year,\n",
      "have travelled the blue arcs shown close in against the bottom edge\n",
      "of the inner Solar System.\n",
      "Uranus and then Neptune have moved only small fractions\n",
      "of their huge orbits up near the top of the diagram,\n",
      "while minor planet Pluto sits at the right size of the diagram."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "reposition_camera(110.0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAGICAYAAACdhuOfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABh9JREFUeJzt3LENgEAMBEGMvv+WTQXEi8RMA/fZysnP7u4FACTu+gEA\n8GdCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAoVOMzkwxCwCZtx+lXcQAEBJiAAgJ\nMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQ\nEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgB\nICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQ\nA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAh\nIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgA\nQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkx\nAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABAS\nYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEg\nJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBAD\nQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEh\nBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABC\nQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEA\nhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJi\nAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAk\nxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANA\nSIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEG\ngJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJC\nDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCE\nhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIA\nCAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTE\nABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BI\niAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaA\nkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIM\nACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISE\nGABCQgwAISEGgJAQA0DoFKO7W8wCwOe4iAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgB\nICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAIQe1sMNDRInXCEAAAAA\nSUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0xd901eac>"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The scale of the Solar System is many times larger\n",
      "than the diameters of any of the objects within it.\n",
      "Even the Sun, which is by far the largest object in the system,\n",
      "cannot easily be seen\n",
      "unless we move in close to the orbit of Mercury:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Draw a sphere for the Sun\n",
      "\n",
      "sun_r = 695500.0 / AU_KM  # km\n",
      "sphere = mlab.points3d(0, 0, 0, name='Sun',\n",
      "      scale_mode='none', scale_factor=sun_r * 2.0,\n",
      "      color=yellow, resolution=50)\n",
      "\n",
      "reposition_camera(distance=1.3)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAGICAYAAACdhuOfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABh9JREFUeJzt3LENgEAMBEGMvv+WTQXEi8RMA/fZysnP7u4FACTu+gEA\n8GdCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAoVOMzkwxCwCZtx+lXcQAEBJiAAgJ\nMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQ\nEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgB\nICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQ\nA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAh\nIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgA\nQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkx\nAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABAS\nYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEg\nJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBAD\nQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEh\nBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABC\nQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEA\nhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJi\nAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAk\nxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANA\nSIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEG\ngJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJC\nDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCE\nhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIA\nCAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTE\nABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BI\niAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaA\nkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIM\nACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISE\nGABCQgwAISEGgJAQA0DoFKO7W8wCwOe4iAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgB\nICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAIQe1sMNDRInXCEAAAAA\nSUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0xe4554cc>"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The Earth by contrast is tiny.\n",
      "To even see it,\n",
      "the camera must zoom in very close to the Earth\u2019s orbit \u2014\n",
      "close enough that you can see the gap\n",
      "between where the Earth was sitting at the end of 2013\n",
      "and where it was sitting at the end of 2014.\n",
      "The gap between what ought to be \u201cthe same position\u201d each year\n",
      "is due to the different positions of the other planets,\n",
      "whose gravity tugs and distorts the Earth\u2019s orbit in a different direction\n",
      "every year:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Add the Earth\n",
      "\n",
      "x, y, z = earth(JulianDate(tt=jd.tt[-1])).position.AU\n",
      "r = wgs72.radiusearthkm / AU_KM\n",
      "ocean_blue = (0.4, 0.5, 1.0)\n",
      "sphere = mlab.points3d(x, y, z, name='Globe',\n",
      "    scale_mode='none', scale_factor=r * 2.0,\n",
      "    color=ocean_blue, resolution=50)\n",
      "#sphere.actor.property.specular = 0.20\n",
      "#sphere.actor.property.specular_power = 10\n",
      "\n",
      "reposition_camera(distance=0.025, focalpoint=(x, y, z))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAGICAYAAACdhuOfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABh9JREFUeJzt3LENgEAMBEGMvv+WTQXEi8RMA/fZysnP7u4FACTu+gEA\n8GdCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAoVOMzkwxCwCZtx+lXcQAEBJiAAgJ\nMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQ\nEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgB\nICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQ\nA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAh\nIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgA\nQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkx\nAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABAS\nYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEg\nJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBAD\nQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEh\nBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABC\nQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEA\nhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJi\nAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAk\nxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANA\nSIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEG\ngJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJC\nDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCE\nhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIA\nCAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTE\nABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BI\niAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaA\nkBADQEiIASAkxAAQEmIACAkxAISEGABCQgwAISEGgJAQA0BIiAEgJMQAEBJiAAgJMQCEhBgAQkIM\nACEhBoCQEANASIgBICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAISE\nGABCQgwAISEGgJAQA0DoFKO7W8wCwOe4iAEgJMQAEBJiAAgJMQCEhBgAQkIMACEhBoCQEANASIgB\nICTEABASYgAICTEAhIQYAEJCDAAhIQaAkBADQEiIASAkxAAQEmIACAkxAIQe1sMNDRInXCEAAAAA\nSUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0xe602b2c>"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The tiny dark-blue dot in the center,\n",
      "at the top of the orbit segment that enters from the bottom,\n",
      "is our home.\n",
      "\n",
      "If you view this live in a Mayavi window,\n",
      "be sure to first press `+` (or the same key un-shifted, `=`)\n",
      "several times to zoom in on the Earth\n",
      "and get a feeling for its size.\n",
      "Then press `-` until you have zoomed back out\n",
      "to the size of the Solar System,\n",
      "to get a feel for how different the scales are!"
     ]
    }
   ],
   "metadata": {}
  }
 ]
}