Tải bản đầy đủ (.pptx) (14 trang)

Bài tập lớn báo cáo vẽ ôtô chạy trên mặt phẳng ngang môi trường visual c++ OPENGL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (392.22 KB, 14 trang )

TRƯỜNG ĐHCN VINH
KHOA : CÔNG NGHỆ

BỘ MÔN: ĐỒ HỌA MÁY TÍNH (OPENGL)

BÀI TẬP:VẼ OTO CHẠY TRÊN MẶT PHẲNG NGANG

GVHD: NGUYỄN THỊ HIỀN
NHÓM:BÙI ĐỨC HIẾU
NGUYỄN ĐÌNH CHUẨN
NGUYỄN KHẮC BÌNH
LỚP :K2DCNTT


NỘI DUNG





GIỚI THIỆU ĐỀ TÀI
NÊU Ý TƯỞNG, GIẢI QUYẾT BÀI TOÁN
CHẠY CHƯƠNG TRÌNH


I.GIỚI THIỆU ĐỀ TÀI




Thiết kế một oto đơn giản chạy trên mặt ngang của màn hình


Oto chạy từ viền trái đến viền phải màn hình thì quay lại từ trái tạo cảm giác oto đang chạy liền mạch trên màn hinh


Nền tảng và môi trường phát triển


II.NÊU Ý TƯỞNG, GIẢI QUYẾT BÀI TOÁN

1.

Nêu ý tưởng

Thiết kế khối tứ giác và hai hình tròn dặcđể tạo oto có cấu tạo đơn giảnđơn giản

•.
•.
•.

Sử dụng hàm tịnh tiến glTranslate để di chuyển tứ giác và 2 hình tròn
Sử dụng hàm quay glRotate để quay 2 (bánh) hình tròn
Sử dụng hàm điều kiện if lúc nào oto chay đến giới hạn hiển thị thì cho x trở lại vị trí ban đầu


2. giải quyết bài toán







Tham chiếu thư viện

#include<glut.h>
#include<gl/GLU.h>
#include<gl/GL.h>

 Khai báo


#define ESCAPE 27



int window;



float rtri = 0.0;



float rquad = 0.0;


// định dạng màn hình
void ReSizeGLScene(int Width, int Height)
{
if (Height == 0)
Height = 1;
glViewport(0, 0, Width, Height);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, (GLfloat)Width / (GLfloat)Height, 0.1f, 100.0f);
glMatrixMode(GL_MODELVIEW);
}


//banh xe
void drawBall(void) {
float X = -0.5f;

glColor3f(1.0, 1.0, 1.0);
glTranslatef(X, Y, Z);//tinh tien

float Y = 0.0f;
float Z = 0.0f;

glRotatef (X, X, Y, Z);//quay
glutSolidSphere(0.3, 20, 20);
glTranslatef(X + 2, Y, Z);
glutSolidSphere(0.3, 20, 20); //hinh cau dac
}


void DISPLAY()
{
glClear(GL_COLOR_BUFFER_BIT |

glBegin(GL_QUADS); //glBegin(GL_LINE_STRIP)
glColor3f(1.0f, 1.0f, 0.0f);

glVertex3f(-1.0f, 1.0f, 0.0f);

GL_DEPTH_BUFFER_BIT);
glVertex3f(1.0f, 1.0f, 0.0f);
glLoadIdentity();
glVertex3f(2.0f, 0.0f, 0.0f);
glTranslatef(rtri, 0.0f, -6.0f);
glVertex3f(-1.0f, 0.0f, 0.0f);


void keyPressed(unsigned char key, int x, int y)
glEnd();
{
drawBall();
rtri += 0.001f;

if (key == ESCAPE)

if (rtri>2)

{

rtri = -2.0f;

glutDestroyWindow(window);

rquad -= 15.0f;
glutSwapBuffers();

exit(0);

}
}

}


int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH);
glutInitWindowSize(1000, 640);
glutInitWindowPosition(0, 0);
glutCreateWindow("TEST ");
glutDisplayFunc(DISPLAY);
}


glutIdleFunc(DISPLAY);
glutReshapeFunc(&ReSizeGLScene);
glutKeyboardFunc(&keyPressed);
glutMainLoop();
return 1;


Phần 3. chạy chương trình





×