Synopsis

PDX_MSGT gdx_FaceRotateSurfFromSeam(long option, MDA_PTR gdx_face_ptr, int *status, PDX_BOOL *seam_touch, int *num_axis_touches)

Purpose

Rotate a surface for a face so that the seam crossing could be avoided

Description

Check if the seam crossing problem can be solved by rotating the surface; yes, the surface would be rotated if there is no other parent for this surface or a new surface would be created by rotating the original surface.

The model space curves must exist, otherwise the surface is considered as un-rotatable. In order to find the possible rotation angle, it is required that the model curves of each loop should be continuous, and the parm curves of each loop should be continuous except those ending points lying on the seam of the surface.

If the surface is rotated, all parm-curves will be deleted.

Input

option

GDX_KEEP_DEGEN_LOOPS

Keep all degenerate loops when deleting parm curves.

GDX_NO_IMPLICIT_OUTER

Do not generate implict outer

gdx_face_ptr

The valid GDX face database pointer

Output

status

GDX_SURF_REV_ROTATED

The surface has been rotated;

GDX_SURF_REV_UNCLOSED

The surface is an unclosed revolving surface;

GDX_SURF_REV_NO_SEAM_XING

The surface does not have seam crossing problem;

GDX_SURF_REV_UNROTATABLE

The seam crossing problem could not be solved by rotating the surface;

GDX_SURF_NOT_REV

The surface is not a revolving surface.

seam_touch

Flag indicating whether or not any loop touches the seam when GDX_SURF_REV_ROTATED or GDX_SURF_REV_NO_SEAM_XING returned.

num_axis_touches

Number of axis-touch loops, invalid if < 0

Return

      GDX_NOERR
      GDX_MODEL_LOOP_NOT_CONT
      GDX_PARM_LOOP_NOT_CONT
      Low level error return
      .fi