Synopsis

PDX_MSGT gdx_FaceImproveInOutLoopDir(long option, double devtol, long maxits, int fitdeg, MDA_PTR *gdx_face_ptr, PDX_BOOL *corrected)

Purpose

Improve the Inner/Outer loops for a face

Description

This function is to improve the inner/outer loops for a face.

The parameter space curves will be used to figure out the dirctional information. They will be generated in this routine if not available. The function will check if the loops in parameter space are closed or not, yes, it will figure out the loop directional information and return PDX_TRUE as the status flag @corrected; no, it will exit with PDX_FALSE as the status flag, which means the loops might be crossing poles or seams of its surface if they are closed in model space. If @corrected is PDX_FALSE, the first_is_outer flag on the face will be set to FALSE.

The input Face and its loops would be deleted, and a new Face along with its loops and edges would be created if the flag @corrected is PDX_TRUE. However, the data base pointers of the edge curves would be kept unchanged.

An option is required. If GDX_FIX_LOOP_DIRS option is set, then the loop directions will be improved after inner/outer loop order is fixed. If the GDX_NO_FIX_LOOP_DIRS option is set, just the inner/outer loop order will be fixed. The face can only have one outer loop.

The loops must not intersect or touch each other, each loop must not self-intersect, and an inner loop must not enclose another loop.

Input

option

GDX_FIX_LOOP_DIRS

Fix the loop directions after in/out sorting

GDX_NO_FIX_LOOP_DIRS

Do not Fix the loop directions

devtol

Sampled points on the model space curve, M(t), should not deviate from the surface or from the image under S(u,v) of P(s) more than this value. This tolerance should be larger than MODEL_SPACE_PNT_TOL, at least by 1 to 2 orders of magnitude. This will be used if parm curves need to be generated.

maxits

Maximum number of iterations when generating parm curves. Iteration will be stopped if this number is exceeded.

fitdeg

Degree used for fitting.

gdx_face_ptr

The valid GDX Face database pointer

Output

gdx_face_ptr

The new GDX Face database pointer

corrected

Flag indicating if the loop directional information can be improved

Return

      GDX_NOERR
      Low level error return
      .fi