Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <list>
- #include<cmath>
- #include <algorithm>
- #include <GL/glut.h>
- #include <GL/gl.h>
- #include <GL/glu.h>
- #include <vector>
- using namespace std;
- double scale = 1.0;
- void draw_line(double x, double y, double x1, double y1) {
- glBegin(GL_LINES);
- glVertex2d(x, y);
- glVertex2d(x1, y1);
- glEnd();
- }
- void draw_restangle(float x, float y,float d,float r,float R ) {
- /*draw_line(x,y,d+x,y);//niz
- draw_line(d+x,y,d+x,r+y);//pravo
- draw_line(x,r+y,x+d,r+y);//verx
- draw_line(x,y,x,y+r);//levo*/
- /* double da=0.01;
- for (double angle=0;angle<2*M_PI;angle+=da){
- double x=R*cos(angle);
- double y=R*sin(angle);
- double x=R*cos(angle+da);
- double y=R*sin(angle+da);
- draw_line(cx+x,cy+y,cx+x,cy+y);*/
- }
- void draw_circle(float cx, float cy,float R ) {
- /*draw_line(x,y,d+x,y);//niz
- draw_line(d+x,y,d+x,r+y);//pravo
- draw_line(x,r+y,x+d,r+y);//verx
- draw_line(x,y,x,y+r);//levo*/
- double da=0.01;
- for (double angle=0;angle<2*M_PI;angle+=da){
- double x=R*cos(angle);
- double y=R*sin(angle);
- double x1=R*cos(angle+da);
- double y1=R*sin(angle+da);
- draw_line(cx,cy,cx+x1,cy+y1);
- }
- }
- void Render() {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity();
- glTranslatef(0, 0, -10);
- glColor3d(1, 1, 1);
- glScalef(scale, scale, scale);
- //
- //draw_restangle(1,1,1,1,1);
- draw_circle(0, 0, 1);
- /*draw_circle(0, 0, 2);
- draw_circle(0, 0, 3);
- draw_circle(0, 0, 4);
- draw_circle(0, 0, 5);
- draw_circle(0, 0, 6);
- draw_circle(0, 0, 7);
- draw_circle(0, 0, 8);*/
- //
- glFlush();
- }
- void update(int t) {
- Render();
- glutTimerFunc(1, update, 0);
- }
- void keyb(unsigned char key, int x, int y) {
- Render();
- }
- void reshape(int w, int h) {
- // если окно сильно перетянуто будет
- if(h == 0)
- h = 1;
- float ratio = 1.0* w / h;
- // используем матрицу проекции
- glMatrixMode(GL_PROJECTION);
- // Reset матрицы
- glLoadIdentity();
- // определяем окно просмотра
- glViewport(0, 0, w, h);
- // установить корректную перспективу.
- gluPerspective(45,ratio,1,1000);
- // вернуться к модели
- glMatrixMode(GL_MODELVIEW);
- }
- int main(int argc, char **argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
- glutInitWindowSize(800, 600);
- glutCreateWindow("Physics Engine");
- glEnable(GL_DEPTH_TEST);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glClearColor(0.1, 0.1, 0.1, 0.1);
- glutTimerFunc(50, update, 0);
- glutReshapeFunc(reshape);
- glutDisplayFunc(Render);
- glutKeyboardFunc(keyb);
- glutMainLoop();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement