pabblo097

Untitled

May 25th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.57 KB | None | 0 0
  1. #include <windows.h>
  2. #include <GL/freeglut.h>
  3. #include <stdlib.h>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7. static int slices = 16;
  8. static int stacks = 16;
  9. const int lw = 1339;
  10. const int lk = 2000;
  11. int R[lw][lk];
  12. int G[lw][lk];
  13. int B[lw][lk];
  14.  
  15. int Rn[lw][lk];
  16. int Gn[lw][lk];
  17. int Bn[lw][lk];
  18. int Rg[lw][lk];
  19. int Gg[lw][lk];
  20. int Bg[lw][lk];
  21.  
  22. static void resize(int width, int height)
  23. {
  24.     const float ar = (float)width / (float)height;
  25.     glViewport(0, 0, width, height);
  26.     glMatrixMode(GL_PROJECTION);
  27.     glLoadIdentity();
  28.     glOrtho(0, lk, 0, lw, -10, 10);
  29.     glMatrixMode(GL_MODELVIEW);
  30.     glLoadIdentity();
  31. }
  32. static void display(void)
  33. {
  34.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  35.     glColor3d(1, 0, 0);
  36.     glPointSize(10);
  37.     glBegin(GL_POINTS);
  38.     for (int i = 0; i < lw; ++i)
  39.         for (int j = 0; j < lk; ++j)
  40.         {
  41.             glColor3f(Rn[i][j] / 255.0,
  42.                 Gn[i][j] / 255.0,
  43.                 Bn[i][j] / 255.0);
  44.             glVertex3f(j, i, 0);
  45.         }
  46.     glEnd();
  47.     glutSwapBuffers();
  48. }
  49. static void key(unsigned char key, int x, int y)
  50. {
  51.     switch (key)
  52.     {
  53.     case 'z':
  54.         for (int i = 0; i < lw; ++i)
  55.             for (int j = 0; j < lk; ++j)
  56.             {
  57.                 Rn[i][j] = R[i][j];
  58.                 Gn[i][j] = G[i][j];
  59.                 Bn[i][j] = B[i][j];
  60.             }
  61.         break;
  62.     case 'x':
  63.         for (int i = 0; i < lw; ++i)
  64.             for (int j = 0; j < lk; ++j)
  65.             {
  66.                 R[i][j] = Rg[i][j];
  67.                 G[i][j] = Gg[i][j];
  68.                 B[i][j] = Bg[i][j];
  69.                 Rn[i][j] = R[i][j];
  70.                 Gn[i][j] = G[i][j];
  71.                 Bn[i][j] = B[i][j];
  72.             }
  73.         break;
  74.     case 'q':
  75.         exit(0);
  76.         break;
  77.     case 'b':
  78.         for (int i = 0; i < lw; ++i)
  79.             for (int j = 0; j < lk; ++j)
  80.             {
  81.                 Rn[i][j] = 0;
  82.                 Gn[i][j] = 0;
  83.                 Bn[i][j] = B[i][j];
  84.             }
  85.         break;
  86.     case 'r':
  87.         for (int i = 0; i < lw; ++i)
  88.             for (int j = 0; j < lk; ++j)
  89.             {
  90.                 Rn[i][j] = R[i][j];
  91.                 Gn[i][j] = 0;
  92.                 Bn[i][j] = 0;
  93.             }
  94.         break;
  95.     case 'g':
  96.         for (int i = 0; i < lw; ++i)
  97.             for (int j = 0; j < lk; ++j)
  98.             {
  99.                 Rn[i][j] = 0;
  100.                 Gn[i][j] = R[i][j];
  101.                 Bn[i][j] = 0;
  102.             }
  103.         break;
  104.     case 'd':
  105.     {
  106.         int M[3][3] = { {1,1,1},{1,2,1},{1,1,1} };
  107.         for (int i = 1; i < lw - 1; ++i)
  108.             for (int j = 1; j < lk - 1; ++j)
  109.             {
  110.                 Rn[i][j] =
  111.                     (R[i - 1][j - 1] * M[0][0] + R[i - 1][j] * M[0][1] + R[i - 1][j + 1] * M[0][2] +
  112.                         R[i][j - 1] * M[1][0] + R[i][j] * M[1][1] + R[i][j + 1] * M[1][2] +
  113.                         R[i + 1][j - 1] * M[2][0] + R[i + 1][j] * M[2][1] + R[i + 1][j + 1] * M[2][2])
  114.                     / (M[0][0] + M[0][1] + M[0][2] + M[1][0] + M[1][1] + M[1][2] + M[2][0] + M[2][1] + M[2][2]);
  115.                 Gn[i][j] =
  116.                     (G[i - 1][j - 1] * M[0][0] + G[i - 1][j] * M[0][1] + G[i - 1][j + 1] * M[0][2] +
  117.                         G[i][j - 1] * M[1][0] + G[i][j] * M[1][1] + G[i][j + 1] * M[1][2] +
  118.                         G[i + 1][j - 1] * M[2][0] + G[i + 1][j] * M[2][1] + G[i + 1][j + 1] * M[2][2])
  119.                     / (M[0][0] + M[0][1] + M[0][2] + M[1][0] + M[1][1] + M[1][2] + M[2][0] + M[2][1] + M[2][2]);
  120.                 Bn[i][j] =
  121.                     (B[i - 1][j - 1] * M[0][0] + B[i - 1][j] * M[0][1] + B[i - 1][j + 1] * M[0][2] +
  122.                         B[i][j - 1] * M[1][0] + B[i][j] * M[1][1] + B[i][j + 1] * M[1][2] +
  123.                         B[i + 1][j - 1] * M[2][0] + B[i + 1][j] * M[2][1] + B[i + 1][j + 1] * M[2][2])
  124.                     / (M[0][0] + M[0][1] + M[0][2] + M[1][0] + M[1][1] + M[1][2] + M[2][0] + M[2][1] + M[2][2]);
  125.             }}
  126.     for (int i = 0; i < lw; ++i)
  127.         for (int j = 0; j < lk; ++j)
  128.         {
  129.             R[i][j] = Rn[i][j];
  130.             G[i][j] = Gn[i][j];
  131.             B[i][j] = Bn[i][j];
  132.         }
  133.     break;
  134.     case 'w':
  135.     {
  136.         int M[3][3] = { {0,-1,0},{-1,5,-1},{0,-1,0} };
  137.         for (int i = 1; i < lw - 1; ++i)
  138.             for (int j = 1; j < lk - 1; ++j)
  139.             {
  140.                 Rn[i][j] =
  141.                     (R[i - 1][j - 1] * M[0][0] + R[i - 1][j] * M[0][1] + R[i - 1][j + 1] * M[0][2] +
  142.                         R[i][j - 1] * M[1][0] + R[i][j] * M[1][1] + R[i][j + 1] * M[1][2] +
  143.                         R[i + 1][j - 1] * M[2][0] + R[i + 1][j] * M[2][1] + R[i + 1][j + 1] * M[2][2])
  144.                     / (M[0][0] + M[0][1] + M[0][2] + M[1][0] + M[1][1] + M[1][2] + M[2][0] + M[2][1] + M[2][2]);
  145.                 Gn[i][j] =
  146.                     (G[i - 1][j - 1] * M[0][0] + G[i - 1][j] * M[0][1] + G[i - 1][j + 1] * M[0][2] +
  147.                         G[i][j - 1] * M[1][0] + G[i][j] * M[1][1] + G[i][j + 1] * M[1][2] +
  148.                         G[i + 1][j - 1] * M[2][0] + G[i + 1][j] * M[2][1] + G[i + 1][j + 1] * M[2][2])
  149.                     / (M[0][0] + M[0][1] + M[0][2] + M[1][0] + M[1][1] + M[1][2] + M[2][0] + M[2][1] + M[2][2]);
  150.                 Bn[i][j] =
  151.                     (B[i - 1][j - 1] * M[0][0] + B[i - 1][j] * M[0][1] + B[i - 1][j + 1] * M[0][2] +
  152.                         B[i][j - 1] * M[1][0] + B[i][j] * M[1][1] + B[i][j + 1] * M[1][2] +
  153.                         B[i + 1][j - 1] * M[2][0] + B[i + 1][j] * M[2][1] + B[i + 1][j + 1] * M[2][2])
  154.                     / (M[0][0] + M[0][1] + M[0][2] + M[1][0] + M[1][1] + M[1][2] + M[2][0] + M[2][1] + M[2][2]);
  155.             }}
  156.     for (int i = 0; i < lw; ++i)
  157.         for (int j = 0; j < lk; ++j)
  158.         {
  159.             R[i][j] = Rn[i][j];
  160.             G[i][j] = Gn[i][j];
  161.             B[i][j] = Bn[i][j];
  162.         }
  163.     break;
  164.     case 'e':
  165.     {
  166.         int M[3][3] = { {-1,0,-1},{0,4,0},{-1,0,-1} };
  167.         for (int i = 1; i < lw - 1; ++i)
  168.             for (int j = 1; j < lk - 1; ++j)
  169.             {
  170.                 Rn[i][j] =
  171.                     (R[i - 1][j - 1] * M[0][0] + R[i - 1][j] * M[0][1] + R[i - 1][j + 1] * M[0][2] +
  172.                         R[i][j - 1] * M[1][0] + R[i][j] * M[1][1] + R[i][j + 1] * M[1][2] +
  173.                         R[i + 1][j - 1] * M[2][0] + R[i + 1][j] * M[2][1] + R[i + 1][j + 1] * M[2][2])
  174.                     / (M[0][0] + M[0][1] + M[0][2] + M[1][0] + M[1][1] + M[1][2] + M[2][0] + M[2][1] + M[2][2] + 1);
  175.                 Gn[i][j] =
  176.                     (G[i - 1][j - 1] * M[0][0] + G[i - 1][j] * M[0][1] + G[i - 1][j + 1] * M[0][2] +
  177.                         G[i][j - 1] * M[1][0] + G[i][j] * M[1][1] + G[i][j + 1] * M[1][2] +
  178.                         G[i + 1][j - 1] * M[2][0] + G[i + 1][j] * M[2][1] + G[i + 1][j + 1] * M[2][2])
  179.                     / (M[0][0] + M[0][1] + M[0][2] + M[1][0] + M[1][1] + M[1][2] + M[2][0] + M[2][1] + M[2][2] + 1);
  180.                 Bn[i][j] =
  181.                     (B[i - 1][j - 1] * M[0][0] + B[i - 1][j] * M[0][1] + B[i - 1][j + 1] * M[0][2] +
  182.                         B[i][j - 1] * M[1][0] + B[i][j] * M[1][1] + B[i][j + 1] * M[1][2] +
  183.                         B[i + 1][j - 1] * M[2][0] + B[i + 1][j] * M[2][1] + B[i + 1][j + 1] * M[2][2])
  184.                     / (M[0][0] + M[0][1] + M[0][2] + M[1][0] + M[1][1] + M[1][2] + M[2][0] + M[2][1] + M[2][2] + 1);
  185.             }
  186.         for (int i = 0; i < lw; ++i)
  187.             for (int j = 0; j < lk; ++j)
  188.             {
  189.                 R[i][j] = Rn[i][j];
  190.                 G[i][j] = Gn[i][j];
  191.                 B[i][j] = Bn[i][j];
  192.             }
  193.     }   break;
  194.     case '+':
  195.     {   for (int i = 0; i < lw; ++i)
  196.         for (int j = 0; j < lk; ++j)
  197.         {
  198.             Rn[i][j] += 10;
  199.             Gn[i][j] += 10;
  200.             Bn[i][j] += 10;
  201.         }
  202.     for (int i = 0; i < lw; ++i)
  203.         for (int j = 0; j < lk; ++j)
  204.         {
  205.             R[i][j] = Rn[i][j];
  206.             G[i][j] = Gn[i][j];
  207.             B[i][j] = Bn[i][j];
  208.         }
  209.     }   break;
  210.     case '-':
  211.     {   for (int i = 0; i < lw; ++i)
  212.             for (int j = 0; j < lk; ++j)
  213.             {
  214.                 Rn[i][j] -= 10;
  215.                 Gn[i][j] -= 10;
  216.                 Bn[i][j] -= 10;
  217.             }
  218.         for (int i = 0; i < lw; ++i)
  219.             for (int j = 0; j < lk; ++j)
  220.             {
  221.                 R[i][j] = Rn[i][j];
  222.                 G[i][j] = Gn[i][j];
  223.                 B[i][j] = Bn[i][j];
  224.             }
  225.         break;
  226.     }
  227.     glutPostRedisplay();
  228.     }
  229. }
  230.  
  231.     static void idle(void)
  232.     {
  233.         glutPostRedisplay();
  234.     };
  235.  
  236.     const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
  237.     const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  238.     const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  239.     const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
  240.     const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
  241.     const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
  242.     const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  243.     const GLfloat high_shininess[] = { 100.0f };
  244.  
  245.  
  246.     int main(int argc, char* argv[])
  247.     {
  248.         ifstream plik;
  249.         plik.open("zd3.txt");
  250.         int pomI;
  251.         plik >> pomI >> pomI;
  252.         for (int i = 0; i < lw; ++i)
  253.             for (int j = 0; j < lk; ++j)
  254.             {
  255.                 plik >> R[i][j] >> G[i][j] >> B[i][j];
  256.                 Rg[i][j] = Rn[i][j] = R[i][j];
  257.                 Gg[i][j] = Gn[i][j] = G[i][j];
  258.                 Bg[i][j] = Bn[i][j] = B[i][j];
  259.             }
  260.         plik.close();
  261.         glutInit(&argc, argv);
  262.         glutInitWindowSize(640, 480);
  263.         glutInitWindowPosition(10, 10);
  264.         glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
  265.         glutCreateWindow("GLUT Filtry");
  266.         glutReshapeFunc(resize);
  267.         glutDisplayFunc(display);
  268.         glutKeyboardFunc(key);
  269.         glutIdleFunc(idle);
  270.         glClearColor(1, 1, 1, 1);
  271.         glEnable(GL_CULL_FACE);
  272.         glCullFace(GL_BACK);
  273.         glEnable(GL_DEPTH_TEST);
  274.         glDepthFunc(GL_LESS);
  275.         glEnable(GL_LIGHT0);
  276.         glEnable(GL_NORMALIZE);
  277.         glEnable(GL_COLOR_MATERIAL);
  278.         glEnable(GL_LIGHTING);
  279.         glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
  280.         glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
  281.         glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
  282.         glLightfv(GL_LIGHT0, GL_POSITION, light_position);
  283.         glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
  284.         glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
  285.         glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
  286.         glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
  287.         glutMainLoop();
  288.         return EXIT_SUCCESS;
  289.     }
Add Comment
Please, Sign In to add comment