Is there need to distinguish between positions that have a height
above the ellipsoid and positions that are implicitly on the surface?
For example, it can be convenient to give a ground-based object a
lat/long but no height, and let the engine work out how best to place
it on the surface. Its actual height above the ellipsoid will vary
with position and with the level of detail of the terrain tile that it
is on. In this case, In this case, neither setting height to zero nor
continually recalculating height as the object moves or more terrain
detail is loaded feels quite right.
I'm not sure if separate Cartographic2 / Cartographic3 classes are the
best way to handle such a case. Another possibility is to use
Cartographic3s for such cases and store a "relative to surface /
relative to ellipsoid" flag somewhere, in which case Cartographic2 can
These are just thoughts...