daily pastebin goal
32%
SHARE
TWEET

Untitled

a guest Jan 23rd, 2018 46 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <GL/freeglut.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. #define PI 3.14159
  6. #define N 20
  7. #define NrC 3
  8.  
  9. static char ch;
  10.  
  11. struct spirala{
  12.     float x, y, z;
  13. }spirala1[60], spirala2[60];
  14.  
  15. void genereazaPuncte() {
  16.     float step,zstep1,zstep2;
  17.     step = 2.0*PI/(float)N;
  18.  
  19.     zstep1 = -9;
  20.     zstep2 = -11;
  21.  
  22.     for(int c = 0; c < NrC; c++) {
  23.         for (int i=0; i<N; i++){
  24.             spirala1[i+c*N].x = 2.0*sin(step*(float)i);
  25.             spirala1[i+c*N].y = 2.0*cos(step*(float)i);
  26.             spirala1[i+c*N].z = zstep1;
  27.             zstep1 += 0.25;
  28.         }
  29.     }
  30.  
  31.     for(int c = 0; c < NrC; c++) {
  32.         for (int i=0; i<N; i++){
  33.             spirala2[i+c*N].x = 2.0*sin(step*(float)i);
  34.             spirala2[i+c*N].y = 2.0*cos(step*(float)i);
  35.             spirala2[i+c*N].z = zstep2;
  36.             zstep2 += 0.25;
  37.         }
  38.     }
  39. }
  40.  
  41. void deseneaza(){
  42.     glBegin(GL_LINE_STRIP);
  43.     for(int i = 0; i<N*NrC; i++){
  44.         glVertex3f(spirala1[i].x, spirala1[i].y, spirala1[i].z);
  45.     }
  46.     glEnd();
  47.  
  48.     glBegin(GL_LINE_STRIP);
  49.     for(int i = 0; i<N*NrC; i++){
  50.         glVertex3f(spirala2[i].x, spirala2[i].y, spirala2[i].z);
  51.     }
  52.     glEnd();
  53. }
  54.  
  55. void myinit(void)
  56. {
  57.     glClearColor( 0.0, 0.0, 0.0, 0.0 );
  58.     glShadeModel(GL_SMOOTH);
  59. }
  60.  
  61. void display(void) {
  62.  
  63.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  64.     #define Angle 2.0
  65.     switch(ch)
  66.     {
  67.     case 'q':
  68.         glRotatef( Angle, 1.0, 0.0, 0.0);
  69.         break;
  70.     case 'a':
  71.         glRotatef(-Angle, 1.0, 0.0, 0.0);
  72.         break;
  73.     case 's':
  74.         glRotatef( Angle, 0.0, 1.0, 0.0);
  75.         break;
  76.     case 'x':
  77.         glRotatef(-Angle, 0.0, 1.0, 0.0);
  78.         break;
  79.     case 'o':
  80.         glRotatef( Angle, 0.0, 0.0, 1.0);
  81.         break;
  82.     case 'p':
  83.         glRotatef(-Angle, 0.0, 0.0, 1.0);
  84.         break;
  85.     }
  86.  
  87.     glPushMatrix();
  88.     genereazaPuncte();
  89.     deseneaza();
  90.     glPopMatrix();
  91.     glutSwapBuffers();
  92. }
  93. void reshape(int w,int h)
  94. {
  95.     glViewport(0,0,(GLsizei)w,(GLsizei)h);
  96.     glMatrixMode(GL_PROJECTION);
  97.     glLoadIdentity();
  98.     gluPerspective(60.0,1.0,1.0,30.0);
  99.     glMatrixMode(GL_MODELVIEW);
  100.     glLoadIdentity();
  101.     /* eye point center of view up */
  102.     gluLookAt( 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
  103. }
  104. void keyboard(unsigned char key, int x, int y)
  105. {
  106.     switch (key)
  107.     {
  108.     case 'q' : // rotate around X; i = positive, j = negative
  109.         ch = key;
  110.         break;
  111.     case 'a' :
  112.         ch = key;
  113.         break;
  114.     case 's' : // rotate around Y; k = positive, m = negative
  115.         ch = key;
  116.         break;
  117.     case 'x' :
  118.         ch = key;
  119.         break;
  120.     case 'o' : // rotate around Z; a = positive, s = negative
  121.         ch = key;
  122.         break;
  123.     case 'p' :
  124.         ch = key;
  125.         break;
  126.     }
  127.     glutPostRedisplay(); /* perform display again */
  128. }
  129. int main(int argc, char** argv)
  130. {
  131.     /* Standard GLUT initialization */
  132.     glutInit(&argc,argv);
  133.     glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  134.     glutInitWindowSize(500,500);
  135.     glutInitWindowPosition(70,70);
  136.     glutCreateWindow("Spirala 3D");
  137.     glutDisplayFunc(display);
  138.     glutReshapeFunc(reshape);
  139.     glutKeyboardFunc(keyboard); // enable keyboard callback
  140.     myinit();
  141.     glutMainLoop();
  142.     return 0;
  143. }
RAW Paste Data
Top