In a previous entry, I described a simple method for horizon culling. That method determined if one sphere, the occluder, occluded another sphere, the occludee, for example if a planet represented as a bounding sphere occluded a satellite represented as a bounding sphere. In this entry, I’ll describe how to find if a planet occludes a part of itself. Normally, I write out all the math; however given my time constraints and in the interest of me finally writing another blog, I’ll forego that.
3D GIS applications invariably render the Earth and other planets. A planet is generally organized as a hierarchy of terrain tiles of varying levels of detail. As the viewer moves closer and closer to particular part of a planet, higher and higher fidelity tiles are rendered. The Virtual Terrain Project has a nice list of terrain rendering algorithms. Frustum culling techniques are normally first applied to tiles, so that only tiles inside the view frustum are rendered. Next, horizon culling is applied.