home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / p / p024 / 15.img / AME2.LIB / APFEAT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-17  |  3.3 KB  |  143 lines

  1. /*    apfeat.h
  2.  *    (C) Copyright 1988-1992 by Autodesk, Inc.
  3.  *
  4.  *    This program is copyrighted by Autodesk, Inc. and is  licensed
  5.  *    to you under the following conditions.  You may not distribute
  6.  *    or  publish the source code of this program in any form.   You
  7.  *    may  incorporate this code in object form in derivative  works
  8.  *    provided  such  derivative  works  are  (i.) are  designed and
  9.  *    intended  to  work  solely  with  Autodesk, Inc. products, and
  10.  *    (ii.)  contain  Autodesk's  copyright  notice  "(C)  Copyright
  11.  *    1988-1992 by Autodesk, Inc."
  12.  *
  13.  *    AUTODESK  PROVIDES THIS PROGRAM "AS IS" AND WITH  ALL  FAULTS.
  14.  *    AUTODESK  SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF  MER-
  15.  *    CHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK,  INC.
  16.  *    DOES  NOT  WARRANT THAT THE OPERATION OF THE PROGRAM  WILL  BE
  17.  *    UNINTERRUPTED OR ERROR FREE.
  18.  */
  19.  
  20. typedef unsigned long ap_Featid;
  21.  
  22. typedef enum
  23. {
  24.     AP_LINE ,
  25.     AP_ELLIPSE ,
  26.     AP_HYPERBOLA ,
  27.     AP_PARABOLA ,
  28.     AP_CYLCYL,
  29.     AP_CONCON,
  30.     AP_OTHER
  31. } Ap_edgetype;                /* edge type */
  32.  
  33. typedef enum
  34. {
  35.     AP_PLANAR ,
  36.     AP_CYLINDRICAL ,
  37.     AP_CONICAL ,
  38.     AP_SPHERICAL ,
  39.     AP_TOROIDAL
  40. } Ap_facetype;                /* face type */
  41.  
  42. typedef struct
  43. {
  44.     Ap_facetype ap_face_type;
  45.     ap_Real ap_r, ap_maj, ap_min;     /* assigned when applicable */
  46.     ap_Real ap_rx, ap_ry;        /* assigned when applicable */
  47.     ap_Real ap_perimeter;        /* sum of edges */
  48.     ads_point ap_outnorm;        /* outward normal of plane */
  49.     ap_Trans3d ap_face_rm;         /* current rigid motion */
  50. } ap_FaceInfo;
  51.  
  52. typedef struct ap_facelist
  53. {
  54.     ap_Featid l_face_id;         /* The Unique Face Id of the surface */
  55.     ap_FaceInfo l_face;          /* Information of that Surface */
  56.     struct ap_facelist *l_facenext;     /* Pointer to the next Surface */
  57. } ap_FaceList;
  58.  
  59.  
  60. typedef enum
  61. {
  62.     AP_PT_FAILED,
  63.     AP_PT_INVALID,
  64.     AP_PT_OFFSOLID,
  65.     AP_PT_ONSOLID,
  66.     AP_PT_INSOLID
  67. }Ap_pt_class;                /* point classification  */
  68.  
  69. typedef struct 
  70. {
  71.     Ap_pt_class s_class;
  72.     ap_Real s_parm1;
  73.     ap_Real s_parm2;
  74. } ap_Edgeseg;
  75.  
  76. typedef struct ap_seglist
  77. {
  78.     ap_Edgeseg l_seg;
  79.     struct ap_seglist *l_segnext;
  80. } ap_SegList;
  81.  
  82. struct ap_lineseg
  83. {
  84.     ap_Real t0, t1;
  85. };
  86.  
  87. struct ap_ellseg
  88. {
  89.     ap_Real ru, rv, t0, t1;
  90. };
  91.  
  92. struct ap_parseg
  93. {
  94.     ap_Real fourp, t0, t1;
  95. };
  96.  
  97. struct ap_hypseg
  98. {
  99.     ap_Real a, b, t0, t1;
  100. };
  101.  
  102. struct ap_ccseg
  103. {
  104.     ap_Real a, b, c, d, e, f, g, h, i, radx, rady, sign, t0, t1;
  105. };
  106.  
  107. struct ap_kkseg
  108. {
  109.     ap_Real a, b, c, d, e, f, g, h, i, alpha, beta, sign, t0, t1;
  110. };
  111.  
  112. typedef struct
  113. {
  114.     Ap_edgetype ap_edge_type;
  115.     ap_Real ap_edge_len;       /* length of the edge */
  116.     ap_Bool ap_edge_convex;       /* true if two planar surfaces are convex */
  117.     union
  118.     {
  119.         struct ap_lineseg lin;
  120.         struct ap_ellseg ell;
  121.         struct ap_parseg par;
  122.         struct ap_hypseg hyp;
  123.         struct ap_ccseg cce;
  124.         struct ap_kkseg kke;
  125.     }ap_param;
  126.     ads_point ap_endpt1, ap_endpt2;         /* end points of the edge */
  127.     ap_Trans3d ap_edge_rm;             /* current rigid motion */
  128. } ap_EdgeInfo;
  129.  
  130. typedef struct ap_edgelist
  131. {
  132.     ap_Featid l_edge_id;              /* unique Edge ID for a edge */
  133.     ap_EdgeInfo l_edge;               /* Edge Information of that Edge */
  134.     struct ap_edgelist *l_edgenext;   /* Pointer to the Next Edge */
  135. } ap_EdgeList;
  136.  
  137. typedef struct ap_param
  138. {
  139.     ap_Real param1;
  140.     ap_Real param2;
  141. }ap_Param;
  142.  
  143.