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

GIS编程

开发平台:

Visual C++

  1. /* 
  2.  * tube.h
  3.  *
  4.  * FUNCTION:
  5.  * Tubing and Extrusion header file.
  6.  * This file provides protypes and defines for the extrusion 
  7.  * and tubing primitives.
  8.  *
  9.  * HISTORY:
  10.  * Linas Vepstas 1990, 1991
  11.  */
  12. #ifndef __TUBE_H__
  13. #define __TUBE_H__
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /**
  18.  GLE API revision history:
  19.  
  20.  GLE_API_VERSION is updated to reflect GLE API changes (interface
  21.  changes, semantic changes, deletions, or additions).
  22.  
  23.  GLE_API_VERSION=228  GLUT 3.7 release of GLE.
  24. **/
  25. #ifndef GLE_API_VERSION  /* allow this to be overriden */
  26. #define GLE_API_VERSION                228
  27. #endif
  28. #ifdef _WIN32
  29. #define OPENGL_10
  30. #endif
  31. /* some types */
  32. #define gleDouble double
  33. typedef gleDouble gleAffine[2][3];
  34. /* ====================================================== */
  35. /* defines for tubing join styles */
  36. #define TUBE_JN_RAW          0x1
  37. #define TUBE_JN_ANGLE        0x2
  38. #define TUBE_JN_CUT          0x3
  39. #define TUBE_JN_ROUND        0x4
  40. #define TUBE_JN_MASK         0xf    /* mask bits */
  41. #define TUBE_JN_CAP          0x10
  42. /* determine how normal vectors are to be handled */
  43. #define TUBE_NORM_FACET      0x100
  44. #define TUBE_NORM_EDGE       0x200
  45. #define TUBE_NORM_PATH_EDGE  0x400 /* for spiral, lathe, helix primitives */
  46. #define TUBE_NORM_MASK       0xf00    /* mask bits */
  47. /* closed or open countours */
  48. #define TUBE_CONTOUR_CLOSED 0x1000
  49. #define GLE_TEXTURE_ENABLE 0x10000
  50. #define GLE_TEXTURE_STYLE_MASK 0xff
  51. #define GLE_TEXTURE_VERTEX_FLAT 1
  52. #define GLE_TEXTURE_NORMAL_FLAT 2
  53. #define GLE_TEXTURE_VERTEX_CYL 3
  54. #define GLE_TEXTURE_NORMAL_CYL 4
  55. #define GLE_TEXTURE_VERTEX_SPH 5
  56. #define GLE_TEXTURE_NORMAL_SPH 6
  57. #define GLE_TEXTURE_VERTEX_MODEL_FLAT 7
  58. #define GLE_TEXTURE_NORMAL_MODEL_FLAT 8
  59. #define GLE_TEXTURE_VERTEX_MODEL_CYL 9
  60. #define GLE_TEXTURE_NORMAL_MODEL_CYL 10
  61. #define GLE_TEXTURE_VERTEX_MODEL_SPH 11
  62. #define GLE_TEXTURE_NORMAL_MODEL_SPH 12
  63. #ifdef GL_32
  64. /* HACK for GL 3.2 -- needed because no way to tell if lighting is on.  */
  65. #define TUBE_LIGHTING_ON 0x80000000
  66. #define gleExtrusion extrusion
  67. #define gleSetJoinStyle setjoinstyle
  68. #define gleGetJoinStyle getjoinstyle
  69. #define glePolyCone polycone
  70. #define glePolyCylinder polycylinder
  71. #define gleSuperExtrusion super_extrusion
  72. #define gleTwistExtrusion twist_extrusion
  73. #define gleSpiral spiral
  74. #define gleLathe lathe
  75. #define gleHelicoid helicoid
  76. #define gleToroid toroid
  77. #define gleScrew screw
  78. #endif /* GL_32 */
  79. extern int gleGetJoinStyle (void);
  80. extern void gleSetJoinStyle (int style); /* bitwise OR of flags */
  81. extern int gleGetNumSlices(void);
  82. extern void gleSetNumSlices(int slices);
  83. /* draw polyclinder, specified as a polyline */
  84. extern void glePolyCylinder (int npoints, /* num points in polyline */
  85.                    gleDouble point_array[][3], /* polyline vertces */
  86.                    float color_array[][3], /* colors at polyline verts */
  87.                    gleDouble radius); /* radius of polycylinder */
  88. /* draw polycone, specified as a polyline with radii */
  89. extern void glePolyCone (int npoints,  /* numpoints in poly-line */
  90.                    gleDouble point_array[][3], /* polyline vertices */
  91.                    float color_array[][3], /* colors at polyline verts */
  92.                    gleDouble radius_array[]); /* cone radii at polyline verts */
  93. /* extrude arbitrary 2D contour along arbitrary 3D path */
  94. extern void gleExtrusion (int ncp,         /* number of contour points */
  95.                 gleDouble contour[][2],     /* 2D contour */
  96.                 gleDouble cont_normal[][2], /* 2D contour normals */
  97.                 gleDouble up[3],            /* up vector for contour */
  98.                 int npoints,            /* numpoints in poly-line */
  99.                 gleDouble point_array[][3], /* polyline vertices */
  100.                 float color_array[][3]); /* colors at polyline verts */
  101. /* extrude 2D contour, specifying local rotations (twists) */
  102. extern void gleTwistExtrusion (int ncp,         /* number of contour points */
  103.                 gleDouble contour[][2],    /* 2D contour */
  104.                 gleDouble cont_normal[][2], /* 2D contour normals */
  105.                 gleDouble up[3],           /* up vector for contour */
  106.                 int npoints,           /* numpoints in poly-line */
  107.                 gleDouble point_array[][3],        /* polyline vertices */
  108.                 float color_array[][3],        /* color at polyline verts */
  109.                 gleDouble twist_array[]);   /* countour twists (in degrees) */
  110. /* extrude 2D contour, specifying local affine tranformations */
  111. extern void gleSuperExtrusion (int ncp,  /* number of contour points */
  112.                 gleDouble contour[][2],    /* 2D contour */
  113.                 gleDouble cont_normal[][2], /* 2D contour normals */
  114.                 gleDouble up[3],           /* up vector for contour */
  115.                 int npoints,           /* numpoints in poly-line */
  116.                 gleDouble point_array[][3],        /* polyline vertices */
  117.                 float color_array[][3],        /* color at polyline verts */
  118.                 gleDouble xform_array[][2][3]);   /* 2D contour xforms */
  119. /* spiral moves contour along helical path by parallel transport */
  120. extern void gleSpiral (int ncp,        /* number of contour points */
  121.              gleDouble contour[][2],    /* 2D contour */
  122.              gleDouble cont_normal[][2], /* 2D contour normals */
  123.              gleDouble up[3],           /* up vector for contour */
  124.              gleDouble startRadius, /* spiral starts in x-y plane */
  125.              gleDouble drdTheta,        /* change in radius per revolution */
  126.              gleDouble startZ, /* starting z value */
  127.              gleDouble dzdTheta,        /* change in Z per revolution */
  128.              gleDouble startXform[2][3], /* starting contour affine xform */
  129.              gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
  130.              gleDouble startTheta, /* start angle in x-y plane */
  131.              gleDouble sweepTheta); /* degrees to spiral around */
  132. /* lathe moves contour along helical path by helically shearing 3D space */
  133. extern void gleLathe (int ncp,        /* number of contour points */
  134.              gleDouble contour[][2],    /* 2D contour */
  135.              gleDouble cont_normal[][2], /* 2D contour normals */
  136.              gleDouble up[3],           /* up vector for contour */
  137.              gleDouble startRadius, /* spiral starts in x-y plane */
  138.              gleDouble drdTheta,        /* change in radius per revolution */
  139.              gleDouble startZ, /* starting z value */
  140.              gleDouble dzdTheta,        /* change in Z per revolution */
  141.              gleDouble startXform[2][3], /* starting contour affine xform */
  142.              gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
  143.              gleDouble startTheta, /* start angle in x-y plane */
  144.              gleDouble sweepTheta); /* degrees to spiral around */
  145. /* similar to spiral, except contour is a circle */
  146. extern void gleHelicoid (gleDouble rToroid, /* circle contour (torus) radius */
  147.              gleDouble startRadius, /* spiral starts in x-y plane */
  148.              gleDouble drdTheta,        /* change in radius per revolution */
  149.              gleDouble startZ, /* starting z value */
  150.              gleDouble dzdTheta,        /* change in Z per revolution */
  151.              gleDouble startXform[2][3], /* starting contour affine xform */
  152.              gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
  153.              gleDouble startTheta, /* start angle in x-y plane */
  154.              gleDouble sweepTheta); /* degrees to spiral around */
  155. /* similar to lathe, except contour is a circle */
  156. extern void gleToroid (gleDouble rToroid, /* circle contour (torus) radius */
  157.              gleDouble startRadius, /* spiral starts in x-y plane */
  158.              gleDouble drdTheta,        /* change in radius per revolution */
  159.              gleDouble startZ, /* starting z value */
  160.              gleDouble dzdTheta,        /* change in Z per revolution */
  161.              gleDouble startXform[2][3], /* starting contour affine xform */
  162.              gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
  163.              gleDouble startTheta, /* start angle in x-y plane */
  164.              gleDouble sweepTheta); /* degrees to spiral around */
  165. /* draws a screw shape */
  166. extern void gleScrew (int ncp,          /* number of contour points */
  167.              gleDouble contour[][2],    /* 2D contour */
  168.              gleDouble cont_normal[][2], /* 2D contour normals */
  169.              gleDouble up[3],           /* up vector for contour */
  170.              gleDouble startz,          /* start of segment */
  171.              gleDouble endz,            /* end of segment */
  172.              gleDouble twist);          /* number of rotations */
  173. extern void gleTextureMode (int mode);
  174. #ifdef __cplusplus
  175. }
  176. #endif
  177. #endif /* __TUBE_H__ */
  178. /* ================== END OF FILE ======================= */