TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN MÔN ĐỒ HỌA MÁY TÍNH ĐỀ TÀI Mô phỏng gian hàng bán các loại tàu hỏa đồ chơi trẻ em bằng OpenGL khả lập trình.
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘING ĐẠI HỌC CÔNG NGHIỆP HÀ NỘII HỌC CÔNG NGHIỆP HÀ NỘIC CÔNG NGHIỆP HÀ NỘIP HÀ NỘII KHOA CÔNG NGHỆP HÀ NỘI THÔNG TIN BÁO CÁO BÀI TẬP LỚNP LỚNN MƠN: ĐỒ HỌA MÁY TÍNH HỌC CƠNG NGHIỆP HÀ NỢIA MÁY TÍNH ĐỀ TÀI: TÀI: Mơ gian hàng bán loại tàu hỏa đồ chơi trẻng gian hàng bán loại tàu hỏa đồ chơi trẻi tàu hỏng gian hàng bán loại tàu hỏa đồ chơi trẻa đồ chơi trẻ chơi trẻi trẻ em OpenGL khả lập trình Visual C++ng OpenGL khả lập trình Visual C++ lập trình Visual C++p trình Visual C++ Giảng viên: ng viên: Ths Vũ Minh Yếnn Nhóm : Phạm Quốc Anh - 20200604668m Quốc Anh - 20200604668c Anh - 20200604668 Vương Duy Hiếu - 2019604218ng Duy Hiếnu - 2019604218 Đỗ Đình Hồ - 2019605868 Đình Hồ - 2019605868 Nguyễn Tài Tiến - 2019602750n Tài Tiếnn - 2019602750 Lớp: p: 20214IT6010001 -Hà Nội, 202i, 20221 Mục lụcc lục lụcc Mục lụcc lục lụcc DANH MỤC HÌNH ẢNHC HÌNH ẢNHNH Lời nói đầui nói đầuu CHƯƠNG I: MÔ TẢ BÀI TỐNNG I: MƠ TẢNH BÀI TỐN Giới thiệu đề tàii thiệu đề tàiu đề tài tài Ý tưởngng Mô tả lập trình Visual C++ mơ hình Mơ tả lập trình Visual C++ chươi trẻng trình CHƯƠNG I: MÔ TẢ BÀI TỐNNG II: MỘT SỐ KỸ THUẬT ĐIỂN HÌNH PHÁT TRIỂN CHƯƠNG T SỐ KỸ THUẬT ĐIỂN HÌNH PHÁT TRIỂN CHƯƠNG KỸ THUẬT ĐIỂN HÌNH PHÁT TRIỂN CHƯƠNG T ĐIỂN HÌNH PHÁT TRIỂN CHƯƠNG N HÌNH PHÁT TRIỂN HÌNH PHÁT TRIỂN CHƯƠNG N CHƯƠNG I: MƠ TẢ BÀI TỐNNG TRÌNH Mô tả lập trình Visual C++ mơ hình bưới thiệu đề tàic xây dựngng .7 Các bưới thiệu đề tàic xây dựngng Các phép biến đổi sử dụngn đổi sử dụngi sử dụng dục lụcng Phép biến đổi sử dụngn đổi sử dụngi Phép vẽ cơi trẻ bả lập trình Visual C++n CHƯƠNG I: MƠ TẢ BÀI TỐNNG III: KẾT QUẢ CHƯƠNG TRÌNHT QUẢNH CHƯƠNG I: MƠ TẢ BÀI TỐNNG TRÌNH Mô tả lập trình Visual C++ code Mơ hình quại tàu hỏa đồ chơi trẻt trầun Mơ hình tàu đười nói đầung ray 10 Mơ hình ngăn tủ kệ để đồ chơi kệu đề tài để đồ chơi đồ chơi trẻ chơi trẻi .16 Mơ hình cử dụnga 19 Hình ả lập trình Visual C++nh minh họa chương trìnha chươi trẻng trình 21 TÀI LIỆU THAM KHẢOU THAM KHẢNHO 24 DANH MỤC HÌNH ẢNHC HÌNH ẢNHNH Hình ẢNHnh mơ hình đồ chơi trẻ chơi trẻi tàu hỏng gian hàng bán loại tàu hỏa đồ chơi trẻa cho trẻ em Hình Màn hình bắt đầu chạy chương trìnht đầuu chại tàu hỏa đồ chơi trẻy chươi trẻng trình 21 Hình View nhìn theo trục lụcc Oy 22 Hình View nhìn theo trục lụcc Oz 22 Hình View nhìn theo trục lụcc Ox 23 Hình Trại tàu hỏa đồ chơi trẻng thái đồ chơi trẻ vập trình Visual C++t sau ấn tất phím điều khiểnn tất phím điều khiểnt lập trình Visual C++ phím điề tàiu khiể đồ chơin 23 Lời nói đầui nói đầuu Đồ chơi trẻ họa chương trìnha máy tính lĩnh vực củat lĩnh vựngc củ kệ để đồ chơia khoa họa chương trìnhc máy tính nghiên cứuu tài cơi trẻ sởng tốn họa chương trìnhc, thuập trình Visual C++t tốn kĩ thuập trình Visual C++t để đồ chơi cho phép tàu hỏa đồ chơi trẻo, hiể đồ chơin thị điều khiển hình ảnh hình điề tàiu khiể đồ chơin hình ả lập trình Visual C++nh hình máy tính Đồ chơi trẻ họa chương trìnha máy tính có liên quan nhiề tàiu đến đổi sử dụngn lĩnh vực củat số lĩnh vực lĩnh vựngc đại tàu hỏa đồ chơi trẻi số lĩnh vực như, hình họa chương trìnhc giả lập trình Visual C++i tích, hình họa chương trìnhc họa chương trìnha hình, quang họa chương trìnhc, kĩ thuập trình Visual C++t máy tính, đặc biệt chế c biệu đề tàit chến đổi sử dụng tàu hỏa đồ chơi trẻo phầun cứung (các loại tàu hỏa đồ chơi trẻi hình, thiến đổi sử dụngt bị điều khiển hình ảnh hình xuấn tất phím điều khiểnt, nhập trình Visual C++p, vỉ mạch mại tàu hỏa đồ chơi trẻch đồ chơi trẻ họa chương trìnha ) Theo nghĩa rột lĩnh vực củang trẻn, đồ chơi trẻ họa chương trìnha máy tính phươi trẻng pháp công nghệu đề tài dùng việu đề tàic chuyể đồ chơin đổi sử dụngi qua lại tàu hỏa đồ chơi trẻi liệu hình ảnh a dữa liệu hình ảnh liệu đề tàiu hình ả lập trình Visual C++nh hình OpenGL khả lập trình Visual C++ng máy tính Đồ chơi trẻ họa chương trìnha máy tính hay kĩ thuập trình Visual C++t đồ chơi trẻ họa chương trìnha máy tính cịn hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ c hiể đồ chơiu thiệu đề tàii dại tàu hỏa đồ chơi trẻng phươi trẻng pháp kĩ thuập trình Visual C++t tàu hỏa đồ chơi trẻo hình ả lập trình Visual C++nh từ các mơ hình tốn họa chương trìnhc mơ tả lập trình Visual C++ đố lĩnh vực nhưi tược hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ ng hay dữa liệu hình ảnh liệu đề tàiu lấn tất phím điều khiểny hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ c từ các đố lĩnh vực nhưi tược hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ ng thựngc tến đổi sử dụng Thuập trình Visual C++t ngữa liệu hình ảnh "đồ chơi trẻ họa chương trìnha máy tính" (computer graphics) hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ c đề tài xuấn tất phím điều khiểnt bởngi lĩnh vực củat chuyên gia người nói đầui Mĩ tên William Fetter vào năm 1960 Khi ơng nghiên cứuu xây dựngng mơ hình buồ chơi trẻng lái máy bay cho hãng Boeing William Fetter dựnga hình ả lập trình Visual C++nh chiề tàiu củ kệ để đồ chơia mơ hình người nói đầui phi cơng buồ chơi trẻng lái để đồ chơi xây dựngng nên mô hình buồ chơi trẻng lái tố lĩnh vực nhưi ưu cho máy bay Boeing Đây phươi trẻng pháp nghiên c ứuu r ấn tất phím điều khiểnt thiệu đề tàii vào thời nói đầui kì Phươi trẻng pháp cho phép nhà thiến đổi sử dụngt kến đổi sử dụng quan sát lĩnh vực củat cách trựngc quan vị điều khiển hình ảnh hình trí củ kệ để đồ chơia người nói đầui lái khoang buồ chơi trẻng lái William Fetter đặc biệt chế t tên cho phươi trẻng pháp củ kệ để đồ chơia computer graphics CHƯƠNG I: MƠ TẢ BÀI TỐNNG I: MÔ TẢNH BÀI TOÁN Giớp: i thiệu đề tàiu đề tài tài Ý tưởngng Hình Ảnh mơ hình đồ chơi tàu hỏa cho trẻ emnh mơ hình đồ chơi tàu hỏa cho trẻ em chơi tàu hỏa cho trẻ emi tàu hỏa cho trẻ ema cho trẻ em em Thiếnt kến phòng chơng Duy Hiếu - 2019604218i tàu hoảng viên: trẻ em em rấn tất phím điều khiểnt cầun thiến đổi sử dụngt cho mọa chương trìnhi gia đình có nhỏng gian hàng bán loại tàu hỏa đồ chơi trẻ Sựng kến đổi sử dụngt hợc hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ p với thiệu đề tàii tàu đười nói đầung ray tàu hỏa đồ chơi trẻo lập trình Visual C++m giác thú vị điều khiển hình ảnh hình kến đổi sử dụngt hợc hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ p với thiệu đề tàii cánh quại tàu hỏa đồ chơi trẻt cử dụnga sổi sử dụng tàu hỏa đồ chơi trẻo khơng qian thống mát hài hồ cho lĩnh vực củat trông gian nhỏng gian hàng bán loại tàu hỏa đồ chơi trẻ Mô tảng viên: mơ hình -Tổi sử dụngng quan tài gian hang đồ chơi trẻ chơi trẻi tàu hoả lập trình Visual C++ bao gồ chơi trẻm: Một lĩnh vực củat phòng khố lĩnh vực nhưi hột lĩnh vực củap: bứuc tười nói đầung mặc biệt chế t: mặc biệt chế t trái, mặc biệt chế t phả lập trình Visual C++i, mặc biệt chế t sau 10 tàu + đười nói đầung ray + kệu đề tài để đồ chơi tàu quại tàu hỏa đồ chơi trẻt trầun cử dụnga vào + cử dụnga sổi sử dụng Mô tảng viên: chương Duy Hiếu - 2019604218ng trình Yêu cầu chương trìnhu chương trìnha chương trìnhng trình - Mơ gian hàng bán loại tàu hỏa đồ chơi trẻng hoại tàu hỏa đồ chơi trẻt đột lĩnh vực củang củ kệ để đồ chơia vập trình Visual C++t thể đồ chơi gian hàng đồ chơi trẻ chơi trẻi tàu hoả lập trình Visual C++ - Mơ gian hàng bán loại tàu hỏa đồ chơi trẻng thể đồ chơi hiệu đề tàin hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ c yến đổi sử dụngu tố lĩnh vực tài ánh sáng góc nhìn v ập trình Visual C++t thể đồ chơi Mô tả chức chương trình chức chương trìnhc chương trìnha chương trìnhng trình - Sử dụng dục lụcng phím B/b để đồ chơi đóng mởng cử dụnga H/h để đồ chơi kéo vào kệu đề tài đồ chơi trẻ chơi trẻi t để đồ chơi bập trình Visual C++t , tắt đầu chạy chương trìnht quại tàu hỏa đồ chơi trẻt 1/2/3 để đồ chơi mạch nh tố lĩnh vực nhưc đột lĩnh vực quại tàu hỏa đồ chơi trẻt quay G/g, U/u, I/i để đồ chơi di chuyể đồ chơin tàu đười nói đầung ray để đồ chơi chuyể đồ chơin góc camera Z/z, O/o, P/p, R/r để đồ chơi thựngc hiệu đề tàin thao tác camera - Các yến đổi sử dụngu tố lĩnh vực ánh sáng góc nhìn hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ c tàu hỏa đồ chơi trẻo ngẫu nhiênu nhiên Môi trường lập trìnhng lập trìnhp trình - Chươi trẻng trình hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ c chại tàu hỏa đồ chơi trẻy Visual Studio ngơn ngữa liệu hình ảnh C++ sử dụng d ục lụcng OpenGL CHƯƠNG I: MƠ TẢ BÀI TỐNNG II: MỢIT SỐ KỸ THUẬT ĐIỂN HÌNH PHÁT KỸ THUẬP LỚNT ĐIỂN HÌNH PHÁTN HÌNH PHÁT TRIỂN HÌNH PHÁTN CHƯƠNG I: MƠ TẢ BÀI TỐNNG TRÌNH Mơ tảng viên: mơ hình bướp: c xây dựngng Các bướp: c xây dựngng - Các thành phầun củ kệ để đồ chơia mơ hình hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ c xây dựngng từ hình lập trình Visual C++p phươi trẻng đ trẻn v ị điều khiển hình ảnh hình Bưới thiệu đề tàic 1: Xác đị điều khiển hình ảnh hìnhnh vị điều khiển hình ảnh hình trí đặc biệt chế t hệu đề tài tọa chương trìnha đột lĩnh vực Descartes chiề tàiu Bưới thiệu đề tàic 2: Xây dựngng hình lập trình Visual C++p phươi trẻng đơi trẻn vị điều khiển hình ảnh hình Bưới thiệu đề tàic 3: Sử dụng dục lụcng phép biến đổi sử dụngn đổi sử dụngi để đồ chơi xây dựngng vập trình Visual C++t thể đồ chơi củ kệ để đồ chơia phịng Bưới thiệu đề tàic 4: Tơ màu cho thành phầun Các phép biếnn đổi sử dụngi sử dụng dục lụcng Phép biếnn đổi sử dụngi + Phép tị điều khiển hình ảnh hìnhnh tiến đổi sử dụngn + Phép quay + Phép quay quanh trục lụcc OX + Phép quay quanh trục lụcc OY + Phép quay quanh trục lụcc OZ + Phép biến đổi sử dụngn đổi sử dụngi tỉ mạch lệu đề tài + Phép chiến đổi sử dụngu sáng + Góc nhìn(View) Phép vẽ cơng Duy Hiếu - 2019604218 bảng viên: n Vẽ hình hột lĩnh vực củap chữa liệu hình ảnh nhập trình Visual C++t, hình trục lục trịn CHƯƠNG I: MƠ TẢ BÀI TỐNNG III: KẾT QUẢ CHƯƠNG TRÌNHT QUẢNH CHƯƠNG I: MƠ TẢ BÀI TỐNNG TRÌNH Mơ tảng viên: code Mơ hình quạm Quốc Anh - 20200604668t trầun void dongCo() { for (float i = 0; i < 360; i++) { instance = RotateY(i) * Scale(0.11f, 0.05f, 0.1f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } } void truc() { for (float i = 0; i < 360; i++) { instance = Translate(0.0, 0.175f, 0.0) * RotateY(i) * Scale(0.015f, 0.3f, 0.015f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } for (float i = 0; i < 360; i++) { instance = RotateY(i) * Scale(0.05f, 0.1f, 0.1f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } } float fan = 0; void CanhQuat1() { instance = Translate(0, 0, 0) * RotateY(fan) * Scale(0.65f, 0.01f, 0.07f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } void CanhQuat2() { float b = fan + 90; instance = Translate(0, 0, 0) * RotateY(b) * Scale(0.65f, 0.01f, 0.07f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } void boCanhQuat() { ToMau(0, 0.8, 0, 1); CanhQuat1(); CanhQuat2(); } void quat() { truc(); model1 *= RotateY(Theta[1]); boCanhQuat(); dongCo(); } float perTheta = 0.5; float so = 1; float onoff = 1; void quayQuat(void) { if (onoff == 1) { if (perTheta < 20) { perTheta += 0.25; } fan = fan + perTheta * so; if (fan >= 360) { fan = 0; } } glutPostRedisplay(); } Mơ hình tàu đười nói đầung ray void tau2() { 10 ToMau(0, 0, 1, 1); //duong ray //thanhdoc instance2 = Translate(0.2f, -0.65f, 0.6f); khoihop(1.15f, 0.01f, 0.015f); instance2 = Translate(0.2f, -0.65f, -0.3f); khoihop(1.15f, 0.01f, 0.015f); instance2 = Translate(0.2f, -0.65f, 0.5f); khoihop(0.95f, 0.01f, 0.015f); instance2 = Translate(0.2f, -0.65f, -0.2f); khoihop(0.95f, 0.01f, 0.015f); //thanh ngang1 instance2 = Translate(-0.2f, -0.65f, 0.55f); khoihop(0.01f, 0.1f, 0.015f); instance2 = Translate(0.0f, -0.65f, 0.55f); khoihop(0.01f, 0.1f, 0.015f); instance2 = Translate(0.2f, -0.65f, 0.55f); khoihop(0.01f, 0.1f, 0.015f); instance2 = Translate(0.4f, -0.65f, 0.55f); khoihop(0.01f, 0.1f, 0.015f); instance2 = Translate(0.6f, -0.65f, 0.55f); khoihop(0.01f, 0.1f, 0.015f); //thanhngang2 instance2 = Translate(-0.2f, -0.65f, -0.25f); khoihop(0.01f, 0.1f, 0.015f); instance2 = Translate(0.0f, -0.65f, -0.25f); khoihop(0.01f, 0.1f, 0.015f); instance2 = Translate(0.2f, -0.65f, -0.25f); 11 khoihop(0.01f, 0.1f, 0.015f); instance2 = Translate(0.4f, -0.65f, -0.25f); khoihop(0.01f, 0.1f, 0.015f); instance2 = Translate(0.6f, -0.65f, -0.25f); khoihop(0.01f, 0.1f, 0.015f); //thanhngang3 instance2 = Translate(-0.33f, -0.65f, 0.45f); khoihop(0.1f, 0.01f, 0.015f); instance2 = Translate(-0.33f, -0.65f, 0.25f); khoihop(0.1f, 0.01f, 0.015f); instance2 = Translate(-0.33f, -0.65f, 0.05f); khoihop(0.1f, 0.01f, 0.015f); instance2 = Translate(-0.33f, -0.65f, -0.15f); khoihop(0.1f, 0.01f, 0.015f); //thanhngang4 instance2 = Translate(0.73f, -0.65f, 0.45f); khoihop(0.1f, 0.01f, 0.015f); instance2 = Translate(0.73f, -0.65f, 0.25f); khoihop(0.1f, 0.01f, 0.015f); instance2 = Translate(0.73f, -0.65f, 0.05f); khoihop(0.1f, 0.01f, 0.015f); instance2 = Translate(0.73f, -0.65f, -0.15f); khoihop(0.1f, 0.01f, 0.015f); //thanhdoc2 instance2 = Translate(-0.38f, -0.65f, 0.15f); khoihop(0.01f, 0.88f, 0.015f); instance2 = Translate(0.78f, -0.65f, 0.15f); khoihop(0.01f, 0.88f, 0.015f); instance2 = Translate(-0.28f, -0.65f, 0.15f); 12 khoihop(0.01f, 0.68f, 0.015f); instance2 = Translate(0.68f, -0.65f, 0.15f); khoihop(0.01f, 0.68f, 0.015f); } void tau1() { ToMau(0.8, 0, 0, 1); trans = Translate(g, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); //toa tau instance2 = Translate(0, -0.6f, 0) * trans; createElement(0.15f, 0.1f, 0.09f); instance2 = Translate(0.16f, -0.6f, 0) * trans; createElement(0.15f, 0.1f, 0.09f); instance2 = Translate(0.32f, -0.6f, 0) * trans; createElement(0.15f, 0.1f, 0.09f); instance2 = Translate(0.47f, -0.61f, 0) * trans; createElement(0.13f, 0.08f, 0.09f); //chantau1 //duong ray ToMau(0.2, 0, 0, 1); instance2 = Translate(1.4f / 2, -0.55f - 0.2f / 2, 0.09 / 2) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(1.9f, 0.015f, 0.01f); 13 instance2 = Translate(1.4f / 2, -0.55f - 0.2 / 2, -0.09 / 2) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(1.9f, 0.015f, 0.01f); instance2 = Translate(0.0f, -0.55f - 0.2 / 2, 0.0) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(0.01f, 0.015f, 0.09f); instance2 = Translate(0.2f, -0.55f - 0.2 / 2, 0.0) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(0.01f, 0.015f, 0.09f); instance2 = Translate(0.4f, -0.55f - 0.2 / 2, 0.0) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(0.01f, 0.015f, 0.09f); instance2 = Translate(0.6f, -0.55f - 0.2 / 2, 0.0) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(0.01f, 0.015f, 0.09f); instance2 = Translate(0.8f, -0.55f - 0.2 / 2, 0.0) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(0.01f, 0.015f, 0.09f); instance2 = Translate(1.0f, -0.55f - 0.2 / 2, 0.0) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(0.01f, 0.015f, 0.09f); instance2 = Translate(1.2f, -0.55f - 0.2 / 2, 0.0) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(0.01f, 0.015f, 0.09f); instance2 = Translate(1.4f, -0.55f - 0.2 / 2, 0.0) * Translate(0, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); createElement(0.01f, 0.015f, 0.09f); 14 // //cua tau ToMau(0, 0.8, 0, 1); instance2 = Translate(0, -0.57f, 0.05) * trans; createElement(0.1f, 0.03f, 0.001f); instance2 = Translate(0, -0.57f, -0.05) * trans; createElement(0.1f, 0.03f, 0.001f); instance2 = Translate(0.16f, -0.57f, 0.05) * trans; createElement(0.1f, 0.03f, 0.001f); instance2 = Translate(0.16f, -0.57f, -0.05) * trans; createElement(0.1f, 0.03f, 0.001f); instance2 = Translate(0.32f, -0.57f, 0.05) * trans; createElement(0.1f, 0.03f, 0.001f); instance2 = Translate(0.32f, -0.57f, -0.05) * trans; createElement(0.1f, 0.03f, 0.001f); instance2 = Translate(0.5f, -0.59f, -0.05) * trans; createElement(0.05f, 0.03f, 0.001f); instance2 = Translate(0.5f, -0.59f, 0.05) * trans; createElement(0.05f, 0.03f, 0.001f); instance2 = Translate(0.535f, -0.59f, 0) * trans; createElement(0.01f, 0.04f, 0.07f); //ong khoi instance2 = Translate(0.5f, -0.56f, 0) * trans; createElement(0.025f, 0.05f, 0.025f); 15 } Mơ hình ngăn tủ kệ để đồ chơi kệu đề tài để đồ chơi đồ chơi chơng Duy Hiếu - 2019604218i void tu() { ToMau(1, 1, 0, 1); //ngan instance2 = Translate(-0.85f, -0.15f, 0.05f) * Translate(h, 0, 0); createElement(0.2f, 0.02f, 1.4f); instance2 = Translate(-0.85f, -0.4f, 0.05f) * Translate(h, 0, 0); createElement(0.2f, 0.02f, 1.4f); instance2 = Translate(-0.85f, -0.65f, 0.05f) * Translate(h, 0, 0); createElement(0.2f, 0.02f, 1.4f); //2 ben instance2 = Translate(-0.85f, -0.35f, 0.76f); createElement(0.2f, 0.6f, 0.032f); instance2 = Translate(-0.85f, -0.35f, -0.65f); createElement(0.2f, 0.6f, 0.015f); //do choi tren ngan ToMau(0, 0.8, 0, 1); instance2 = Translate(-0.85f, -0.58f, 0.58f) * Translate(h, 0, 0); createElement(0.1f, 0.1f, 0.25f); instance2 = Translate(-0.85f, -0.58f, 0.32f) * Translate(h, 0, 0); 16 createElement(0.1f, 0.1f, 0.25f); instance2 = Translate(-0.85f, -0.58f, 0.06f) * Translate(h, 0, 0); createElement(0.1f, 0.1f, 0.25f); instance2 = Translate(-0.85f, -0.58f, -0.2f) * Translate(h, 0, 0); createElement(0.1f, 0.1f, 0.25f); instance2 = Translate(-0.85f, -0.59f, -0.41f) * Translate(h, 0, 0); createElement(0.1f, 0.08f, 0.15f); //do choi tren ngan ToMau(0.8, 0, 0.8, 1); instance2 = Translate(-0.85f, -0.36f, 0.63f) * Translate(h, 0, 0); createElement(0.08f, 0.07f, 0.14f); instance2 = Translate(-0.85f, -0.36f, 0.48f) * Translate(h, 0, 0); createElement(0.08f, 0.07f, 0.14f); instance2 = Translate(-0.85f, -0.36f, 0.33f) * Translate(h, 0, 0); createElement(0.08f, 0.07f, 0.14f); instance2 = Translate(-0.85f, -0.37f, 0.21f) * Translate(h, 0, 0); createElement(0.08f, 0.05f, 0.08f); ToMau(0, 0, 0.8, 1); instance2 = Translate(-0.85f, -0.36f, -0.12f) * Translate(h, 0, 0); createElement(0.08f, 0.07f, 0.14f); instance2 = Translate(-0.85f, -0.36f, -0.27f) * Translate(h, 0, 0); createElement(0.08f, 0.07f, 0.14f); instance2 = Translate(-0.85f, -0.36f, -0.42f) * Translate(h, 0, 0); createElement(0.08f, 0.07f, 0.14f); instance2 = Translate(-0.85f, -0.37f, -0.54f) * Translate(h, 0, 0); createElement(0.08f, 0.05f, 0.08f); 17 //do choi tren ngan ToMau(0, 0, 1, 1); instance2 = Translate(-0.85f, -0.11f, 0.65f) * Translate(h, 0, 0); createElement(0.06f, 0.05f, 0.1f); instance2 = Translate(-0.85f, -0.11f, 0.54f) * Translate(h, 0, 0); createElement(0.06f, 0.05f, 0.1f); instance2 = Translate(-0.85f, -0.12f, 0.46f) * Translate(h, 0, 0); createElement(0.06f, 0.03f, 0.04f); ToMau(1, 1, 0, 1); instance2 = Translate(-0.85f, -0.12f, 0.32f) * Translate(h, 0, 0); createElement(0.06f, 0.03f, 0.04f); instance2 = Translate(-0.85f, -0.11f, 0.24f) * Translate(h, 0, 0); createElement(0.06f, 0.05f, 0.1f); instance2 = Translate(-0.85f, -0.11f, 0.13f) * Translate(h, 0, 0); createElement(0.06f, 0.05f, 0.1f); ToMau(1, 0, 0, 1); instance2 = Translate(-0.85f, -0.12f, -0.005f) * Translate(h, 0, 0); createElement(0.06f, 0.03f, 0.04f); instance2 = Translate(-0.85f, -0.11f, -0.08f) * Translate(h, 0, 0); createElement(0.06f, 0.05f, 0.1f); instance2 = Translate(-0.85f, -0.11f, -0.19f) * Translate(h, 0, 0); createElement(0.06f, 0.05f, 0.1f); ToMau(0, 1, 1, 1); instance2 = Translate(-0.85f, -0.12f, -0.31f) * Translate(h, 0, 0); createElement(0.06f, 0.03f, 0.04f); instance2 = Translate(-0.85f, -0.11f, -0.39f) * Translate(h, 0, 0); 18 createElement(0.06f, 0.05f, 0.1f); instance2 = Translate(-0.85f, -0.11f, -0.5f) * Translate(h, 0, 0); createElement(0.06f, 0.05f, 0.1f); //cac o cua so tren tau ToMau(1, 0.8, 1, 1); instance2 = Translate(-0.802f, -0.56f, 0.58f) * Translate(h, 0, 0); createElement(0.01f, 0.05f, 0.2f); instance2 = Translate(-0.802f, -0.56f, 0.32f) * Translate(h, 0, 0); createElement(0.01f, 0.05f, 0.2f); instance2 = Translate(-0.802f, -0.56f, 0.06f) * Translate(h, 0, 0); createElement(0.01f, 0.05f, 0.2f); instance2 = Translate(-0.802f, -0.56f, -0.2f) * Translate(h, 0, 0); createElement(0.01f, 0.05f, 0.2f); instance2 = Translate(-0.802f, -0.57f, -0.43f) * Translate(h, 0, 0); createElement(0.01f, 0.04f, 0.1f); instance2 = Translate(-0.85f, -0.57f, -0.485f) * Translate(h, 0, 0); createElement(0.08f, 0.04f, 0.01f); instance2 = Translate(-0.85f, -0.52f, -0.45f) * Translate(h, 0, 0); createElement(0.03f, 0.05f, 0.03f); } Mơ hình cử dụnga void Cua() { Cua_view = Translate(0.148f, -0.34f, -0.98f); mat4 CanhCua_view = Translate(0.25, 0.0, 0.0) * RotateY(-mo); ToMau(1.0, 0.5, 0.0, 1.0); mat4 m = Translate(-0.25, 0.0, 0.0) * Scale(0.4f, 0.66f, 0.02f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model * Cua_view * CanhCua_view * m); 19 glDrawArrays(GL_TRIANGLES, 0, NumPoints); } //Num cua ToMau(0.5, 0.7, 0.5, 1); m = Translate(-0.4, 0.0, 0.0) * Scale(0.05, 0.05, 0.1); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model * Cua_view * CanhCua_view * m); glDrawArrays(GL_TRIANGLES, 0, NumPoints); void vienCua() { ToMau(0, 0, 0, 0); //khungcuadi instance2 = Translate(0.148f, 0.015f, -0.98f); createElement(0.42f, 0.05f, 0.05f); instance2 = Translate(0.148f, -0.6800f, -0.98f); createElement(0.42f, 0.05f, 0.05f); instance2 = Translate(-0.07f, -0.335f, -0.98f); createElement(0.05f, 0.75f, 0.04f); instance2 = Translate(0.38f, -0.335f, -0.98f); createElement(0.05f, 0.75f, 0.05f); //khungcuaso instance2 = Translate(0.0f, 0.01f, 1.00f); createElement(0.7f, 0.05f, 0.04f); instance2 = Translate(0.0f, -0.4f, 1.00f); createElement(0.7f, 0.05f, 0.04f); instance2 = Translate(0.0f, -0.08f, 1.00f); createElement(0.7f, 0.01f, 0.04f); 20 ... để đồ chơi đóng mởng cử dụnga H/h để đồ chơi kéo vào kệu đề tài đồ chơi trẻ chơi trẻi t để đồ chơi bập trình Visual C++t , tắt đầu chạy chương trìnht quại tàu hỏa đồ chơi trẻt 1/2/3 để đồ chơi. .. lĩnh vực quại tàu hỏa đồ chơi trẻt quay G/g, U/u, I/i để đồ chơi di chuyể đồ chơin tàu đười nói đầung ray để đồ chơi chuyể đồ chơin góc camera Z/z, O/o, P/p, R/r để đồ chơi thựngc hiệu đề tàin... Mơ gian hàng bán loại tàu hỏa đồ chơi trẻng hoại tàu hỏa đồ chơi trẻt đột lĩnh vực củang củ kệ để đồ chơia vập trình Visual C++t thể đồ chơi gian hàng đồ chơi trẻ chơi trẻi tàu hoả lập trình Visual