Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //// Labo 7 - 9.cpp : Defines the entry point for the console application.
- ////
- //
- //#include "stdafx.h"
- //#include <GL/glut.h>
- //#include <stdlib.h>
- //#include <fstream>
- //#include <vector>
- //#include <iostream>
- //#include "Punkty.h"
- //
- //
- //
- //using namespace std;
- //
- //
- //// funkcja generująca scenę 3D
- //
- //void Display()
- //{
- // vector <Punkty> dane;
- //
- // double x, y, wartosc;
- // fstream plikDoOdczytu;
- // plikDoOdczytu.open("dane.txt", ios::in);
- //
- // while (!plikDoOdczytu.eof()) {
- // plikDoOdczytu >> x >> y >> wartosc;
- // Punkty jedenPunkt(x, y, wartosc);
- // dane.push_back(jedenPunkt);
- // }
- // glClearColor(1.0, 1.0, 1.0, 1.0);
- //
- // // czyszczenie bufora koloru
- // glClear(GL_COLOR_BUFFER_BIT);
- //
- // glMatrixMode(GL_MODELVIEW);
- // glLoadIdentity();
- // glColor3f(1.0, 0.0, 0.0);
- //
- // // początek definicji wielokąta
- // glBegin(GL_POINTS);
- //
- // for (int i = 0; i < dane.size(); i++) {
- // glBegin(GL_POINTS);
- // cout << dane[i].x << " \t" << dane[i].y << " \t" << dane[i].wartosc << endl;
- // glVertex2d(dane[i].x*50, dane[i].y*5);
- // glEnd();
- // glFlush();
- // }
- // // koniec definicji prymitywu
- //
- //
- //
- // // skierowanie poleceń do wykonania
- //
- //
- // // zamiana buforów koloru
- // glutSwapBuffers();
- //}
- //
- //// zmiana wielkości okna
- //
- //void Reshape(int width, int height)
- //{
- // // generowanie sceny 3D
- // Display();
- //}
- //
- //// stałe do obsługi menu podręcznego
- //
- //enum
- //{
- // EXIT // wyjście
- //};
- //
- //// obsługa menu podręcznego
- //
- //void Menu(int value)
- //{
- // switch (value)
- // {
- // // wyjście
- // case EXIT:
- // exit(0);
- // }
- //}
- //
- //int main(int argc, char * argv[])
- //{
- //
- // glutInit(&argc, argv);
- //
- // glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
- //
- // // rozmiary głównego okna programu
- // glutInitWindowSize(400, 400);
- //
- // // utworzenie głównego okna programu
- // glutCreateWindow("Kwadrat 1");
- //
- // // dołączenie funkcji generującej scenę 3D
- // glutDisplayFunc(Display);
- //
- // // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna
- // glutReshapeFunc(Reshape);
- // glutCreateMenu(Menu);
- //
- //
- //#ifdef WIN32
- //
- // glutAddMenuEntry("Wyjście", EXIT);
- //#else
- //
- // glutAddMenuEntry("Wyjscie", EXIT);
- //#endif
- //
- //
- // glutAttachMenu(GLUT_RIGHT_BUTTON);
- // glutMainLoop();
- // system("PAUSE");
- // return 0;
- //}
- //
- ///*
- //int main()
- //{
- // vector <Punkty> dane;
- //
- // double x, y, wartosc;
- // fstream plikDoOdczytu;
- // plikDoOdczytu.open("dane.txt", ios::in);
- //
- // while (!plikDoOdczytu.eof()) {
- // plikDoOdczytu >> x >> y >> wartosc;
- // Punkty jedenPunkt(x, y, wartosc);
- // dane.push_back(jedenPunkt);
- // }
- //
- // for (int i = 0; i < dane.size(); i++) {
- // cout << dane[i].x << " \t" << dane[i].y << " \t" << dane[i].wartosc << endl;
- // }
- //
- // system("PAUSE");
- // return 0;
- //}
- //*/
- #include "stdafx.h"
- #include <GL/glut.h>
- #include <stdlib.h>
- #include <fstream>
- #include <vector>
- #include <iostream>
- #include "Punkty.h"
- using namespace std;
- // stałe do obsługi menu podręcznego
- class punkt
- {
- public:
- double x;
- double y;
- float var;
- };
- punkt t[192];
- void read(punkt *t)
- {
- fstream plik;
- plik.open("dane.txt", std::ios_base::in);
- int i;
- cout << endl;
- for (i = 0;i<192;i++)
- {
- plik >> t[i].x;
- t[i].x *= 15;
- plik >> t[i].y;
- t[i].y *= 5;
- plik >> t[i].var;
- cout << t[i].x << " " << t[i].y << " " << t[i].var << endl;
- }
- }
- enum
- {
- MenuPkt,
- noDither,
- EXIT // wyjście
- };
- void Displayp(punkt *t)
- {
- glClearColor(1.0, 1.0, 1.0, 1.0);
- glClear(GL_COLOR_BUFFER_BIT);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glColor3f(1.0, 0.0, 0.0);
- glShadeModel(GL_SMOOTH);
- glEnable(GL_DITHER);
- glBegin(GL_POLYGON);
- for (int i = 0;i<192;i++)
- {
- float temp = t[i].var;
- float min = 1400 - temp;
- glColor3f(temp / 1400, 0.0, min / 1400);
- glVertex2d(t[i].x, t[i].y-100);
- }
- glEnd();
- // wyłączenie rysowania wzorów linii
- // skierowanie poleceń do wykonania
- glFlush();
- // zamiana buforów koloru
- glutSwapBuffers();
- }
- void DisplayBezDitheringu(punkt *t)
- {
- glClearColor(1.0, 1.0, 1.0, 1.0);
- glClear(GL_COLOR_BUFFER_BIT);
- glEnable(GL_BLEND);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glColor3f(1.0, 0.0, 0.0);
- glShadeModel(GL_SMOOTH);
- glDisable(GL_DITHER);
- glBegin(GL_POLYGON);
- for (int i = 0;i<192;i++)
- {
- float temp = t[i].var;
- float min = 1400 - temp;
- glColor3f(1- (temp / 1400), 0.0, 1- (min / 1400));
- glVertex2d(t[i].x, t[i].y - 100);
- }
- glEnd();
- // wyłączenie rysowania wzorów linii
- // skierowanie poleceń do wykonania
- glFlush();
- // zamiana buforów koloru
- glutSwapBuffers();
- }
- // wskaźnik naciśnięcia lewego przycisku myszki
- int button_state = GLUT_UP;
- void Display()
- {
- // kolor tła - zawartość bufora koloru
- glClearColor(1.0, 1.0, 1.0, 1.0);
- // czyszczenie bufora koloru
- glClear(GL_COLOR_BUFFER_BIT);
- // wybór macierzy modelowania
- glMatrixMode(GL_MODELVIEW);
- // macierz modelowania = macierz jednostkowa
- glLoadIdentity();
- // kolor linii
- glColor3f(1.0, 0.0, 0.0);
- // wyłączenie rysowania wzorów linii
- glDisable(GL_LINE_STIPPLE);
- // skierowanie poleceń do wykonania
- glFlush();
- // zamiana buforów koloru
- glutSwapBuffers();
- }
- // zmiana wielkości okna
- void Reshape(int width, int height)
- {
- // obszar renderingu - całe okno
- glViewport(240, 240, width, height);
- // wybór macierzy rzutowania
- glMatrixMode(GL_PROJECTION);
- // macierz rzutowania = macierz jednostkowa
- glLoadIdentity();
- // rzutowanie prostokątne
- gluOrtho2D(0, width, 0, height);
- // generowanie sceny 3D
- Display();
- }
- void Menu(int value)
- {
- switch (value)
- {
- case MenuPkt:
- Displayp(t);
- break;
- case noDither:
- DisplayBezDitheringu(t);
- break;
- }
- }
- int main(int argc, char * argv[])
- {
- read(t);
- // inicjalizacja biblioteki GLUT
- glutInit(&argc, argv);
- // inicjalizacja bufora ramki
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
- // rozmiary głównego okna programu
- glutInitWindowSize(500, 500);
- // utworzenie głównego okna programu
- glutCreateWindow("Linie");
- // dołączenie funkcji generującej scenę 3D
- glutDisplayFunc(Display);
- // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna
- glutReshapeFunc(Reshape);
- Displayp(t);
- // utworzenie podmenu - Prymitywy
- // menu główne
- glutCreateMenu(Menu);
- #ifdef WIN32
- glutAddMenuEntry("Dithering + RGB", MenuPkt);
- glutAddMenuEntry("Bez ditheringu + CMY", noDither);
- #else
- #endif
- // określenie przycisku myszki obsługującego menu podręczne
- glutAttachMenu(GLUT_RIGHT_BUTTON);
- // wprowadzenie programu do obsługi pętli komunikatów
- glutMainLoop();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement