Advertisement
Guest User

Untitled

a guest
May 28th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.80 KB | None | 0 0
  1. //// Labo 7 - 9.cpp : Defines the entry point for the console application.
  2. ////
  3. //
  4. //#include "stdafx.h"
  5. //#include <GL/glut.h>
  6. //#include <stdlib.h>
  7. //#include <fstream>
  8. //#include <vector>
  9. //#include <iostream>
  10. //#include "Punkty.h"
  11. //
  12. //
  13. //
  14. //using namespace std;
  15. //
  16. //
  17. //// funkcja generująca scenę 3D
  18. //
  19. //void Display()
  20. //{
  21. //  vector <Punkty> dane;
  22. //
  23. //  double x, y, wartosc;
  24. //  fstream plikDoOdczytu;
  25. //  plikDoOdczytu.open("dane.txt", ios::in);
  26. //
  27. //  while (!plikDoOdczytu.eof()) {
  28. //      plikDoOdczytu >> x >> y >> wartosc;
  29. //      Punkty jedenPunkt(x, y, wartosc);
  30. //      dane.push_back(jedenPunkt);
  31. //  }
  32. //      glClearColor(1.0, 1.0, 1.0, 1.0);
  33. //
  34. //      // czyszczenie bufora koloru
  35. //      glClear(GL_COLOR_BUFFER_BIT);
  36. //
  37. //      glMatrixMode(GL_MODELVIEW);
  38. //      glLoadIdentity();
  39. //      glColor3f(1.0, 0.0, 0.0);
  40. //
  41. //      // początek definicji wielokąta
  42. //      glBegin(GL_POINTS);
  43. //
  44. //      for (int i = 0; i < dane.size(); i++) {
  45. //          glBegin(GL_POINTS);
  46. //          cout << dane[i].x << " \t" << dane[i].y << " \t" << dane[i].wartosc << endl;
  47. //          glVertex2d(dane[i].x*50, dane[i].y*5);
  48. //          glEnd();
  49. //          glFlush();
  50. //      }
  51. //      // koniec definicji prymitywu
  52. //     
  53. // 
  54. //
  55. //  // skierowanie poleceń do wykonania
  56. //
  57. //
  58. //  // zamiana buforów koloru
  59. //  glutSwapBuffers();
  60. //}
  61. //
  62. //// zmiana wielkości okna
  63. //
  64. //void Reshape(int width, int height)
  65. //{
  66. //  // generowanie sceny 3D
  67. //  Display();
  68. //}
  69. //
  70. //// stałe do obsługi menu podręcznego
  71. //
  72. //enum
  73. //{
  74. //  EXIT // wyjście
  75. //};
  76. //
  77. //// obsługa menu podręcznego
  78. //
  79. //void Menu(int value)
  80. //{
  81. //  switch (value)
  82. //  {
  83. //      // wyjście
  84. //  case EXIT:
  85. //      exit(0);
  86. //  }
  87. //}
  88. //
  89. //int main(int argc, char * argv[])
  90. //{
  91. // 
  92. //  glutInit(&argc, argv);
  93. //
  94. //  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  95. //
  96. //  // rozmiary głównego okna programu
  97. //  glutInitWindowSize(400, 400);
  98. //
  99. //  // utworzenie głównego okna programu
  100. //  glutCreateWindow("Kwadrat 1");
  101. //
  102. //  // dołączenie funkcji generującej scenę 3D
  103. //  glutDisplayFunc(Display);
  104. //
  105. //  // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna
  106. //  glutReshapeFunc(Reshape);
  107. //  glutCreateMenu(Menu);
  108. //
  109. // 
  110. //#ifdef WIN32
  111. //
  112. //  glutAddMenuEntry("Wyjście", EXIT);
  113. //#else
  114. //
  115. //  glutAddMenuEntry("Wyjscie", EXIT);
  116. //#endif
  117. //
  118. // 
  119. //  glutAttachMenu(GLUT_RIGHT_BUTTON);
  120. //  glutMainLoop();
  121. //  system("PAUSE");
  122. //  return 0;
  123. //}
  124. //
  125. ///*
  126. //int main()
  127. //{
  128. //  vector <Punkty> dane;
  129. //
  130. //  double x, y, wartosc;
  131. //  fstream plikDoOdczytu;
  132. //  plikDoOdczytu.open("dane.txt", ios::in);
  133. //
  134. //  while (!plikDoOdczytu.eof()) {
  135. //      plikDoOdczytu >> x >> y >> wartosc;
  136. //      Punkty jedenPunkt(x, y, wartosc);
  137. //      dane.push_back(jedenPunkt);
  138. //  }
  139. //
  140. //  for (int i = 0; i < dane.size(); i++) {
  141. //      cout << dane[i].x << " \t" << dane[i].y << " \t" << dane[i].wartosc << endl;
  142. //  }
  143. //
  144. //  system("PAUSE");
  145. //    return 0;
  146. //}
  147. //*/
  148.  
  149. #include "stdafx.h"
  150. #include <GL/glut.h>
  151. #include <stdlib.h>
  152. #include <fstream>
  153. #include <vector>
  154. #include <iostream>
  155. #include "Punkty.h"
  156.  
  157. using namespace std;
  158. // stałe do obsługi menu podręcznego
  159.  
  160.  
  161.  
  162. class punkt
  163. {
  164. public:
  165.     double x;
  166.     double y;
  167.     float var;
  168. };
  169. punkt t[192];
  170.  
  171. void read(punkt *t)
  172. {
  173.     fstream plik;
  174.     plik.open("dane.txt", std::ios_base::in);
  175.     int i;
  176.     cout << endl;
  177.     for (i = 0;i<192;i++)
  178.     {
  179.         plik >> t[i].x;
  180.         t[i].x *= 15;
  181.         plik >> t[i].y;
  182.         t[i].y *= 5;
  183.         plik >> t[i].var;
  184.         cout << t[i].x << "     " << t[i].y << "     " << t[i].var << endl;
  185.     }
  186. }
  187. enum
  188. {
  189.     MenuPkt,
  190.     noDither,
  191.     EXIT // wyjście
  192. };
  193. void Displayp(punkt *t)
  194. {
  195.     glClearColor(1.0, 1.0, 1.0, 1.0);
  196.  
  197.     glClear(GL_COLOR_BUFFER_BIT);
  198.  
  199.     glMatrixMode(GL_MODELVIEW);
  200.  
  201.     glLoadIdentity();
  202.  
  203.     glColor3f(1.0, 0.0, 0.0);
  204.     glShadeModel(GL_SMOOTH);
  205.     glEnable(GL_DITHER);
  206.     glBegin(GL_POLYGON);
  207.  
  208.     for (int i = 0;i<192;i++)
  209.     {
  210.         float temp = t[i].var;
  211.         float min = 1400 - temp;
  212.         glColor3f(temp / 1400, 0.0, min / 1400);   
  213.         glVertex2d(t[i].x, t[i].y-100);
  214.     }
  215.     glEnd();
  216.  
  217.     // wyłączenie rysowania wzorów linii
  218.  
  219.  
  220.     // skierowanie poleceń do wykonania
  221.     glFlush();
  222.  
  223.     // zamiana buforów koloru
  224.     glutSwapBuffers();
  225. }
  226.  
  227. void DisplayBezDitheringu(punkt *t)
  228. {
  229.     glClearColor(1.0, 1.0, 1.0, 1.0);
  230.  
  231.     glClear(GL_COLOR_BUFFER_BIT);
  232.  
  233.     glEnable(GL_BLEND);
  234.     glMatrixMode(GL_MODELVIEW);
  235.  
  236.     glLoadIdentity();
  237.  
  238.     glColor3f(1.0, 0.0, 0.0);
  239.     glShadeModel(GL_SMOOTH);
  240.     glDisable(GL_DITHER);
  241.     glBegin(GL_POLYGON);
  242.  
  243.     for (int i = 0;i<192;i++)
  244.     {
  245.         float temp = t[i].var;
  246.         float min = 1400 - temp;
  247.         glColor3f(1- (temp / 1400), 0.0, 1- (min / 1400));
  248.         glVertex2d(t[i].x, t[i].y - 100);
  249.     }
  250.     glEnd();
  251.  
  252.     // wyłączenie rysowania wzorów linii
  253.  
  254.  
  255.     // skierowanie poleceń do wykonania
  256.     glFlush();
  257.  
  258.     // zamiana buforów koloru
  259.     glutSwapBuffers();
  260. }
  261.  
  262. // wskaźnik naciśnięcia lewego przycisku myszki
  263.  
  264. int button_state = GLUT_UP;
  265.  
  266. void Display()
  267. {
  268.     // kolor tła - zawartość bufora koloru
  269.     glClearColor(1.0, 1.0, 1.0, 1.0);
  270.  
  271.     // czyszczenie bufora koloru
  272.     glClear(GL_COLOR_BUFFER_BIT);
  273.  
  274.     // wybór macierzy modelowania
  275.     glMatrixMode(GL_MODELVIEW);
  276.  
  277.     // macierz modelowania = macierz jednostkowa
  278.     glLoadIdentity();
  279.  
  280.     // kolor linii
  281.     glColor3f(1.0, 0.0, 0.0);
  282.  
  283.     // wyłączenie rysowania wzorów linii
  284.     glDisable(GL_LINE_STIPPLE);
  285.  
  286.     // skierowanie poleceń do wykonania
  287.     glFlush();
  288.  
  289.     // zamiana buforów koloru
  290.     glutSwapBuffers();
  291. }
  292.  
  293.  
  294. // zmiana wielkości okna
  295.  
  296. void Reshape(int width, int height)
  297. {
  298.  
  299.     // obszar renderingu - całe okno
  300.     glViewport(240, 240, width, height);
  301.  
  302.     // wybór macierzy rzutowania
  303.     glMatrixMode(GL_PROJECTION);
  304.  
  305.     // macierz rzutowania = macierz jednostkowa
  306.     glLoadIdentity();
  307.  
  308.     // rzutowanie prostokątne
  309.     gluOrtho2D(0, width, 0, height);
  310.  
  311.     // generowanie sceny 3D
  312.     Display();
  313. }
  314.  
  315. void Menu(int value)
  316. {
  317.     switch (value)
  318.     {
  319.     case MenuPkt:
  320.         Displayp(t);
  321.         break;
  322.     case noDither:
  323.         DisplayBezDitheringu(t);
  324.         break;
  325.     }
  326. }
  327.  
  328.  
  329. int main(int argc, char * argv[])
  330. {
  331.  
  332.  
  333.     read(t);
  334.  
  335.  
  336.     // inicjalizacja biblioteki GLUT
  337.     glutInit(&argc, argv);
  338.  
  339.     // inicjalizacja bufora ramki
  340.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  341.  
  342.     // rozmiary głównego okna programu
  343.     glutInitWindowSize(500, 500);
  344.  
  345.     // utworzenie głównego okna programu
  346.     glutCreateWindow("Linie");
  347.  
  348.     // dołączenie funkcji generującej scenę 3D
  349.     glutDisplayFunc(Display);
  350.    
  351.     // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna
  352.     glutReshapeFunc(Reshape);
  353.     Displayp(t);
  354.     // utworzenie podmenu - Prymitywy
  355.  
  356.  
  357.  
  358.  
  359.  
  360.     // menu główne
  361.     glutCreateMenu(Menu);
  362. #ifdef WIN32
  363.  
  364.     glutAddMenuEntry("Dithering + RGB", MenuPkt);
  365.     glutAddMenuEntry("Bez ditheringu + CMY", noDither);
  366. #else
  367.  
  368. #endif
  369.  
  370.  
  371.     // określenie przycisku myszki obsługującego menu podręczne
  372.     glutAttachMenu(GLUT_RIGHT_BUTTON);
  373.  
  374.  
  375.  
  376.     // wprowadzenie programu do obsługi pętli komunikatów
  377.     glutMainLoop();
  378.  
  379.     return 0;
  380. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement