PK_TOPOL_render_facet_go_o_t   

struct PK_TOPOL_render_facet_go_o_s
    {
    int                       o_t_version;  --- version of PK option struct
    PK_facet_go_normals_t     go_normals;   --- whether to output GO face
                                            --- normals
                                            --- (PK_facet_go_normals_no_c)
    PK_facet_go_parameters_t  go_parameters;
                                            --- whether to output GO surf
                                            --- parameters [PF]
                                            --- (PK_facet_go_parameters_no_c)
    PK_facet_go_curvatures_t  go_curvatures;
                                            --- whether to output GO
                                            --- principal directions and
                                            --- curvatures of the face
                                            --- (PK_facet_go_curvatures_no_c)
    PK_facet_go_edges_t       go_edges;     --- whether to output GO edge
                                            --- entities
                                            --- (PK_facet_go_edges_no_c)
    PK_facet_go_strips_t      go_strips;    --- whether to output facets in
                                            --- strips
                                            --- (PK_facet_go_strips_no_c)
    int                       go_max_facets_per_strip;
                                            --- associated max value (0)
    PK_facet_go_interleaved_t go_interleaved;
                                            --- whether to interleave the
                                            --- output of faces from
                                            --- different bodies
                                            --- (PK_facet_go_interleaved_no_c)
    PK_facet_split_strip_t    split_strips; --- whether to split facet strips
                                            ---(PK_facet_split_strip_no_c)
    PK_facet_consistent_parms_t
                              consistent_parms;
                                            --- whether to force parameters at
                                            --- vertices in each facet to lie
                                            --- within half a period of each
                                            --- other
                                            ---(PK_facet_consistent_parms_no_c)

    };
typedef struct PK_TOPOL_render_facet_go_o_s PK_TOPOL_render_facet_go_o_t;



Selection of graphics output (GO) options for PK_TOPOL_render_facet_o_t


Specific Errors:
    PK_ERROR_bad_value            PK_facet_go_strips_yes_c needs value > 1
                                  (MILD)
    PK_ERROR_bad_combination      'consistent_parms' set to
                                  PK_facet_consistent_parms_fa_c and 'degen'
                                  set to PK_facet_degen_single_vx_c (MILD)
                                  'go_curvatures' set to
                                  PK_facet_go_curvatures_yes_c and 'go_normals'
                                  set to PK_facet_go_normals_no_c (MILD)
                                  'go_curvatures' set to
                                  PK_facet_go_curvatures_yes_c and
                                  'go_parameters' set to either
                                  PK_facet_go_parameters_d1_c or
                                  PK_facet_go_parameters_d2_c (MILD)

Used in:

PK_TOPOL_render_facet_o_t


  This selects which additional data are output through GO

    - face normals
    - surface parameters
    - first and second order derivatives of the surface parameterisation
    - principal directions and curvatures of the face
    - model edge entities

  and how these are output.

  See here for more information.


  GO_PARAMETERS:
  If derivatives are requested, the cross product dPdu X dPdv points in the
  same direction as the surface normal. This is true except in the case where
  a transform is supplied for which PK_TRANSF_classify on the transform returns
  a matrix_type of PK_matrix_type_reflection_c. In this case, each dPdu X dPdv
  points in the opposite direction to the corresponding surface normal.
  
  Note: First and second derivatives are only returned for members of 'topols'
        with classic geometry.

  GO_CURVATURES:
  Maximum and minimum curvatures are returned as the principal curvature
  values.  The principal curvature with the smallest absolute value is always
  returned as the first principal curvature, irrespective of whether it
  represents the maximum or minimum curvature. Likewise the principal curvature
  with the largest absolute value is returned as the second principal
  curvature.
  
  The sign of the curvature is positive if the face curves away from the face
  normal direction.
  
  If the principal curvatures are equal (in both sign and magnitude) then the
  principal directions are not significant.
  
  At singularities the principal curvature directions returned will be (0,0,0)
  and the principal curvatures will be zero.
  
  Note: If 'go_curvatures' is set to PK_facet_go_curvatures_yes_c then
        'go_normals' must be set to PK_facet_go_normals_yes_c and
        'go_parameters' must be set to either PK_facet_go_parameters_no_c or
        PK_facet_go_parameters_d0_c.

  INTERLEAVED FACETS:
  Facets may be output in one of two ways: all facets for a particular body are
  output before facets belonging to any other body are output, or, the facets
  of faces of the bodies being facetted can be interleaved.
  
  Setting the 'go_interleaved' option to PK_facet_go_interleaved_yes_c allows
  facets from any one of the bodies for which a body segment is open to be
  output.  Facets are output on a face by face basis rather than a body by
  body basis: in cases where there are multiple instances selecting this
  option should reduce the peak memory of facetting.
  
  Interleaved facetting has the additional advantage of being multi-threaded.
  
  When the function is running concurrently, facets may also be interleaved
  with facets from calls to PK_TOPOL_render_facet in other threads that are
  also facetting concurrently.

  FACET STRIPS:
  Setting the 'go_strips' option to PK_facet_go_strips_yes_c will result in
  facets being output through the GO in strips where possible (some individual
  facets may also be output).  The 'go_max_facets_per_strip' option can be used
  to limit the number of facets per strip.
  
  The 'split_strips' option allows facet strips on periodic surfaces to be
  split so that the strips do not span more than a single period on the
  surface.  The permitted values for the 'split_strips' option are:
                  PK_facet_split_strips_no_c  (default)
                  PK_facet_split_strips_yes_c
  
  The control of the parameterisation of the strip can be obtained via the
  'consistent_parms' option described below.
  

  CONSISTENT PARAMETERS:
  The 'consistent_parms' option only has an effect on periodic surfaces,
  setting this to either PK_facet_consistent_parms_su_c or
  PK_facet_consistent_parms_fa_c ensures surface parameters for facet vertices
  within a given facet lie within half a period of each other.
  
  If facets are being output as strips each strip will be composed of
  consistently parameterised triangular facets.  All triplets of vertices
  within the strip will have surface parameters that lie within half a period
  of each other.
  
  If the 'consistent_parms' option is set to PK_facet_consistent_parms_su_c
  then one facet vertex within the facet or strip will have parameters in the
  first period and all other vertices within the facet or strip will be made
  consistent with this.
  
  Setting 'consistent_parms' to PK_facet_consistent_parms_fa_c only produces
  different results from PK_facet_consistent_parms_su_c if the facets do not
  cover the whole of the period.  In this case each facet vertex is given a
  unique parameter value. Facet vertices that fall within the face uvbox, as
  returned from PK_FACE_find_uvbox, will have parameters lying inside this box.
  All other facet vertices will be made consistent with those inside the
  face's uvbox.  In cases where the facets do not span the whole of the period
  but the face uvbox is the whole period, some facet vertices may not lie
  inside the face's uvbox.
  
  The permitted values for the 'consistent_parms' option are:
                  PK_facet_consistent_parms_no_c  (default)
                  PK_facet_consistent_parms_su_c
                  PK_facet_consistent_parms_fa_c
  
  If 'degen' in the 'control' options supplied to PK_TOPOL_render_facet is set
  to PK_facet_degen_single_vx_c and 'consistent_parms' is set
  to PK_facet_consistent_parms_fa_c PK_ERROR_bad_combination will be returned.