Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
0,97 MB
File đính kèm
BTL nhóm 4.rar
(607 KB)
Nội dung
TRƯƠNG ĐAI HOC CÔNG NGHIÊP HA NÔI KHOA CÔNG NGHÊ THÔNG TIN BAO CAO BAI TÂP LƠN MƠN: ĐỒ HOA MAY TÍNH ĐỀ TAI: VẼ CĂN PHÒNG NGỦ Giảng viên: Vũ Minh Yến Nhóm : Phan Văn Học 2019603225 Chu Văn Long 2019602734 Nguyễn Đức Tuấn 2019604244 Lớp: 2021IT6010003 -Ha Nôi, 20211 Mục lục Contents Lời nói đầu Đồ họa máy tính lĩnh vực khoa học máy tính nghiên cứu sở toán học, thuật toán kĩ thuật phép tạo, hiển thị điều khiển hình ảnh hình máy tính Đồ họa máy tính có liên quan nhiều đến số lĩnh vực đại số, hình học giải tích, hình học họa hình, quang học, kĩ thuật máy tính, đặc biệt chế tạo phần cứng (các loại hình, thiết bị xuất, nhập, vỉ mạch đồ họa ) Theo nghĩa rộng hơn, đồ họa máy tính phương pháp cơng nghệ dùng việc chuyển đổi qua lại liệu hình ảnh hình máy tính Đồ họa máy tính hay kĩ thuật đồ họa máy tính cịn hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ mơ hình tốn học mơ tả đối tượng hay liệu lấy từ đối tượng thực tế Thuật ngữ "đồ họa máy tính" (computer graphics) đề xuất chuyên gia người Mĩ tên William Fetter vào năm 1960 Khi ơng nghiên cứu xây dựng mơ hình buồng lái máy bay cho hãng Boeing William Fetter dựa hình ảnh chiều mơ hình người phi công buồng lái để xây dựng nên mơ hình buồng lái tối ưu cho máy bay Boeing Đây phương pháp nghiên cứu vào thời kì Phương pháp cho phép nhà thiết kế quan sát cách trực quan vị trí người lái khoang buồng lái William Fetter đặt tên cho phương pháp computer graphics CHƯƠNG I, MÔ TẢ BAI TOAN Giới thiệu đề tài Ý tưởng Hình Ảnh mơ hình mơt phịng ngủ Thiết kế nội thất phịng ngủ nhận quan tâm gia chủ khơng gian riêng u thích ngơi nhà Nếu phịng khách khơng gian sinh hoạt chung cần thiết kế cho hài hòa phù hợp với tất thành viên phịng ngủ nơi bạn tự thể cá tính thân, dù kích thước lớn hay nhỏ cần mang dấu ấn cá nhân thành viên nhà Mơ tả mơ hình -Tổng quan phịng ngủ bao gồm: • Một phịng khối hộp: tường mặt: mặt trái, mặt phải, mặt trước, mặt sau giường ngủ + tủ đầu giường có ngăn kéo + tủ đứng bàn học + ghế + quạt trần cửa vào + cửa sổ Mơ tả chương trình • • • u cầu chương trình -Mơ hoạt động vật thể phịng ngủ -Mơ thể yếu tố ánh sáng góc nhìn vật thể Mơ tả chức chương trình -Sử dụng phím • • • • • • • Sử dụng phím “a”, “d”, ”w”, ”s” để quay trái, quay phải, quay lên trên, quay xuống cho tồn phịng Sử dụng phím ”z” ”Z” để phóng to thu nhỏ phịng Sử dụng phím “m” “M” để mở/ đóng ngăn kéo Sử dụng phím số “0” để bật /tắt quạt Sử dụng phím “k” “K” để mở/ đóng tủ đứng Sử dụng phím “B” “b” để mở/đóng cửa Sử dụng phím “o”,”p”,”r”,”9” để thay đổi view -Các yếu tố ánh sáng góc nhìn tạo ngẫu nhiên Mơi trường lập trình -Chương trình chạy Visual Studio ngôn ngữ C++ sử dụng OpenGL CHƯƠNG II, MỘT SỐ KỸ THUẬT ĐIỂN HÌNH PHAT TRIỂN CHƯƠNG TRÌNH Mơ tả mơ hình bước xây dựng Các bước xây dựng -Các thành phần mô hình xây dựng từ hình lập phương đơn vị Bước 1: Xác định vị trí đặt hệ tọa độ Descartes chiều Bước 2: Xây dựng hình lập phương đơn vị Bước 3: Sử dụng phép biến đổi để xây dựng vật thể phòng Bước 4: Tô màu cho thành phần Các phép biến đổi sử dụng Phép biến đổi Phép tịnh tiến Phép quay Phép quay quanh trục OX Phép quay quanh trục OY Phép quay quanh trục OZ Phép biến đổi tỉ lệ Phép chiếu sáng Góc nhìn(View) Phép vẽ Vẽ hình hộp chữ nhật CHƯƠNG III, KẾT QUẢ CHƯƠNG TRÌNH Mơ tả code Mơ hình quạt trần void ToMau(double x, double y, double z, double t) { material_diffuse = vec4(x, y, z, t); diffuse_product = light_diffuse * material_diffuse; glUniform4fv(glGetUniformLocation(program, "DiffuseProduct"), 1, diffuse_product); } void moto() { for (float i = 0; i < 360; i++) { instance = RotateY(i) * Scale(0.1f, 0.05f, 0.1f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } } void trucQuat() { for (float i = 0; i < 360; i++) { instance = Translate(0.0, 0.175f, 0.0) * RotateY(i) * Scale(0.02f, 0.3f, 0.02f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } } float fanTheta = 0; void canhQuat1() { instance = Translate(0, 0, 0) * RotateY(fanTheta) * Scale(0.6f, 0.01f, 0.05f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } void canhQuat2() { float bTheta = fanTheta + 60; instance = Translate(0, 0, 0) * RotateY(bTheta) * Scale(0.6f, 0.01f, 0.05f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } void canhQuat3() { float aTheta = fanTheta + 120; instance = Translate(0, 0, 0) * RotateY(aTheta) * Scale(0.6f, 0.01f, 0.05f); glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance); glDrawArrays(GL_TRIANGLES, 0, NumPoints); } void BoCanhQuat() { ToMau(1, 0, 0, 1); canhQuat1(); canhQuat2(); canhQuat3(); } void quat() { trucQuat(); model1 *= RotateY(Theta[1]); BoCanhQuat(); moto(); } void quayQuat(void) { if (turnOf == 1) { if (percentTheta < 20) { percentTheta += 0.25; } fanTheta = fanTheta + percentTheta * power; if (fanTheta >= 360) { fanTheta = 0; } } glutPostRedisplay(); } 10 Mơ hình giường void giuong() { ToMau(0, 0, 1, 1); instance2 = Translate(0.45f, -0.50f, 0.00f); mat(0.9f, 0.6f, 0.05f); instance2 = Translate(0.45f, -0.47f, 0.00f); mat(0.85f, 0.55f, 0.03f); instance2 = Translate(0.45f, -0.57f, 0.3f); changiuong(0.85f, 0.02f, 0.1f); instance2 = Translate(0.45f, -0.57f, -0.3f); changiuong(0.85f, 0.02f, 0.1f); instance2 = Translate(0.0f, -0.57f, 0.0f); changiuong(0.02f, 0.55f, 0.1f); instance2 = Translate(0.9f, -0.4f, 0.0f); changiuong(0.02f, 0.58f, 0.3f); 11 instance2 = Translate(0.88f, -0.4f, 0.0f); changiuong(0.02f, 0.58f, 0.2f); instance2 = Translate(0.9f, -0.35f, 0.3f); changiuong(0.02f, 0.02f, 0.3f); instance2 = Translate(0.9f, -0.35f, -0.3f); changiuong(0.02f, 0.02f, 0.3f); instance2 = Translate(0.0f, -0.57f, 0.3f); changiuong(0.02f, 0.02f, 0.12f); instance2 = Translate(0.0f, -0.57f, -0.3f); changiuong(0.02f, 0.02f, 0.12f); } Mơ hình tủ đứng void tu() { ToMau(1, 1, 0, 1); instance2 = Translate(-0.85f, -0.05f, 0.50f); // tren cung createElement(0.2f, 0.02f, 0.50f); instance2 = Translate(-0.85f, -0.45f, 0.50f);// giua createElement(0.2f, 0.02f, 0.50f); 12 instance2 = Translate(-0.85f, -0.35f, 0.76f); createElement(0.2f, 0.6f, 0.032f); instance2 = Translate(-0.85f, -0.35f, 0.58f); createElement(0.2f, 0.6f, 0.032f); instance2 = Translate(-0.85f, -0.35f, 0.25f); createElement(0.2f, 0.6f, 0.015f); instance2 = Translate(-0.85f, -0.35f, 0.41f); createElement(0.2f, 0.6f, 0.015f); instance2 = Translate(-0.92f, -0.35f, 0.50f); createElement(0.015f, 0.6f, 0.5f); } GLfloat quay = 0; GLfloat mo = 0; void canh1() { instance2 = Translate(-0.75f, -0.35f, 0.67f); createElement(0.02f, 0.6f, 0.17f); } void canh2() { instance2 = Translate(-0.75f, -0.35f, 0.5f) * Translate(0, 0, 0.17 / 2) * RotateY(-quay) * Translate(0, 0, -0.17 / 2); createElement(0.02f, 0.6f, 0.17f); 13 } void canh3() { instance2 = Translate(-0.75f, -0.35f, 0.33f) * Translate(0, 0, -0.17 / 2) * RotateY(quay) * Translate(0, 0, 0.17 / 2); createElement(0.02f, 0.6f, 0.17f); } Mơ hình bàn void ban() { //matban ToMau(0, 1, 0.5, 1); instance2 = Translate(-0.83f, -0.4f, (-1 + 0.47f / 2)); createElement(0.3f, 0.02f, 0.45f); //cacchanban //trai,sau instance2 = Translate(-0.94f, -0.55f, (-1 + 0.45f)); createElement(0.02f, 0.3f, 0.02f); //trai,truoc instance2 = Translate(-(1 - 0.3f), -0.55f, -(1 - 0.45f)); createElement(0.02f, 0.3f, 0.02f); //phai,sau 14 instance2 = Translate(-0.94f, -0.55f, -0.94f); createElement(0.02f, 0.3f, 0.02f); //phai,truoc instance2 = Translate(-(1 - 0.3f), -0.55f, -0.94f); createElement(0.02f, 0.3f, 0.02f); } Mơ hình ghế void ghe() { ToMau(0, 0.5, 0, 1); trans = Translate(g, 0, 0) * Translate(-0.7f, 0, (-1 + 0.45f / 2)); //mat ghe instance2 = Translate(0, -0.55f, 0) * trans; createElement(0.15f, 0.02f, 0.15f); //changhe //trai,sau instance2 = Translate(-0.15f / 2, -0.55f - 0.15f / 2, 0.15 / 2) * trans; createElement(0.01f, 0.15f, 0.01f); 15 instance2 = Translate(0.15f / 2, -0.55f - 0.15f / 2, 0.15 / 2) * trans; createElement(0.01f, 0.15f, 0.01f); instance2 = Translate(-0.15f / 2, -0.55f - 0.15 / 2, -0.15 / 2) * trans; createElement(0.01f, 0.15f, 0.01f); instance2 = Translate(0.15f / 2, -0.55f - 0.15 / 2, -0.15 / 2) * trans; createElement(0.01f, 0.15f, 0.01f); // } Mơ hình tủ đầu giường + ngăn kéo void tu1() { ToMau(0.5, 0.5, 0.3, 1); instance2 = Translate(0.8f, -0.4f, 0.45f); createElement(0.2f, 0.02f, 0.25f); instance2 = Translate(0.8f, -0.47f, 0.45f); createElement(0.2f, 0.02f, 0.25f); instance2 = Translate(0.8f, -0.6f, 0.45f); 16 createElement(0.2f, 0.02f, 0.25f); instance2 = Translate(0.8f, -0.51f, 0.57f); createElement(0.2f, 0.25f, 0.02f); instance2 = Translate(0.8f, -0.51f, 0.33f); createElement(0.2f, 0.25f, 0.02f); instance2 = Translate(0.9f, -0.51f, 0.450f); createElement(0.015f, 0.2f, 0.25f); } GLfloat dm = 0; void ngankeotu1() { instance2 = Translate(0.8f - dm, -0.46f, 0.45f); createElement(0.19f, 0.02f, 0.24f); instance2 = Translate(0.8f - dm, -0.45f, 0.35f); createElement(0.19f, 0.065f, 0.02f); instance2 = Translate(0.8f - dm, -0.45f, 0.55f); createElement(0.19f, 0.065f, 0.02f); instance2 = Translate(0.9f - dm, -0.51f, 0.450f); createElement(0.015f, 0.06f, 0.24f); instance2 = Translate(0.7f - dm, -0.45f, 0.450f); createElement(0.015f, 0.065f, 0.245f); 17 } void canhtu1() { instance2 = Translate(0.7f, -0.55f, 0.450f); createElement(0.015f, 0.125f, 0.245f); } Hình ảnh minh họa chương trình Hình Bắt đầu chạy chương trình 18 Hình View nhìn theo trục OY 19 Hình View nhìn theo trục OZ Hình View nhìn theo trục OX 20 Hình Ảnh ấn tất phím điều khiển 21 ... instance2 = Translate(-0.83f, -0.4f, (-1 + 0 .47 f / 2)); createElement(0.3f, 0.02f, 0 .45 f); //cacchanban //trai,sau instance2 = Translate(-0.94f, -0.55f, (-1 + 0 .45 f)); createElement(0.02f, 0.3f,... Translate(0.8f, -0.4f, 0 .45 f); createElement(0.2f, 0.02f, 0.25f); instance2 = Translate(0.8f, -0 .47 f, 0 .45 f); createElement(0.2f, 0.02f, 0.25f); instance2 = Translate(0.8f, -0.6f, 0 .45 f); 16 createElement(0.2f,... createElement(0.015f, 0.06f, 0.24f); instance2 = Translate(0.7f - dm, -0 .45 f, 0 .45 0f); createElement(0.015f, 0.065f, 0. 245 f); 17 } void canhtu1() { instance2 = Translate(0.7f, -0.55f, 0 .45 0f); createElement(0.015f,