Facebook
From Bitty Agouti, 3 Months ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 56
  1. /* * GLUT Shapes Demo * * Written by Nigel Stewart November 2003 * * This program is test harness for the sphere, cone * and torus shapes in GLUT. * * Spinning wireframe and smooth shaded shapes are * displayed until the ESC or q key is pressed.  The * number of geometry stacks and slices can be adjusted * using the + and - keys. */ #include<windows.h> #ifdef __APPLE__ #include <GLUT/glut.h> #else #include <GL/glut.h> #endif
  2. #include <stdlib.h> #include<fstream> #include<iostream>
  3. using namespace std;
  4. const int lw=1339; const int lk=2000; int R[lw][lk]; int G[lw][lk]; int B[lw][lk];
  5. int Rg[lw][lk]; int Gg[lw][lk]; int Bg[lw][lk];
  6. int Rn[lw][lk]; int Gn[lw][lk]; int Bn[lw][lk];
  7. /* GLUT callback Handlers */
  8. static void resize(int width, int height) {    const float ar = (float) width / (float) height;
  9.     glViewport(0, 0, width, height);    glMatrixMode(GL_PROJECTION);    glLoadIdentity();
  10.     glOrtho(0,lk,0,lw,-10,10);
  11.     glMatrixMode(GL_MODELVIEW);    glLoadIdentity() ; }
  12. static void display(void) {
  13.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    glColor3d(1,0,0);    glPointSize(10);
  14.     glBegin(GL_POINTS);    for(int i=0;i<lw;++i)    for(int j=0;j<lk;++j)    {        glColor3f(Rn[i][j]/255.0,                  Gn[i][j]/255.0,                  Bn[i][j]/255.0);                glVertex3f(j,i,0);
  15.     } glEnd();
  16.     glutSwapBuffers(); }
  17. static void key(unsigned char key, int x, int y) {    switch (key)    {    case '+':        for(int i=0;i<lw;++i)            for(int j=0;j<lk;++j)            {                Rn[i][j]+=10;                Gn[i][j]+=10;                Bn[i][j]+=10;            }        for(int i=0;i<lw;++i)            for(int j=0;j<lk;++j)            {                R[i][j]=Rn[i][j];                G[i][j]=Gn[i][j];                B[i][j]=Bn[i][j];            }            break;    case '-':        for(int i=0;i<lw;++i)            for(int j=0;j<lk;++j)
  18.             {        Rn[i][j]-=10;        Gn[i][j]-=10;        Bn[i][j]-=10;            }        for(int i=0;i<lw;++i)            for(int j=0;j<lk;++j)            {                R[i][j]=Rn[i][j];                G[i][j]=Gn[i][j];                B[i][j]=Bn[i][j];
  19.             }            break;
  20.         case 'x':        for(int i=0;i<lw;++i)        for(int j=0;j<lk;++j)        {            R[i][j]=Rg[i][j];            G[i][j]=Gg[i][j];            B[i][j]=Bg[i][j];            Rn[i][j]=R[i][j];            Gn[i][j]=G[i][j];            Bn[i][j]=B[i][j];        }            break;
  21.         case 'b':        for(int i=0;i<lw;++i)        for(int j=0;j<lk;++j)        {            Rn[i][j]=0;            Gn[i][j]=0;            Bn[i][j]=B[i][j];        }            break;        case 'r':        for(int i=0;i<lw;++i)        for(int j=0;j<lk;++j)        {            Rn[i][j]=R[i][j];;            Gn[i][j]=0;            Bn[i][j]=0;
  22.         }            break;            case 'g':            for(int i=0;i<lw;++i)            for(int j=0;j<lk;++j)            {                Rn[i][j]=0;
  23.                 Gn[i][j]=G[i][j];                Bn[i][j]=0;
  24.             }            break;
  25.             //Filtr dolnoprzepustowy - u┼Ťredniaj─ůcy
  26.             case 'd':                {            int M[3][3]={{1,1,1},{1,1,1},{1,1,1}};            for(int i=1;i<lw-1;++i)            for(int j=1;j<lk-1;++j)            {                Rn[i][j]=                (R[i-1][j-1]*M[0][0]+R[i-1][j]*M[0][1]+R[i-1][j+1]*M[0][2]+                 R[i  ][j-1]*M[1][0]+R[i  ][j]*M[1][1]+R[i  ][j+1]*M[1][2]+                 R[i+1][j-1]*M[2][0]+R[i+1][j]*M[2][1]+R[i+1][j+1]*M[2][2])                /(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]);                Gn[i][j]=                (G[i-1][j-1]*M[0][0]+G[i-1][j]*M[0][1]+G[i-1][j+1]*M[0][2]+                 G[i  ][j-1]*M[1][0]+G[i  ][j]*M[1][1]+G[i  ][j+1]*M[1][2]+                 G[i+1][j-1]*M[2][0]+G[i+1][j]*M[2][1]+G[i+1][j+1]*M[2][2])                /(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]);                Bn[i][j]=                (B[i-1][j-1]*M[0][0]+B[i-1][j]*M[0][1]+B[i-1][j+1]*M[0][2]+                 B[i  ][j-1]*M[1][0]+B[i  ][j]*M[1][1]+B[i  ][j+1]*M[1][2]+                 B[i+1][j-1]*M[2][0]+B[i+1][j]*M[2][1]+B[i+1][j+1]*M[2][2])                /(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]);            }}
  27.             for(int i=0;i<lw;++i)            for(int j=0;j<lk;++j)            {                R[i][j]=Rn[i][j];                G[i][j]=Gn[i][j];                B[i][j]=Bn[i][j];
  28.             }
  29.             break;
  30.     //Filtr g├│rnoprzepustowy - usu┼ä ┼Ťredni─ů    case 'h':                {            int M[3][3]={{-1,-1,-1},{-1,9,-1},{-1,-1,-1}};            for(int i=1;i<lw-1;++i)            for(int j=1;j<lk-1;++j)            {                Rn[i][j]=                (R[i-1][j-1]*M[0][0]+R[i-1][j]*M[0][1]+R[i-1][j+1]*M[0][2]+
  31.                  R[i  ][j-1]*M[1][0]+R[i  ][j]*M[1][1]+R[i  ][j+1]*M[1][2]+                 R[i+1][j-1]*M[2][0]+R[i+1][j]*M[2][1]+R[i+1][j+1]*M[2][2])                /(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]);                Gn[i][j]=                (G[i-1][j-1]*M[0][0]+G[i-1][j]*M[0][1]+G[i-1][j+1]*M[0][2]+                 G[i  ][j-1]*M[1][0]+G[i  ][j]*M[1][1]+G[i  ][j+1]*M[1][2]+                 G[i+1][j-1]*M[2][0]+G[i+1][j]*M[2][1]+G[i+1][j+1]*M[2][2])                /(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]);                Bn[i][j]=                (B[i-1][j-1]*M[0][0]+B[i-1][j]*M[0][1]+B[i-1][j+1]*M[0][2]+                 B[i  ][j-1]*M[1][0]+B[i  ][j]*M[1][1]+B[i  ][j+1]*M[1][2]+                 B[i+1][j-1]*M[2][0]+B[i+1][j]*M[2][1]+B[i+1][j+1]*M[2][2])                /(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]);
  32.             }}
  33.             for(int i=0;i<lw;++i)            for(int j=0;j<lk;++j)            {                R[i][j]=Rn[i][j];                G[i][j]=Gn[i][j];                B[i][j]=Bn[i][j];
  34.             }
  35.             break;
  36.             //Filtry Laplace'a - LAPL2    case 's':                {            int M[3][3]={{-1,-1,-1},{-1,8,-1},{-1,-1,-1}};            for(int i=1;i<lw-1;++i)            for(int j=1;j<lk-1;++j)            {                Rn[i][j]=                (R[i-1][j-1]*M[0][0]+R[i-1][j]*M[0][1]+R[i-1][j+1]*M[0][2]+                 R[i  ][j-1]*M[1][0]+R[i  ][j]*M[1][1]+R[i  ][j+1]*M[1][2]+                 R[i+1][j-1]*M[2][0]+R[i+1][j]*M[2][1]+R[i+1][j+1]*M[2][2])                /(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);                Gn[i][j]=                (G[i-1][j-1]*M[0][0]+G[i-1][j]*M[0][1]+G[i-1][j+1]*M[0][2]+                 G[i  ][j-1]*M[1][0]+G[i  ][j]*M[1][1]+G[i  ][j+1]*M[1][2]+                 G[i+1][j-1]*M[2][0]+G[i+1][j]*M[2][1]+G[i+1][j+1]*M[2][2])                /(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);                Bn[i][j]=                (B[i-1][j-1]*M[0][0]+B[i-1][j]*M[0][1]+B[i-1][j+1]*M[0][2]+                 B[i  ][j-1]*M[1][0]+B[i  ][j]*M[1][1]+B[i  ][j+1]*M[1][2]+                 B[i+1][j-1]*M[2][0]+B[i+1][j]*M[2][1]+B[i+1][j+1]*M[2][2])                /(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);
  37.             }}
  38.             for(int i=0;i<lw;++i)            for(int j=0;j<lk;++j)            {                R[i][j]=Rn[i][j];                G[i][j]=Gn[i][j];                B[i][j]=Bn[i][j];            }
  39.             break;
  40.     }    glutPostRedisplay(); } static void idle(void) {    glutPostRedisplay(); }
  41. int main(int argc, char *argv[]) {   ifstream plik;    plik.open("d:\\zd5.txt");    int pomI;    plik>>pomI>>pomI;    for(int i=0;i<lw;++i)    for(int j=0;j<lk;++j)    {        plik>>R[i][j]>>G[i][j]>>B[i][j];        Rg[i][j]=Rn[i][j]=R[i][j];        Gg[i][j]=Gn[i][j]=G[i][j];        Bg[i][j]=Bn[i][j]=B[i][j];    }    plik.close();
  42.     glutInit(&argc, argv);    glutInitWindowSize(800,600);    glutInitWindowPosition(10,10);    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
  43.     glutCreateWindow("GLUT Shapes");
  44.     glutReshapeFunc(resize);    glutDisplayFunc(display);    glutKeyboardFunc(key);    glutIdleFunc(idle);
  45.     glClearColor(1,1,1,1);
  46.     glutMainLoop();
  47.     return EXIT_SUCCESS;
  48.     }