home *** CD-ROM | disk | FTP | other *** search
- /* apfeat.h
- * (C) Copyright 1988-1992 by Autodesk, Inc.
- *
- * This program is copyrighted by Autodesk, Inc. and is licensed
- * to you under the following conditions. You may not distribute
- * or publish the source code of this program in any form. You
- * may incorporate this code in object form in derivative works
- * provided such derivative works are (i.) are designed and
- * intended to work solely with Autodesk, Inc. products, and
- * (ii.) contain Autodesk's copyright notice "(C) Copyright
- * 1988-1992 by Autodesk, Inc."
- *
- * AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
- * AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF MER-
- * CHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
- * DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
- * UNINTERRUPTED OR ERROR FREE.
- */
-
- typedef unsigned long ap_Featid;
-
- typedef enum
- {
- AP_LINE ,
- AP_ELLIPSE ,
- AP_HYPERBOLA ,
- AP_PARABOLA ,
- AP_CYLCYL,
- AP_CONCON,
- AP_OTHER
- } Ap_edgetype; /* edge type */
-
- typedef enum
- {
- AP_PLANAR ,
- AP_CYLINDRICAL ,
- AP_CONICAL ,
- AP_SPHERICAL ,
- AP_TOROIDAL
- } Ap_facetype; /* face type */
-
- typedef struct
- {
- Ap_facetype ap_face_type;
- ap_Real ap_r, ap_maj, ap_min; /* assigned when applicable */
- ap_Real ap_rx, ap_ry; /* assigned when applicable */
- ap_Real ap_perimeter; /* sum of edges */
- ads_point ap_outnorm; /* outward normal of plane */
- ap_Trans3d ap_face_rm; /* current rigid motion */
- } ap_FaceInfo;
-
- typedef struct ap_facelist
- {
- ap_Featid l_face_id; /* The Unique Face Id of the surface */
- ap_FaceInfo l_face; /* Information of that Surface */
- struct ap_facelist *l_facenext; /* Pointer to the next Surface */
- } ap_FaceList;
-
-
- typedef enum
- {
- AP_PT_FAILED,
- AP_PT_INVALID,
- AP_PT_OFFSOLID,
- AP_PT_ONSOLID,
- AP_PT_INSOLID
- }Ap_pt_class; /* point classification */
-
- typedef struct
- {
- Ap_pt_class s_class;
- ap_Real s_parm1;
- ap_Real s_parm2;
- } ap_Edgeseg;
-
- typedef struct ap_seglist
- {
- ap_Edgeseg l_seg;
- struct ap_seglist *l_segnext;
- } ap_SegList;
-
- struct ap_lineseg
- {
- ap_Real t0, t1;
- };
-
- struct ap_ellseg
- {
- ap_Real ru, rv, t0, t1;
- };
-
- struct ap_parseg
- {
- ap_Real fourp, t0, t1;
- };
-
- struct ap_hypseg
- {
- ap_Real a, b, t0, t1;
- };
-
- struct ap_ccseg
- {
- ap_Real a, b, c, d, e, f, g, h, i, radx, rady, sign, t0, t1;
- };
-
- struct ap_kkseg
- {
- ap_Real a, b, c, d, e, f, g, h, i, alpha, beta, sign, t0, t1;
- };
-
- typedef struct
- {
- Ap_edgetype ap_edge_type;
- ap_Real ap_edge_len; /* length of the edge */
- ap_Bool ap_edge_convex; /* true if two planar surfaces are convex */
- union
- {
- struct ap_lineseg lin;
- struct ap_ellseg ell;
- struct ap_parseg par;
- struct ap_hypseg hyp;
- struct ap_ccseg cce;
- struct ap_kkseg kke;
- }ap_param;
- ads_point ap_endpt1, ap_endpt2; /* end points of the edge */
- ap_Trans3d ap_edge_rm; /* current rigid motion */
- } ap_EdgeInfo;
-
- typedef struct ap_edgelist
- {
- ap_Featid l_edge_id; /* unique Edge ID for a edge */
- ap_EdgeInfo l_edge; /* Edge Information of that Edge */
- struct ap_edgelist *l_edgenext; /* Pointer to the Next Edge */
- } ap_EdgeList;
-
- typedef struct ap_param
- {
- ap_Real param1;
- ap_Real param2;
- }ap_Param;
-
-