head.h
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:4k
源码类别:

GIS编程

开发平台:

Visual C++

  1. typedef struct TAG {
  2.   int poly           ;      /* an index to a tagged polygon               */
  3.   int vert           ;      /* an index to the tagged vertex              */
  4. } TAG ;
  5. typedef struct EXPRESSION {
  6.   char  name[80]       ;    /* name of the expression                     */
  7.   float m[20]          ;    /* an expression vector                       */
  8.   float bias           ;    /* an bias control for the muscles            */
  9. } EXPRESSION ;
  10. typedef struct MUSCLE {
  11.   int   active         ;     /* activity switch for the muscle            */
  12.   float head[3]        ;     /* head of the muscle vector                 */
  13.   float tail[3]        ;     /* tail of the muscle vector                 */
  14.   float zone,                /* zone of influence                         */
  15.         fs, fe, mval   ;     /* zone, start, end, contraction             */
  16.   char  name[80]       ;     /* name of the muscle                        */
  17.   float clampv         ;     /* clamping value                            */
  18.   float mstat        ;     /* current contraction value                 */
  19.   
  20. } MUSCLE ;
  21. typedef struct  VERTEX {
  22.   float    xyz[3]      ;     /* x,y,z of the vertex (modified)            */
  23.   float    nxyz[3]     ;     /* x,y,z of the vertex (never modified)      */
  24.   int      np          ;     /* number of polygons associated with node   */
  25.   int      plist[30]   ;     /* list of polygons associated with node     */
  26.   float    norm[3]     ;     /* polygon vertex normal                     */
  27. } VERTEX ;
  28. typedef struct  POLYGON {
  29.   VERTEX  *vertex[3]   ;     /* pointer to an array of three vertices     */
  30. } POLYGON ;
  31. typedef struct  HEAD {
  32.   int       npindices      ;  /* number of polygon indices                 */
  33.   int      *indexlist      ;  /* integer index list of size npindices*4    */
  34.   int       npolylinenodes ;  /* number of nodes in the poly line          */
  35.   float    *polyline       ;  /* xyz nodes in the poly line                */
  36.   int       npolygons      ;  /* total number of polygons                  */
  37.   POLYGON **polygon        ;  /* pointer to the polygon list               */
  38.   int       neyelidtags    ;  /* number of eyelid tags                     */
  39.   TAG     **eyelidtag      ;  /* pointer to the eyelid tags                */
  40.   float     eyelidang      ;  /* rotation of the eyelids                   */
  41.   int       njawtags       ;  /* number of jaw tags                        */
  42.   TAG     **jawtag         ;  /* pointer to the eyelid tags                */
  43.   float     jawang         ;  /* rotation of the jaw                       */
  44.   int       nmuscles       ;  /* number of muscles in the face             */
  45.   MUSCLE  **muscle         ;  /* pointer to the muscle list                */
  46.   int     nexpressions   ;  /* number of expressions in the    */
  47.   EXPRESSION  **expression ;  /* point to an expression vector            */
  48. } HEAD ;
  49. /* main.c */
  50. extern int verbose;
  51. /* make_face.c */
  52. HEAD *create_face         ( char *, char *         ) ;
  53. void averaged_vertex_normals  ( HEAD *face, int p, 
  54.           float *n1, float *n2, float *n3       ) ; 
  55. void face_reset ( HEAD *face );
  56. void expressions ( HEAD *face, int e );
  57. void data_struct ( HEAD *face );
  58. /* display.c */
  59. void paint_polyline      ( HEAD *face  ) ;
  60. void paint_polygons      ( HEAD *face, int type, int normals     ) ;
  61. void calculate_polygon_vertex_normal ( HEAD *face );
  62. void paint_muscles ( HEAD *face );
  63. /* muscle.c */
  64. void activate_muscle (HEAD *face, float *vt, float *vh, float fstart,  float fin,  float ang,  float val);
  65. /* fileio.c */
  66. void read_polygon_indices ( char *FileName, HEAD *face );
  67. void read_polygon_line ( char    *FileName , HEAD    *face );
  68. void read_muscles ( char *FileName , HEAD *face );
  69. void read_expression_vectors ( char    *FileName , HEAD    *face );