1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo chuyên đề học phần đồ họa máy tính đề tài mô phỏng chuyển động của ô tô

15 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mô phỏng chuyển động của ô-tô
Tác giả Đinh Vũ Mạnh
Người hướng dẫn Ngô Trường Giang
Trường học Trường Đại Học Điện Lực
Chuyên ngành Công nghệ phần mềm
Thể loại Báo cáo chuyên đề học phần
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 15
Dung lượng 100,74 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN ĐỒ HỌA MÁY TÍNH ĐỀ TÀI Mô phỏng chuyển động của ô tô Sinh viên thực hiện Đinh Vũ Mạnh Chuyên ngành Công nghệ phần mềm Mã sin[.]

Trang 1

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN

ĐỒ HỌA MÁY TÍNH

ĐỀ TÀI:

Mô phỏng chuyển động của ô-tô

Sinh viên thực

hiện:

Đinh Vũ Mạnh Chuyên ngành: Công nghệ phần mềm

Mã sinh viên: 20810320132

GVHD: Ngô Trường Giang

Hà Nội, tháng 4 năm 2023

Trang 2

PHIẾU CHẤM ĐIỂM

Sinh viên thực hiện:

Đinh Vũ Mạnh

Giảng viên chấm:

Giảng viên chấm 1 :

Giảng viên chấm 2 :

Trang 3

MỤC LỤC

I.PHÁT BIỂU BÀI TOÁN 1

II.PHƯƠNG ÁN GIẢI QUYẾT BÀI TOÁN 1

1.Vẽ mô hình 3D ô-tô 1

1.1.Phương pháp thực hiện 1

1.2.Minh họa cách thực hiện 2

2.Tạo các chuyển động của ô-tô 4

2.1.Phương pháp thực hiện 4

2.2.Minh họa cách thực hiện 4

3.Thiết lập tô màu 5

4.Thay đổi góc nhìn 5

III.LẬP TRÌNH XỬ LÝ, DEMO KẾT QUẢ 6

1.Lập trình xử lý 6

2.Demo kết quả 7

IV.KẾT LUẬN 12

Trang 4

I.PHÁT BIỂU BÀI TOÁN

Mô phỏng chuyển động của ô-tô trong không gian 3D bằng lập trình C++ với thư viện đồ họa OpenGL và freeglut, cụ thể là:

-Vẽ mô hình 3D ô-tô dựa vào các đối tượng cơ bản trong thư viện đồ họa

-Dựa vào các phép biến đổi 3D, tạo hoạt cảnh ô-tô thực hiện các chuyển động sau:

+Tiến +Lùi +Sang trái +Sang phải -Thiết lập tô màu ô-tô

-Thay đổi góc nhìn

II.PHƯƠNG ÁN GIẢI QUYẾT BÀI TOÁN

1.Vẽ mô hình 3D ô-tô

1.1.Phương pháp thực hiện

Để vẽ mô hình 3D ô-tô, nhóm nghiên cứu đã sử dụng các hàm tạo đối tượng cơ bản trong thư viện đồ họa, kết hợp với các phép biến đổi Các hàm tạo đối tượng trong thư viện freeglut được sử dụng bao gồm:

-Hàm glutSolidCube: Vẽ hình lập phương với cạnh a = size

-Hàm glutSolidTorus: được sử dụng để vẽ một hình Torus (hình nhẫn)

Các đối tượng trên được kết hợp với các phép biến đổi để tạo ra thân

xe, bánh xe của ô-tô, cụ thể là:

Trang 5

-Hàm glScalef(GLfloat x, GLfloat y, GLfloat z); //Biến đổi tỷ lệ kích thước các đối tượng cơ bản với tỷ lệ x theo trục X, tỷ lệ y theo trục Y và tỷ

lệ z theo trục Z với tâm tỷ lệ tại gốc tọa độ;

-Hàm glTranslatef(GLfloat x, GLfloat y, GLfloat z); //Tịnh tiến hệ trục tọa độ theo véc tơ tịnh tiến nối từ gốc tọa độ đến điểm (x, y, z);

-Hàm glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); //Quay 1 góc angle (angle > 0 thì quay ngược chiều kim đồng hồ) quanh trục nối gốc tọa độ với điểm (x, y, z)

-Sử dụng hàm glPushMatrix() và glPopMatrix() để lưu và khôi phục

hệ tọa độ chưa được điều chỉnh

1.2.Minh họa cách thực hiện

-Thân xe được vẽ bằng các hàm:

glPushMatrix()

glTranslatef()

glRotatef()

glBegin(GL_POLYGON)

glVertex3f()

glEnd()

void car()

