A Library for Spherical Geometry with an Application to Visibility Computations

Eric Shaffer

Advisor: Ravi Janardan

Plan B Master's Project

This work was completed in partial fulfillment of the requirements for an MS degree from the
Department of Computer Science and Engineering, University of Minnesota.

Overview

Computational geometry, as a discipline, is concerned with providing efficient algorithmic solutions to problems involving geometric entities such as points, lines, polygons, polyhedra, and freeform curves and surfaces. Historically, the focus within the field has been on theoretical investigation. Today however, computational geometry is in transition. There is a conscious shift toward the applied. As a result, there is a need for working libraries of geometric code. This project is step toward meeting that need. It provides implementations of three basic algorithms for solving geometric problems on the unit sphere. The efficacy of these implementations is demonstrated via an application which computes directions of visibility for the surfaces of non-convex polyhedra.

A PDF copy of the full report on the project and associated library is available here.

The Algorithms

Click on any image for a larger view.
 
Hemisphericity

The "hemisphericity" operation takes a set of points on the surface of the unit sphere and determines if that point set can be contained within a hemisphere. If the answer is in the affirmative, the algorithm constructs a bounding hemisphere. This is shown in the image to the right, the hemisphere is represented by blue "circle with a handle." 

 

 

 

Spherical Convex Hull

Given a set points on the unit sphere, spherical convex hull constructs a convex spherical polygon of minimal area that bounds the set.

 

Hemisphere Intersection

Given a set of hemispheres, this algorithm finds the convex spherical polygon formed by their intersection. In the image to the right, the hemispheres are shown as the circles with handles, and the intersection is shown as a green edged polygon (somewhat difficult to see, as it runs along the boundaries of the hemispheres).

sph_hemx.gif (27387 bytes)

Application to Visibility Computations

The algorithms in the library can be used to compute directions of visibility for the surfaces of polyhedra. If you take a single facet, you can imagine collecting all the lines of sight that hit the surface. In accord with intuition, these lines will all fall within 90 degrees of the normal vector of the facet. If we map these vectors to points on the unit sphere, we get a hemisphere.
When the polyhedron has an identation, or "pocket", the visibility for a facet within the pocket is limited; the other facets within the pocket block some lines of sight. In this case, we can compute a visibility map, or "V-Map", that is formed by intersecting the visibility hemisphere for each

V-Maps have numerous applications, particularly in Numerically-Controlled Machining (NC-Machining). Here, a machine head needs to have access to all surfaces on an object. Within a single setup, or orientation of the object, the head will generally not be able to access all surfaces. Since changing setups is time-consuming, it is desirable to find setups that maximize the number of surfaces that are hit. This optimization problem can be solved using the notion of visibility maps.
 
 
Non-Convex Polyhedron

A pocket can be seen in the polyhedron 
pictured to the right, shown as a shaded 
region.

Pocket Finding

A modified 3D convex hull algorithm 
can be used to find what facets are in 
pockets and group them accordingly. 
To the right, the algorithm has 
determined three facets reside in a 
single pocket, shown in blue.

Compute Visibility Maps

Here we see the "visibility map" 
for the blue pocket drawn on the 
surface of a sphere. It is formed 
by intersecting the hemispheres 
of visibility corresponding to each 
of the facets in the pocket.

Project to Plane

As a final step, the visibility map is 
projected to the plane.  Conventional 
planar geometric algorithms can 
then be used to solve optimization 
problems such as the NC-machining 
example mentioned above.


 

A 3-Pocket Example

Shown below is a somewhat more complicated, three pocket polyhedron and the resulting visibility maps.