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

GIS编程

开发平台:

Visual C++

  1. /* 
  2.  * cylinder drawing demo 
  3.  *
  4.  * FUNCTION:
  5.  * Basic demo illustrating how to write code to draw
  6.  * the most basic cylinder shape.
  7.  *
  8.  * HISTORY:
  9.  * Linas Vepstas March 1995
  10.  */
  11. /* required include files */
  12. #include <GL/glut.h>
  13. #include <GL/tube.h>
  14. /* the arrays in which we will store out polyline */
  15. #define NPTS 6
  16. double points [NPTS][3];
  17. float colors [NPTS][3];
  18. int idx = 0;
  19. /* some utilities for filling that array */
  20. #define PNT(x,y,z) { 
  21.    points[idx][0] = x; 
  22.    points[idx][1] = y; 
  23.    points[idx][2] = z;
  24.    idx ++;
  25. }
  26. #define COL(r,g,b) { 
  27.    colors[idx][0] = r; 
  28.    colors[idx][1] = g; 
  29.    colors[idx][2] = b;
  30. }
  31. /* 
  32.  * Initialize a bent shape with three segments. 
  33.  * The data format is a polyline.
  34.  *
  35.  * NOTE that neither the first, nor the last segment are drawn.
  36.  * The first & last segment serve only to determine that angle 
  37.  * at which the endcaps are drawn.
  38.  */
  39. void InitStuff (void) {
  40.    /* initialize the join style here */
  41.    gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP);
  42.    COL (0.0, 0.0, 0.0);
  43.    PNT (-6.0, 6.0, 0.0);
  44.    COL (0.0, 0.8, 0.3);
  45.    PNT (6.0, 6.0, 0.0);
  46.    COL (0.8, 0.3, 0.0);
  47.    PNT (6.0, -6.0, 0.0);
  48.    COL (0.2, 0.3, 0.9);
  49.    PNT (-6.0, -6.0, 0.0);
  50.    COL (0.2, 0.8, 0.5);
  51.    PNT (-6.0, 6.0, 0.0);
  52.    COL (0.0, 0.0, 0.0);
  53.    PNT (6.0, 6.0, 0.0);
  54. }
  55. extern float lastx;
  56. extern float lasty;
  57. /* draw the cylinder shape */
  58. void DrawStuff (void) {
  59.    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  60.    /* set up some matrices so that the object spins with the mouse */
  61.    glPushMatrix ();
  62.    glTranslatef (0.0, 0.0, -80.0);
  63.    glRotatef (lastx, 0.0, 1.0, 0.0);
  64.    glRotatef (lasty, 1.0, 0.0, 0.0);
  65.    /* Phew. FINALLY, Draw the polycylinder  -- */
  66.    glePolyCylinder (NPTS, points, colors, 2.3);
  67.    glPopMatrix ();
  68.    glutSwapBuffers ();
  69. }
  70. /* ------------------------ end of file ------------------- */