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