Báo cáo đồ họa máy tính CDIO k12 HAUI

8 397 6
Báo cáo đồ họa máy tính  CDIO k12 HAUI

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

Thông tin tài liệu

Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về cơ sở toán học, các thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trên màn hình máy tính.Về bản chất: đó là 1 quá trình xây dựng và phát triển các công cụ trên cả hai lĩnh vực phần cứng và phần mềm hỗ trợ cho các lập trình viên thiết kế các chương trình có khả năng đồ họa cao.Việc mô tả dữ liệu thông qua các hình ảnh và màu sắc đa dạng của nó, các chương trình đồ họa thường thu hút người sử dụng bởi tính thân thiện, dễ dùng,… kích thích khả năng sang tạo và nâng cao năng suất làm việc. Do vậy, đồ họa máy tính được ứng dụng trong nhiều lĩnh vực: giáo dục, thương mại…Các chương trình đồ họa ứng dụng cho phép chúng ta làm việc với máy tính một cách thoải mái, tự nhiên.Là sinh viên chúng em được tìm hiểu và làm quen với một số kĩ thuật đồ họa trên máy tính thông qua tài liệu, bài giảng do cô giáo Vũ Minh Yến giảng dạy. Với những kiến thức đã học chúng em quyết định chọn đề tài: Xây dựng mô hình dồ chơi Robot theo OpenGL hiện đại.

