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[.]
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ô chuyển động ô-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 Lớp: D15CNMP6 GVHD: Ngô Trường Giang Hà Nội, tháng năm 2023 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: Họ tên Chữ ký Ghi Chữ ký Ghi Đinh Vũ Mạnh Giảng viên chấm: Họ tên Giảng viên chấm : Giảng viên chấm : MỤC LỤC I.PHÁT BIỂU BÀI TOÁN II.PHƯƠNG ÁN GIẢI QUYẾT BÀI TOÁN .1 1.Vẽ mơ hình 3D ô-tô 1.1.Phương pháp thực 1.2.Minh họa cách thực 2.Tạo chuyển động ô-tô 2.1.Phương pháp thực 2.2.Minh họa cách thực 3.Thiết lập tô màu 4.Thay đổi góc nhìn III.LẬP TRÌNH XỬ LÝ, DEMO KẾT QUẢ .6 1.Lập trình xử lý 2.Demo kết .7 IV.KẾT LUẬN 12 I.PHÁT BIỂU BÀI TỐN Mơ chuyển động ơ-tơ khơng gian 3D lập trình C++ với thư viện đồ họa OpenGL freeglut, cụ thể là: -Vẽ mơ hình 3D ô-tô dựa vào đối tượng thư viện đồ họa -Dựa vào phép biến đổi 3D, tạo hoạt cảnh ô-tô thự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 TỐN 1.Vẽ mơ hình 3D ơ-tơ 1.1.Phương pháp thực Để vẽ mơ hình 3D ơ-tơ, nhóm nghiên cứu sử dụng hàm tạo đối tượng thư viện đồ họa, kết hợp với phép biến đổi Các hàm tạo đối tượng thư viện freeglut 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: sử dụng để vẽ hình Torus (hình nhẫn) Các đối tượng kết hợp với phép biến đổi để tạo thân xe, bánh xe ô-tô, cụ thể là: -Hàm glScalef(GLfloat x, GLfloat y, GLfloat z); //Biến đổi tỷ lệ kích thước đối tượng với tỷ lệ x theo trục X, tỷ lệ y theo trục Y tỷ lệ z theo trục Z với tâm tỷ lệ 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 góc angle (angle > 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() glPopMatrix() để lưu khôi phục hệ tọa độ chưa điều chỉnh 1.2.Minh họa cách thực -Thân xe vẽ 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 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 lệnh GLfloat ambient_light[] = {} GLfloat diffuse_light[] = {} GLfloat specular_light[] = {} GLfloat light_position[] = {} -Chỉnh màu 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 biến để lưu trữ thơng tin tình trạng chuột Và thay đổi góc nhìn chuột void Mouse(int button, int state, int x, int y) { x_click = x; y_click = y; 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 ngơn ngữ C++ 2.Demo kết 10 11 IV.KẾT LUẬN Qua trình nghiên cứu thực hiện, tập lớn hoàn thành đạt kết sau: -Tổng kết phương pháp vẽ, từ xây dựng mơ hình Robot 3D ngơn ngữ C++ với đối tượng phép biến đổi thư viện đồ họa OPENGL FREEGLUT -Tổng kết phương pháp tạo hoạt động cho đối tượng, từ thực hoạt cảnh hoạt động 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 12