{

glPushMatrix();

if (run == 0)

{

spin_wheel = 0;

}

else

{

spin_wheel += spin_k_wheel;

if (spin_wheel >= 360) spin_wheel -= 360;

else if (spin_wheel <= -360) spin_wheel += 360;

qd = 3.14 * 1.5 / 180 * abs(spin_k_wheel);

Trang 6

GLfloat sin_w = sin(spin_y * 3.14159 / 180), cos_w = cos(spin_y * 3.14159 / 180);

id_x += run * qd * sin_w;

id_z += run * qd * cos_w;

}

glTranslatef(id_x, 1.88, id_z);

glRotatef(spin_y, 0, 1, 0);

glRotatef(90, 0, 1, 0);

glPushMatrix();

-Cửa sổ:

color_rgb(0, 0, 255);

glBegin(GL_POLYGON);

glVertex3f(-2.5, 7.5, 3.66);

glVertex3f(0.5, 7.5, 3.66);

glVertex3f(0.5, 5.5, 4);

glVertex3f(-4, 5.5, 4);

glEnd();

glPopMatrix();

color_rgb(0, 0, 255);

glBegin(GL_POLYGON);

glVertex3f(-2.5, 7.5, -3.66);

glVertex3f(0.5, 7.5, -3.66);

glVertex3f(0.5, 5.5, -4);

glVertex3f(-4, 5.5, -4);

glEnd();

glPopMatrix();

color_rgb(0, 0, 255);

glBegin(GL_POLYGON);

glVertex3f(-5.8, 4, 3.5);

glVertex3f(-3.4, 7.5, 3.2);

glVertex3f(-3.4, 7.5, -3.2);

glVertex3f(-5.8, 4, -3.5);

glEnd();

-Bánh xe:

glPushMatrix()

glTranslatef()

glRotatef()

Trang 7

glLineWidth()

glVertex3f()

glutSolidTorus()

2.Tạo các chuyển động của ô-tô

2.1.Phương pháp thực hiện

Ô-tô tiến lùi bằng các lệnh từ bàn phím, thay đổi góc nhìn bằng lệnh từ chuột

void Keyboard(unsigned char ch, int x, int y)

void Mouse(int button, int state, int x, int y)

void Motion(int x, int y)

{

float turn_del, tipp_del, x_del, y_del;

static int c = 0, x_sav, y_sav;

static float turn_save = 0.0, tipp_save = 0.0;

void OnSpecialKeyDown(int key, int xx, int yy)

void OnSpecialKeyUp(int key, int xx, int yy)

2.2.Minh họa cách thực hiện

2.2.1.Ô-tô tiến

case GLUT_KEY_UP:

run = 1.0;

spin_k_wheel = abs(spin_k_wheel);

break;

2.2.3.Ô-tô lùi

case GLUT_KEY_DOWN:

run = -1.0;

spin_k_wheel = -abs(spin_k_wheel);

Trang 8

2.2.4.Ô-tô sang trái

case GLUT_KEY_LEFT:

spin_y += 4;

if (spin_y > 180) spin_y = -180;

break;

2.2.5.Ô-tô sang phải

case GLUT_KEY_RIGHT:

spin_y -= 4;

if (spin_y < -180) spin_y = 180;

break;

3.Thiết lập tô màu

-Chỉnh ánh sáng bằng lệnh GLfloat ambient_light[] = {}

GLfloat diffuse_light[] = {}

GLfloat specular_light[] = {}

GLfloat light_position[] = {}

-Chỉnh màu bằng lệnh

glColor3f()

color_rgb() 4.Thay đổi góc nhìn

int new_mouse = 0, mouse_rot = 1, mouse_trn = 0:khai báo các biến để lưu trữ thông tin về tình trạng của chuột Và thay đổi góc nhìn bằng chuột void Mouse(int button, int state, int x, int y)

{

x_click = x;

y_click = y;

Trang 9

new_mouse = 1;

}

III.LẬP TRÌNH XỬ LÝ, DEMO KẾT QUẢ

1.Lập trình xử lý

Code lập trình bằng ngôn ngữ C++

Trang 10

2.Demo kết quả

Trang 11

8

Trang 13

10

Trang 15

IV.KẾT LUẬN

Qua quá trình nghiên cứu và thực hiện, về cơ bản bài tập lớn đã hoàn thành và đã đạt được những kết quả sau:

-Tổng kết được phương pháp vẽ, từ đó đã xây dựng được mô hình Robot 3D bằng ngôn ngữ C++ với các đối tượng và các phép biến đổi cơ bản trong thư viện đồ họa OPENGL và FREEGLUT

-Tổng kết được phương pháp tạo hoạt động cho các đối tượng, từ đó đã thực hiện được các hoạt cảnh hoạt động của Robot 3D, bao gồm:

+Ô-tô tiến +Ô-tô lùi

+Ô-tô sang trái

+Ô-tô sang phải

-Thiết lập màu cho Ô-tô

-Thay đổi góc nhìn

Ngày đăng: 21/05/2023, 05:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w