Lời mở đầ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 Về chất: q trình xây dựng phát triển công cụ hai lĩnh vực phần cứng phần mềm hỗ trợ cho lập trình viên thiết kế chương trình có khả đồ họa cao Việc mơ tả liệu thơng qua hình ảnh màu sắc đa dạng nó, chương trình đồ họa thường thu hút người sử dụng tính thân thiện, dễ dùng,… kích thích khả sang tạo nâng cao suất làm việc Do vậy, đồ họa máy tính ứng dụng nhiều lĩnh vực: giáo dục, thương mại… Các chương trình đồ họa ứng dụng cho phép làm việc với máy tính cách thoải mái, tự nhiên Là sinh viên chúng em tìm hiểu làm quen với số kĩ thuật đồ họa máy tính thơng qua tài liệu, giảng cô giáo Vũ Minh Yến giảng dạy Với kiến thức học chúng em định chọn đề tài: Xây dựng mơ hình dồ chơi Robot theo OpenGL đại 1 Giới thiệu tóm tắt Sự đời đồ họa máy tính thực cách mạng giao tiếp người dùng máy tính Với lượng thơng tin trực quan, đa dạng phong phú chuyển tải qua hình ảnh, ứng dụng đồ họa máy tính lơi nhiều người nhờ tính thân thiện, dễ dùng, kích thích khả sáng tạo tăng đáng kể hiệu suất làm việc Đồ họa máy tính ngày ứng dụng rộng rãi nhiều lĩnh vực khoa học, kĩ thuật, nghệ thuật, kinh doanh, quản lí, … Các ứng dụng đồ họa đa dạng, phong phú phát triển liên tục không ngừng Ngày nay, khơng có chương trình ứng dụng mà khơng sử dụng kĩ thuật đồ họa để làm tăng tính hấp dẫn Một hệ đồ họa có hai thành phần phần cứng phần mềm Thành phần phần cứng bao gồm thiết bị hiển thị (hay thiết bị xuất) thiết bị nhập Tiêu biểu thiết bị hiển thị hình mà chế hoạt động dựa cấu tạo ống tia âm cực CRT Các thiết bị nhập liệu thường gặp bao gồm bàn phím, chuột Phần mềm đồ họa chia làm hai loại cơng cụ lập trình hàm thư viện C, Pascal, GL, … ứng dụng phục vụ cho mục đích AutoCAD, Photoshop, … Ý tưởng Đồ chơi robot đồ chơi phổ biến cho trẻ em ngày Chúng thường đồ vật thu nhỏ, tạo dáng đơn giản có màu sắc hấp dẫn Đồ chơi có nét tiêu biểu dạng khái quát, bảo đảm tái tạo hoạt động tương ứng đồ vật Ví dụ đồ chơi robot giúp trẻ tăng trải nghiêm tính sáng tạo trẻ Với đồ chơi robot, trẻ em tăng cường nhận thức học hỏi máy móc, chức loại Do đó, với đồ chơi mơ hình như: robot, tơ loại, tàu, máy bay thêm mơ hình tàu thủy… trẻ em tận hưởng nhiều lợi ích như: - Kích thích khả khám phá tự học hỏi trẻ em - Giúp trẻ em chơi sáng tạo với kết hợp loại máy móc Robot đồ chơi phổ biến cho bé nam nhóm chúng em định làm đồ chơi robot Mô tả chuyển động robot  Nhóm chúng em tiến hành mơ tả hoạt động phổ biến chuyển động robot : - Đầu robot quay 360 độ - Tay robot quay 360 độ - Chân robot quay 360 độ - Robot quay 360 độ - Robot bay tới điểm khác - Robot di chuyển  Mơ tả chi tiết chuyển động a) Đầu robot quay 360 độ - Để làm cho đầu robot quay bên trái bên phải 360 độ sử dụng phím “m’ phím “Shift + m” để quay b) Robot quay 360o - Robot quay theo trục OX nhấn phím “x” - Robot quay theo trục OY nhấn phím “y” -Robot quay theo trục OZ nhấn phím “z” c) Robot bay tới điểm khác - Sử dụng phím “b” để bay lên phím “Shift + b” để hạ xuống d) Tay robot quay 360 độ - Để làm cho tay trái robot quay bên trái bên phải 360 độ sử dụng phím “c’ phím “Shift + c” để quay - Để làm cho tay phải robot quay bên trái bên phải 360 độ sử dụng phím “e’ phím “Shift + e” để quay e) Chân robot quay 360 độ - Để làm cho chân trái robot quay bên trái bên phải 360 độ sử dụng phím “g’ phím “Shift + g” để quay - Để làm cho chân phải robot quay bên trái bên phải 360 độ sử dụng phím “h’ phím “Shift + h” để quay f) Robot di chuyển - Sử dụng timer cho việc làm robot di chuyển đằng trước Các phép biến đổi sử dụng 4.1 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) - Điều khiển bàn phím - Điều khiển chuột - Sử dụng Timer để di chuyển 4.2 Phép vẽ hình - Vẽ hình hộp chữ nhật Code mơ tả hoạt động  Đầu robot quay 360 độ void caidau() { /*đầu*/ modelStack.push(model); model *= Translate(0, 0.31, 0)*RotateY(theta[4]); dau(0.20, 0.1, 0.07); /*mắt trái*/ model *= Translate(0.05, 0.0025, 0.05); dau(0.025, 0.025, 0.025); /*mắt phải*/ model *= Translate(-0.1, 0, 0); dau(0.025, 0.025, 0.025); model = modelStack.pop(); } Gán phím: case 'm': /*Điều khiển đầu robot quay bên trái 360 độ*/ theta[4] += step; if (theta[4] > 360)theta[4] -= 360; glutPostRedisplay(); break; case 'M': /*Điều khiển đầu robot quay bên phải 360 độ*/ theta[4] -= step; if (theta[4] > 360)theta[4] -= 360; glutPostRedisplay(); break;  Robot quay 360o - Robot quay theo trục Ox, Oy, Oz GLfloat dr = 5; case 'x': /*Điều khiển robot theo trục Ox*/ model *= RotateX(dr); glutPostRedisplay(); break; case 'X': model *= RotateX(-dr); glutPostRedisplay(); break; case 'y': /*Điều khiển robot theo trục Oy*/ model *= RotateY(dr); glutPostRedisplay(); break; case 'Y': model *= RotateY(-dr); glutPostRedisplay(); break; case 'z': /*Điều khiển robot theo trục Oz*/ model *= RotateZ(dr); glutPostRedisplay(); break; case 'Z': model *= RotateZ(-dr); glutPostRedisplay(); break;  Robot bay tới điểm khác case 'b': /*Điều khiển robot bay theo truc oy*/ model *= Translate(0, 0.1, 0); glutPostRedisplay(); break; case 'B': /*Điều khiển robot bay theo trục Oy*/ model *= Translate(0, -0.1, 0); glutPostRedisplay();break;  Tay robot quay 360 độ void taytrai() { /*khớp tay trên*/ modelStack.push(model); model *= Translate(0.165, 0.23, 0); tay(0.025, 0.025, 0.025); //cẳng tay model *= RotateX(theta[0])*Translate(0.025, -0.07, 0); tay(0.04, 0.05, 0.13); //Khớp tay model *= Translate(0, -0.075, 0); tay(0.025, 0.025, 0.025); //cẳng tay dướia model *= Translate(0, -0.075, 0); tay(0.04, 0.05, 0.13); model = modelStack.pop(); } void tayphai() { /*khớp tay*/ modelStack.push(model); model *= Translate(-0.165, 0.23, 0); tay(0.025, 0.025, 0.025); //cẳng tay model *= RotateX(theta[1])*Translate(-0.025, -0.07, 0); tay(0.04, 0.05, 0.13); //Khớp tay model *= Translate(0, -0.075, 0); tay(0.025, 0.025, 0.025); //cẳng tay model *= Translate(0, -0.075, 0); tay(0.04, 0.05, 0.13); model = modelStack.pop(); } Gán phím: case 'c': /*Điều khiển tay trái robot quay 360 độ*/ theta[0] -= step; if (theta[0] > 360)theta[0] -= 360; glutPostRedisplay(); break; case 'C': /*Điều khiển tay trái robot quay 360 độ*/ theta[0] += step; if (theta[0] > 360)theta[0] -= 360; glutPostRedisplay(); break; case 'e': /*Điều khiển tay phải robot quay 360 độ*/ theta[1] -= step; if (theta[1] > 360)theta[1] -= 360; glutPostRedisplay(); break; case 'E': /*Điều khiển tay phải robot quay 360 độ*/ theta[1] += step; if (theta[1] > 360)theta[1] -= 360; glutPostRedisplay(); break;  Chân robot quay 360 độ void chantrai() { /*khớp chân trên*/ modelStack.push(model); model *= Translate(0.1, -0.265, 0); chan(0.025, 0.025, 0.025); /*cẳng chân trên*/ model *= RotateX(theta[2]) * Translate(0, -0.085, 0); chan(0.06, 0.1, 0.15); /*khớp chân dưới*/ model *= Translate(0, -0.085, 0); chan(0.025, 0.025, 0.025); /*cẳng chân dưới*/ model *= Translate(0, -0.085, 0); chan(0.06, 0.1, 0.15); model = modelStack.pop(); } void chanphai() { /*khớp chân trên*/ modelStack.push(model); model *= Translate(-0.1, -0.265, 0); chan(0.025, 0.025, 0.025); /*cẳng chân trên*/ model *= RotateX(theta[3]) * Translate(0, -0.085, 0); chan(0.06, 0.1, 0.15); /*khớp chân dưới*/ model *= Translate(0, -0.085, 0); chan(0.025, 0.025, 0.025); /*cẳng chân dưới*/ model *= Translate(0, -0.085, 0); chan(0.06, 0.1, 0.15); model = modelStack.pop(); } Gán phím: case 'g': /*Điều khiển chân trái robot quay 360 độ*/ theta[2] -= step; if (theta[2] > 360)theta[2] -= 360; glutPostRedisplay(); break; case 'G': /*Điều khiển chân trái robot quay 360 độ*/ theta[2] += step; if (theta[2] > 360)theta[2] -= 360; glutPostRedisplay(); break; case 'h': /*Điều khiển chân phải robot quay 360 độ*/ theta[3] -= step; if (theta[3] > 360)theta[3] -= 360; glutPostRedisplay(); break; case 'H': /*Điều khiển chân phải robot quay 360 độ*/ theta[3] += step; if (theta[3] > 360)theta[3] -= 360; glutPostRedisplay(); break;  Robot di chuyển /*sử dụng timer để di chuyển*/ mat4 model1; void timer1(int value) { if (Axis == 0) { model1 *= Translate(0, 0, 0.0001); glutPostRedisplay(); glutTimerFunc(150, timer1, 0); } } glutTimerFunc(0.01, timer1, 0);

Ngày đăng: 29/11/2019, 22:07

Tài liệu cùng người dùng

Tài liệu liên quan