Advertisement
Alex9090

Untitled

Feb 19th, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  1. #include <windows.h> // sunt mentionate fisiere (biblioteci) care urmeaza sa fie incluse
  2. #include <gl/freeglut.h> // nu trebuie uitat freeglut.h (sau glut.h sau gl.h & glu.h)
  3.  
  4. void init (void) // initializare fereastra de vizualizare
  5. {
  6. glClearColor (1.0, 1.0, 1.0, 0.0); // precizeaza culoarea de fond a ferestrei de vizualizare
  7. //coduri de culoare RGB 1 1 1 (maxim)
  8.  
  9. glMatrixMode (GL_PROJECTION); // se precizeaza este vorba de o reprezentare 2D, realizata prin proiectie ortogonala
  10. gluOrtho2D (0.0, 800.0, 0.0, 600.0); // sunt indicate coordonatele extreme ale ferestrei de vizualizare
  11. //maparea peste background de la 0 la 800 pe Ox si 0 la 600 pe Oy
  12. }
  13. void desen (void) // procedura desenare
  14. {
  15.  
  16.  
  17. // segmentele
  18. glClear(GL_COLOR_BUFFER_BIT);
  19. glLineWidth (2.0);
  20. //GL_POINTS ar transforma coordonatele in puncte
  21. glPointSize(22);
  22. glEnable(GL_POINT_SMOOTH);
  23. glBegin(GL_POINTS);
  24. glColor3f (0.0, 0.0, 0.0);
  25. glVertex2i (200, 200);
  26. glEnd();
  27. glBegin (GL_LINES);
  28. glColor3f (0.0, 0.0, 0.0); // culoarea primului segment: rosu
  29. glVertex2i (20,20);
  30. glVertex2i (20, 200);
  31. glVertex2i (20,20);
  32. glVertex2i (200, 20);
  33. glColor3f (0.0, 0.0, 0.0); // culoarea celui de-al doilea segment: verde
  34. glVertex2i (200, 20);
  35. glVertex2i (200, 200);
  36. glVertex2i (200, 200);
  37. glVertex2i (20,200);
  38.  
  39. glColor3f (0.0, 0.0, 0.0); // culoarea primului segment: rosu
  40.  
  41. glColor3f (0.0, 0.0, 0.0); // culoarea celui de-al doilea segment: verde
  42. glVertex2i (280, 80);
  43. glVertex2i (280, 280);
  44. glVertex2i (280, 280);
  45. glVertex2i (80,280);
  46.  
  47. glColor3f (0.0, 0.0, 0.0); // culoarea primului segment: rosu
  48. glVertex2i (20,200);
  49. glVertex2i (80, 280);
  50. glVertex2i (200,200);
  51. glVertex2i (280, 280);
  52. glColor3f (0.0, 0.0, 0.0); // culoarea celui de-al doilea segment: verde
  53. glVertex2i (200, 20);
  54. glVertex2i (280,80);
  55.  
  56.  
  57. glEnd ( );
  58. glEnable(GL_LINE_STIPPLE);
  59. glLineStipple(1,0xF0F0);
  60. glBegin (GL_LINES);
  61. glColor3f (0.0, 0.0, 0.0); // culoarea celui de-al doilea segment: verde
  62. glVertex2i (20, 20);
  63. glVertex2i (80, 80);
  64. glVertex2i (80,80);
  65. glVertex2i (80, 280);
  66. glVertex2i (80,80);
  67. glVertex2i (280, 80);
  68. glVertex2i (80,80);
  69. glVertex2i (200,200);
  70.  
  71. glEnd ( );
  72. glDisable(GL_LINE_STIPPLE);
  73. // punctul de intersectie
  74. glPointSize(20);
  75. glEnable(GL_POINT_SMOOTH);
  76. glBegin (GL_POINTS);
  77. glColor3f (1.0, 1.0, 1.0);
  78. glVertex2i (200, 200);
  79. glColor3f (1.0, 0.0, 0.0);
  80. glVertex2i (20,20);
  81. glColor3f (1.0, 1.0, 0.0);
  82. glVertex2i (200,20);
  83. glColor3f (0.0, 1.0, 0.0);
  84. glVertex2i (280,80);
  85. glColor3f (1.0, 0.0, 1.0);
  86. glVertex2i (20,200);
  87. glColor3f (0.0, 0.0, 1.0);
  88. glVertex2i (80,280);
  89. glColor3f (0.0, 1.0, 1.0);
  90. glVertex2i (280,280);
  91. glColor3f (0.0, 0.0, 0.0);
  92. glVertex2i (80,80);
  93. glEnd ( );
  94.  
  95.  
  96. glFlush ( ); // proceseaza procedurile OpenGL cat mai rapid
  97. }
  98. void main (int argc, char** argv)
  99. {
  100. //crearea ferestrei pana la glutCreateWindow; ar putea fi glut double pt animatii
  101. glutInit (&argc, argv); // initializare GLUT
  102. glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // se utilizeaza un singur buffer | modul de colorare RedGreenBlue (= default)
  103. glutInitWindowPosition (100, 100); // pozitia initiala a ferestrei de vizualizare (in coordonate ecran)
  104. glutInitWindowSize (800, 600); // dimensiunile ferestrei
  105. glutCreateWindow ("Puncte & Segmente"); // creeaza fereastra, indicand numele ferestrei de vizualizare - apare in partea superioara
  106.  
  107. init (); // executa procedura de initializare
  108. glClear (GL_COLOR_BUFFER_BIT); // reprezentare si colorare fereastra de vizualizare
  109. glutDisplayFunc (desen); // procedura desen este invocata ori de cate ori este nevoie
  110. //va fi reapelat de fiecare data pentru redimensionare, iar motivul ptc se face negru la redimensionare deoarece nu avem clear colour
  111. glutMainLoop ( ); // ultima instructiune a programului, asteapta (eventuale) noi date de intrare
  112.  
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement