PK_BODY_loft_face_clamp_t   

struct PK_BODY_loft_face_clamp_s
    {
    int                n_faces;     --- number of clamping faces and clamped
                                    --- edges (0)
    const PK_FACE_t   *faces;       --- array of clamping faces (NULL)
    const PK_EDGE_t   *edges;       --- array of clamped edges (NULL)
    int                n_magnitudes;--- number of magnitudes for scaling loft
                                    --- derivatives at clamped vertices (0)
    const double      *magnitudes;  --- array of magnitudes for scaling loft
                                    --- derivatives at clamped vertices (NULL)
    int                n_vertices;  --- number of vertices with scaling (0)
    const PK_VERTEX_t *vertices;    --- array of vertices with scaling (NULL)
    };

typedef struct PK_BODY_loft_face_clamp_s PK_BODY_loft_face_clamp_t;



This structure contains two pairs of parallel arrays. The first pair hold
the clamping faces and the edges where face clamps are to be applied. The
second pair hold scaling factor magnitudes and the vertices where loft
derivatives are scaled relative to the default values.

Used in:

PK_BODY_loft_deriv_conds_t


Across all entries of 'edges', the loft derivatives are determined such
that the tangent planes of the loft there are matched with those of the
corresponding faces. A default value for the derivative magnitude of the
loft derivative is internally determined for every clamped profile or guide
vertex. Magnitude control is achievable through the use of vertex and magnitude
pair. The actual magnitude of the loft derivative at any vertex specified
in 'vertices' is the product of the supplied relative magnitude of the
vertex specified as a corresponding entry of 'magnitudes' and the default
magnitude value there.

Edges of the profile or guide that are not given in 'edges' are not clamped to
a face.

If used in conjuction with a vector clamp, as a composite clamp, the directions
of the loft derivative are inferred from the vector clamp.

The face clamp structure has the following fields :

'n_faces'           The number of faces held in the structure. This must be
                    equal to or less than the number of edges on the profile or
                    guide.

'faces'             An array of faces, one for each clamped edge of the
                    profile or guide. The faces may belong to different bodies.
                    The faces must be ordered to correspond with the entries
                    of 'edges'.

'edges'             An array of edges where loft derivatives are clamped by
                    corresponding entries of 'faces'.

                    Note that for backwards compatibility purposes, 'edges' may
                    be set to NULL in some cases, which has the same effect as
                    making it the collection of all edges of the profile
                    ordered around the body starting at the edge whose start
                    vertex is the profile's start vertex.

                    The start vertex will be understood to be the first
                    vertex on an open profile, and the specified start
                    vertex on a closed profile.

                    If some edges are to be left unclamped, or in the case of a
                    guide wire, 'edges' may not be set to NULL.

'n_magnitudes'      The number of magnitudes for scaling loft derivatives
                    at vertices specified in 'vertices'.

'magnitudes'        An optional array of doubles, one for each vertex entry
                    in 'vertices' or a single scalar "constant" as scaling
                    factor for the loft derivative at the vertex relative
                    to an internally determined default value. Setting this
                    field to NULL has the same effect as having unity for all
                    individual components of the 'magnitudes' array. This
                    field can be set to NULL only if 'vertices' is also set
                    to NULL.

                    When clamping a profile, if there are guide wires specified
                    for the loft, the loft derivative along any guide wire is
                    completely determined. The entries in 'magnitudes' field
                    for those vertices of the profile that have matches on
                    guide wires must be set to unity to ensure the use of the
                    default values.

                    Similarly, when clamping a guide wire, the entries in
                    'magnitudes' for those vertices of the guide that have
                    matches on profiles must be set to unity.

                    Magnitudes may only be specified for vertices on an edge
                    which has been face clamped.

'n_vertices'        The number of vertices with clamp magnitude control.

'vertices'          An optional array of vertices where the loft derivatives
                    are multiplied by corresponding entries in 'magnitudes'.
                    This field should be set to NULL if 'magnitudes' is NULL.

                    For backwards compatibility purposes, this field may in
                    some cases be set to NULL when 'magnitudes' is not NULL,
                    which has the same effect as making it the collection of
                    all vertices of the profile ordered around the body
                    starting at the start vertex.

                    In the case of a guide wire, or if some edges are to
                    be left unclamped, then 'vertices' should be explicitly
                    set.