Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include <fstream>
- #include <GL/glut.h>
- using namespace std;
- void display();
- void specialKeys();
- void szescian();
- void ostroslup();
- double rotate_y = 25;
- double rotate_x = -15;
- GLfloat W[9][3] =
- {
- {0.5, 0.5, -0.5},//przod prawy gora 0
- {-0.5, 0.5, -0.5},//przod lewy gora 1
- {0.5, -0.5, -0.5},//przod prawy dol 2
- {-0.5, -0.5, -0.5},//przod lewy dol 3
- {0.5f, 0.5f, 0.5f},//tyl prawy gora 4
- {-0.5f, -0.5f, 0.5f},//tyl lewy dol 5
- {-0.5f, 0.5f, 0.5f},//tyl lewy gora 6
- {0.5f, -0.5f, 0.5f},//tyl prawo dol 7
- {0,0.75,0} //wierzcholek ostroslupa 8
- };
- void WypiszDoPliku()
- {
- ofstream fout;
- fout.open("wierzcholki.txt");
- if (fout.good())
- {
- cout << "Każda wiersz to wierzcholek o wspolrzednych 'x','y' oraz 'z' zawarty w kalumnach " << endl;
- for (unsigned i = 0; i < 9; i++)
- {
- for (unsigned j = 0; j < 3; j++)
- {
- fout << W[i][j] << " ";
- }
- fout << endl;
- }
- fout.close();
- }
- }
- void display() {
- // Clear screen and Z-buffer
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- // Reset transformations
- glLoadIdentity();
- // Rotate when user changes rotate_x and rotate_y
- glRotatef(rotate_x, 1.0, 0.0, 0.0);
- glRotatef(rotate_y, 0.0, 1.0, 0.0);
- szescian();
- ostroslup();
- glFlush();
- glutSwapBuffers();
- }
- // ----------------------------------------------------------
- // specialKeys() Callback Function
- // ----------------------------------------------------------
- void specialKeys(int key, int x, int y) {
- // Right arrow - increase rotation by 5 degree
- if (key == GLUT_KEY_RIGHT)
- rotate_y += 5;
- // Left arrow - decrease rotation by 5 degree
- else if (key == GLUT_KEY_LEFT)
- rotate_y -= 5;
- else if (key == GLUT_KEY_UP)
- rotate_x += 5;
- else if (key == GLUT_KEY_DOWN)
- rotate_x -= 5;
- // Request display update
- glutPostRedisplay();
- }
- // ----------------------------------------------------------
- // main() function
- // ----------------------------------------------------------
- int main(int argc, char* argv[]) {
- // Initialize GLUT and process user parameters
- glutInit(&argc, argv);
- // Request double buffered true color window with Z-buffer
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
- glutInitWindowSize(800, 800);
- glutInitWindowPosition(0, 0);
- // Create window
- glutCreateWindow("Awesome Cube");
- // Enable Z-buffer depth test
- glEnable(GL_DEPTH_TEST);
- // Callback functions
- glutDisplayFunc(display);
- glutSpecialFunc(specialKeys);
- WypiszDoPliku();
- // Pass control to GLUT for events
- glutMainLoop();
- return 0;
- }
- void szescian()
- {
- //ZIELONY
- glPushMatrix();
- glBegin(GL_LINES);
- glColor3f(0, 1, 0);
- //lewa - gora
- glVertex3f(W[0][0],W[0][1],W[0][2]);
- glVertex3f(W[1][0],W[1][1],W[1][2]);
- //prawa - gora
- glVertex3f(W[0][0], W[0][1], W[0][2]);
- glVertex3f(W[4][0],W[4][1],W[4][2]);
- //pion - wysokosc
- glVertex3f(W[0][0], W[0][1], W[0][2]);
- glVertex3f(W[2][0],W[2][1],W[2][2]);
- glEnd();
- glPopMatrix();
- //CZERWONY
- glPushMatrix();
- glBegin(GL_LINES);
- glColor3f(1, 0, 0);
- //prawy - dol
- glVertex3f(W[3][0],W[3][1],W[3][2]);
- glVertex3f(W[2][0], W[2][1], W[2][2]);
- //pion - wysokosc
- glVertex3f(W[3][0], W[3][1], W[3][2]);
- glVertex3f(W[1][0], W[1][1], W[1][2]);
- //lewy - dol
- glVertex3f(W[3][0], W[3][1], W[3][2]);
- glVertex3f(W[5][0],W[5][1],W[5][2]);
- glEnd();
- glPopMatrix();
- //NIEBIESKI
- glPushMatrix();
- glBegin(GL_LINES);
- glColor3f(0, 0, 1);
- //prawy - gora
- glVertex3f(W[6][0],W[6][1],W[6][2]);
- glVertex3f(W[1][0], W[1][1], W[1][2]);
- //pion - wysokosc
- glVertex3f(W[6][0], W[6][1], W[6][2]);
- glVertex3f(W[5][0], W[5][1], W[5][2]);
- //lewy - gora
- glVertex3f(W[6][0], W[6][1], W[6][2]);
- glVertex3f(W[4][0], W[4][1], W[4][2]);
- glEnd();
- glPopMatrix();
- //FIOLETOWY
- glPushMatrix();
- glBegin(GL_LINES);
- glColor3f(1, 0, 1);
- //prawy - dol
- glVertex3f(W[7][0], W[7][1], W[7][2]);
- glVertex3f(W[5][0], W[5][1], W[5][2]);
- //pion - wysokosc
- glVertex3f(W[7][0], W[7][1], W[7][2]);
- glVertex3f(W[4][0], W[4][1], W[4][2]);
- //lewo - dol
- glVertex3f(W[7][0], W[7][1], W[7][2]);
- glVertex3f(W[2][0], W[2][1], W[2][2]);
- glEnd();
- glPopMatrix();
- }
- void ostroslup()
- {
- //BLEKITNY
- glPushMatrix();
- glBegin(GL_LINES);
- glColor3f(0, 1, 1);
- //lewa - przod
- glVertex3f(W[8][0], W[8][1], W[8][2]);
- glVertex3f(W[1][0], W[1][1], W[1][2]);
- //prawa przod
- glVertex3f(W[8][0], W[8][1], W[8][2]);
- glVertex3f(W[0][0], W[0][1], W[0][2]);
- //prawa tyl
- glVertex3f(W[8][0], W[8][1], W[8][2]);
- glVertex3f(W[4][0], W[4][1], W[4][2]);
- //lewa tyl
- glVertex3f(W[8][0], W[8][1], W[8][2]);
- glVertex3f(W[6][0], W[6][1], W[6][2]);
- glEnd();
- glPopMatrix();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement