Monday, December 20, 2010

Book Title and OpenGlobe Update

Previously, I mentioned we were working on finalizing our book's title. Now it's finalized:

   3D Engine Design for Virtual Globes

I think the "3D Engine Design" branding will help get the book more attention by developers who might not initially think they are interested in virtual globes. Many book's have nicknames, so we're calling ours the Virtual Globe Book for short. Let's see if it sticks.

This blog still remains as Virtual Globe and Terrain Rendering. Since it is about more than just our book (or at least it will be), it doesn't need to stay in sync with the book's title. The url will not change either.

In other news, all of our example code now runs on Linux. After our first port, two examples needed more work.

Finally, we changed the license for the example code from the boost license to the MIT license, mainly because the MIT license is more popular. All we care about is that readers, and random people that stumble upon our code, can use it unrestricted, including in commercial applications.

Saturday, December 18, 2010

Math Foundations

We haven't been writing chapters in the order they will appear in our book. The most recent chapter, Math Foundations, is no exception. It will be Chapter 2, but is basically the last chapter I am writing. After this, I only have to finish the introduction and smooth out a few other sections. Kevin has a similar amount of work left, so we are on schedule!

This chapter is not on math foundations for general 3D graphics; rather, it is on useful mathematics for virtual globes, with a focus on ellipsoids. This chapter is unique in that it contains some derivations, but we are computer science practitioners, not mathematicians, so it also provides working code in a handy Ellipsoid class. Our colleague, Jim Woodburn, helped significantly with the derivations.

This chapter covers:
  • Geographic (longitude, latitude, height) and WGS84 (x, y, z) coordinates.
  • Ellipsoids
    • Oblate spheroids (Earth's shape).
    • Surface normals: geodetic vs. geocentric.
    • Conversion between geographic and WGS84 coordinates.
    • Scaling a arbitrary point in space to the ellipsoid surface.
    • Curves on ellipsoids.
I also wrote two related examples applications, one demonstrating geodetic and geocentric surface normals, and another for computing curves on an ellipsoid by slicing a plane through it. Here's a video of the later: