Output from sp.cpp

	sp.cpp is run as follows:

	% sp < filename.in > filename.out

i.e., it takes its input from stdin and writes to stdout.  Here we
describe the form of the output file.

1. nV: Number of vertices (= number of paths).
2. One line per path, with the following structure:
   Number of faces traversed by path.
   Then a sequence of three numbers for each face:
      Face index of face traversed
      Global index of a vertex on that face.
      Fraction of the edge ccw following that vertex where the path crosses.
3. Global index of the source vertex

The output file always consists of nV+2 lines, for there is a path
to each of the nV vertices.  Even the zero-length path from the source
to itself is output as one line.  The paths are output in the order
determined by the global index of the vertices.  Thus, the paths are
not in general angularly sorted about the source vertex.

The paths are described from the source to the destination vertex.  
Thus the first point is always the source point.  However, please note 
that the source is not always described exactly the same way.  So, in 
the cube.notop.out example, these two lines both start at the source:

2 1 6 1 2 6 0.5
3 0 5 -0 7 4 0.666667 9 7 0.5

Here the source point has global vertex index 5, but vertex 6
is connected to 5 by an edge of face 1.  So face 1, vertex 6,
fraction along edge = 1 is the source point.  Thus the source
point might be described as either being fraction = 0 from itself,
or fraction = 1 along any incident edge.  The global index of the
source vertex is the final line of the file, which we found useful
for subsequent graphics processing.

The output is produced by a 10-line function PrintPath() in sp.cpp,
and can easily be modified to suit different purposes.  The above
data was chosen because from this information and the 3D coordinates
of the vertices, it is easy to construct the path to each vertex
as a collection of 3D segments.

Research supported by NSF grant CCR-9731804.
Last Update: