PK_TOPOL_fctab_vertex_point_t   

struct PK_TOPOL_fctab_vertex_point_s
       {
       int        *point;
       int        length;
       };
typedef struct PK_TOPOL_fctab_vertex_point_s
               PK_TOPOL_fctab_vertex_point_t;

Used in:

PK_TOPOL_facet_r_t


This is a support structure for PK_TOPOL_facet_r_t, it is not used in
PK_TOPOL_facet_2. It is an indexed table which maps vertex indices (topology)
into a table of 'point' indices (geometry).

Facet vertices are of three types: those at original model vertices, those
on original model edges and those representing interior points in a face.

With interior facet vertices, there is one surface normal and a single set
of parameter and derivative data at each vertex.

With exterior facet vertices part-way along model edges, there are two surface
normals and two sets of parameter and derivative data at each vertex.

With exterior vertices at original model vertices, there are N such normals
and N sets of such data for the N faces meeting at the vertex (where N >= 2)

The facet topology tables are defined using separate vertex indices for
each model face.


Example
The diagram shows the top, front and right hand side faces of a cube with
two triangular facets on each face (shown in an 'exploded' schematic form).

                             v4-------v3
                            /  \      /  /v11
                           /    \    /  / |
                          /      \  /  /  |
                         v1-------v2  /   |
                          _________  v12__|
                         |v5     v8| |   /v10
                         |     /   | |  /
                         |   /     | | /
                         |v6     v7| |/v9
                          ---------

  facets on the  top   face are defined as "v1  v2  v4" and "v2   v3  v4"
  facets on the front  face are defined as "v5  v6  v8" and "v6   v7  v8"
  facets on the r.h.s. face are defined as "v9 v10 v12" and "v10 v11 v12")

Using the returned subscript:

Each vertex index can be used as a subscript into the following tables :

    vertex_point                   (for the index of its point value)
    vertex_normal                  (for the index of its surface normal vector)
    param_uv, param_dp, param_d2p  (for the index into its parameterisation
                                    and derivative data)

Shared geometry:

Facet vertices from adjacent faces (which have been facetted with the 'match'
mesh option set to PK_TOPOL_facet_match_topol_c ) which meet at the same
position will refer to the same vertex_point index.

In the example above, the vertex_point entries at vertex indices v2, v8, v12
refer to the same integer value, an index in the 'point_vec' vector table.

This reduces the volume of geometric data output and allows an application to
infer this association from vertex indices having the same vertex_point value.

The vertex normal index is provided because the number of vertex normals
is different from the number of vertex point coordinates (there being more
than one normal across a model edge or at a model vertex). This level of
indirection allows Parasolid to identify cases where vertices of planar
facets refer to the same surface normal value and construct the vertex_normal
table so that it refers to the same vector entry in the 'normal_vec' table.

The 'vertex_param' index is provided as a common index to the parameter
and derivative data tables. Parasolid does not identify common entries
in these tables and so these have the same number of entries as there
are distinct fin vertices.