1. Trang chủ
  2. » Luận Văn - Báo Cáo

XÂY DỰNG CHƯƠNG TRÌNH mô PHỎNG CHUYỂN ĐỘNG ROBOT đá BÓNG ỨNG DỤNG THƯ VIỆN OPENGL

48 981 3

Đ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

Định dạng
Số trang 48
Dung lượng 2,23 MB

Nội dung

PHẦN 1 TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾTCHƯƠNG 1 GIỚI THIỆU THƯ VIỆN OPENGL1.1.Lịch sử phát triểnNguyên thủy, GL do Silicon Graphics Incorporated (SGI) thiết kế để dùng cho các trạm làm việc (workstation) đồ họa IRIS GL với các cấu hình phần cứng khác thì có vấn đề phát sinhOpenGL là kết nối nổ lực của SGL nhằm cải ithieejn tính tương thích của IRIS GL. Ngôn ngữ mới này có khả năng của GL, đồng thời “mở” nghĩa là dễ dàng tương thích với loại cấu hình phần cứng, cũng như các hệ điều hành khác nhau.Version 1.0 của OPENGL được giới thiệu vào ngày 0171992. Để bảo đảm tính “mở”, mọi sự nâng cấp OpenGL phải thông qua Ủy Ban Xem Xét Kiến Trúc OpenGL (OpenGL Architecture Review Board AEB) gồm các thành viên sang lập là SGI, Digittal Equipment Corporation, IBM, Intel và Microsoft. ARB họp mỗi năm hai lần. (Các công ty khác cũng có thể tham gia thảo luận nhưng không có quyền bỏ phiếu). OpenGL version 1.1 được ARB thông qua vào tháng 121995.1.2.Khái niệmOpenGL được định nghĩa là “giao diện phần mềm cho phần cứng đồ họa”. Thực chất, OpenGL là một thư viện hàm đồ họa, được xem là tiêu chuẩn thiết kế công nghiệp cho đồ họa ba chiều.Với giao diện lập trình mạnh mẽ, OpenGL cho phép tạo các ứng dụng 3D phức tạp với độ tinh vi, chính xác cao mà người thiết kế không phải đánh vật với các núi công thức toán học và các mã nguồn phức tạp. Và do OpenGL là tiêu chuẩn công nghiệp, các ứng dụng tạo từ nó dung được trên các phần cứng và hệ điều hành khác nhau.Các mục sau sẽ giới thiệu cách nhìn tổng quát về cách làm việc của OpenGL:Các phần tử đồ họa cơ bản và lệnh giới thiệu về các phần tử đồ họa cơ bản (primitive) và sự thực hiện lệnh.Cách làm việc của OpenGL cho biết các loại thao tác đồ họa mà OpenGL kiểm soát. Mô hình hoạt động nói về mô hình clientserver cho việc thông dịch lệnh OpenGL.Thao tác OpenGL cơ bản đưa ra một mô tả mức cao về cách OpenGL xử lí dữ liệu và tạo ra hình ảnh tương ứng lên bộ đệm khung. Các phần tử đồ họa cơ bản và lệnh:•Primitive được xác định bởi nhóm của một hay nhiều vertex là điểm trong không gian. Mỗi vertex xác định một điểm, một đầu đoạn thẳng hay một đỉnh đa giác. Dữ liệu (bao gồm tọa độ vertex, màu sắc, Normal, texture và cờ xác định loại cạnh) kết hợp với vertex. Khi xử lí primitive, mỗi cặp vertex và dữ liệu kết hợp với nó được xử lí độc lập với cặp khác, theo thứ tự và cùng phương pháp. Ngoại lệ duy nhất là trong trường hợp khử phần khuất của primitive (clipping). Khi đó, dữ liệu vertex được sửa vào các vertex khác được tạo ra. Loại clipping tùy thuộc loại primitive mà nhóm vertex biểu diễn.•Các lệnh luôn luôn được xử lí theo thứ tự mà nó tiếp nhận, mặc dù có sự trì hoãn không xác định trước khi lệnh có hiệu lực. Nghĩa là mỗi primitive được vẽ trọn vẹn trước khi lệnh tiếp theo có hiệu lực. Cách làm việc của OpenGL:•OpenGL là ngôn ngữ đồ họa theo thủ tục chứ không phải ngôn ngữ mô tả. Thay vì các cảnh và cách chúng xuất hiện. OpenGL đưa ra các bước cần thiết để có được sự thể hiện hay hiệu quả nhất định. Các “bước” này là các lời gọi đến giao diện lập trình ứng dụng gồm xấp sỉ 120 lệnh và hàm. Chúng được dùng để vẽ các phần tử đồ họa cơ bản như điểm, đường và đa giác trong không gian ba chiều. Ngoài ra, OpenGL còn hỗ trợ chiếu sang, tô bóng, gán cấu trúc, tạo ảo giác chuyển động và hiệu quả đặc biệt khác.•OpenGL không có các chức năng quản lí của sổ, tương tác với người dung hay xuất nhập file. Môi trường chủ (tức hệ điều hành) có các chức năng này và chịu trách nhiệm thực hiện các biện pháp quản lí cho OpenGl.

Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng BÁO CÁO XÂY DỰNG CHƯƠNG TRÌNH MƠ PHỎNG CHUYỂN ĐỘNG ROBOT ĐÁ BĨNG ỨNG DỤNG THƯ VIỆN OPENGL Học phần: Kỹ Thuật Đồ Họa - D09TTDH Giảng viên hướng dẫn: Lớp: Thành phố Hồ Chí Minh, tháng 06 năm 2019 1|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng LỜI MỞ ĐẦU -o0o- Sự phát triển khoa học, kĩ thuật, kinh doanh công nghệ luôn thuộc vào khả truyền đạt thông tin chúng ta, thông qua bit liệu lưu trữ microchip thông qua giao tiếp tiếng nói Câu châm ngơn từ xa xưa “một hình ảnh có giá trị vạn lời” hay “trăm nghe không thấy” cho thấy ý nghĩa lớn hình ảnh việc truyền tải thơng tin Hình ảnh cảm nhận nhanh dễ dàng hơn, đặc biệt trường hợp bất đồng ngơn ngữ Do khơng có ngạc nhiên mà từ xuất máy tính, nghiên cứu cố gắng sử dụng để phát minh hinh ảnh sử dụng hình Trong suốt gần 50 năm phát triển máy tính, khả phát sinh hình ảnh đạt tới mức tất máy tính có khả đồ - họa Đồ họa máy tính lĩnh vực lí thú phát triển nhanh tin học Ngay từ xuất hiện, đồ họa máy tính có sức lôi mãnh liệt, hút nhiều người nhiều lĩnh vực khác như: khoa học, nghệ thuật, kinh doanh, quản lí, … Tính hấp dẫn đa dạng đồ họa máy tính minh họa - trực quan thông qua việc khảo sát ứng dụng Và để hiểu rõ kỹ thuật đồ họa máy tính chúng em tìm hiểu hồn thành tập lớn đề tài: “Xây dựng chương trình mơ chuyển động Robot - đá bóng” Trong q trình làm chúng em cố gắng, song chắn khơng thể tránh khỏi thiếu sót, mong có đóng góp ý kiến quý thầy bạn Chúng em chân thành cảm ơn giảng viên giúp chúng em hoàn thành tập này! NHÓM BÁO CÁO 2|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng MỤC LỤC LỜI MỞ ĐẦU MỤC LỤC PHẦN TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT CHƯƠNG GIỚI THIỆU THƯ VIỆN OPENGL 1.1 Lịch sử phát triển 1.2 Khái niệm 1.3 Cài đặt thư viện môi trường MS Visual Studio 2013 1.3.1 Download thư viện OpenGL cài đặt 1.3.2 Kiểm tra hàm chương trình CHƯƠNG TÌM HIỂU THƯ VIỆN OPENGL PHẦN VẬN DỤNG 17 ĐẶC VẤN ĐỀ 17 1.1 Yêu cầu .17 PHẦN TÍCH YÊU CẦU 17 2.1 Phân tích yêu cầu 17 2.2 Định hướng giải vấn đề 17 2.3 Nguyên lý hoạt động .17 CÀI ĐẶT CHƯƠNG TRÌNH 18 3.1 Cấu trúc chương trình 18 3.2 Mơ tả chi tiết q trình cài đặt 21 3.3 Xử lý lý chuyển động 43 NHẬN XÉT 49 4.1 Kết đạt .49 4.2 Hạn chế .52 4.3 Hướng giải .52 TÀI LIỆU THAM KHẢO 53 3|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng PHẦN TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT CHƯƠNG GIỚI THIỆU THƯ VIỆN OPENGL 1.1 Lịch sử phát triển - Nguyên thủy, GL Silicon Graphics Incorporated (SGI) thiết kế để dùng cho trạm làm việc (workstation) đồ họa IRIS GL với cấu hình phần cứng khác có vấn đề phát sinh - OpenGL kết nối nổ lực SGL nhằm cải ithieejn tính tương thích IRIS GL Ngơn ngữ có khả GL, đồng thời “mở” nghĩa dễ dàng tương thích với loại cấu hình phần cứng, hệ điều hành khác - Version 1.0 OPENGL giới thiệu vào ngày 01/7/1992 Để bảo đảm tính “mở”, nâng cấp OpenGL phải thơng qua Ủy Ban Xem Xét Kiến Trúc OpenGL (OpenGL Architecture Review Board AEB) gồm thành viên sang lập SGI, Digittal Equipment Corporation, IBM, Intel Microsoft ARB họp năm hai lần (Các cơng ty khác tham gia thảo luận khơng có quyền bỏ phiếu) OpenGL version 1.1 ARB thông qua vào tháng 12/1995 1.2 Khái niệm - OpenGL định nghĩa “giao diện phần mềm cho phần cứng đồ họa” Thực chất, OpenGL thư viện hàm đồ họa, xem tiêu chuẩn thiết kế công - nghiệp cho đồ họa ba chiều Với giao diện lập trình mạnh mẽ, OpenGL cho phép tạo ứng dụng 3D phức tạp với độ tinh vi, xác cao mà người thiết kế đánh vật với núi công thức toán học mã nguồn phức tạp Và OpenGL tiêu chuẩn công nghiệp, ứng dụng tạo từ dung phần cứng hệ điều - hành khác Các mục sau giới thiệu cách nhìn tổng quát cách làm việc OpenGL: Các phần tử đồ họa lệnh giới thiệu phần tử đồ họa - (primitive) thực lệnh Cách làm việc OpenGL cho biết loại thao tác đồ họa mà OpenGL kiểm - sốt Mơ hình hoạt động nói mơ hình client/server cho việc thơng dịch lệnh OpenGL 4|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng - Thao tác OpenGL đưa mô tả mức cao cách OpenGL xử lí liệu tạo hình ảnh tương ứng lên đệm khung  Các phần tử đồ họa lệnh:  Primitive xác định nhóm hay nhiều vertex điểm không gian Mỗi vertex xác định điểm, đầu đoạn thẳng hay đỉnh đa giác Dữ liệu (bao gồm tọa độ vertex, màu sắc, Normal, texture cờ xác định loại cạnh) kết hợp với vertex Khi xử lí primitive, cặp vertex liệu kết hợp với xử lí độc lập với cặp khác, theo thứ tự phương pháp Ngoại lệ trường hợp khử phần khuất primitive (clipping) Khi đó, liệu vertex sửa vào vertex khác tạo Loại clipping tùy thuộc loại primitive mà nhóm vertex biểu diễn  Các lệnh ln ln xử lí theo thứ tự mà tiếp nhận, có trì hỗn khơng xác định trước lệnh có hiệu lực Nghĩa primitive vẽ trọn vẹn trước lệnh có hiệu lực  Cách làm việc OpenGL:  OpenGL ngôn ngữ đồ họa theo thủ tục ngôn ngữ mô tả Thay cảnh cách chúng xuất OpenGL đưa bước cần thiết để có thể hay hiệu định Các “bước” lời gọi đến giao diện lập trình ứng dụng gồm xấp sỉ 120 lệnh hàm Chúng dùng để vẽ phần tử đồ họa điểm, đường đa giác không gian ba chiều Ngồi ra, OpenGL hỗ trợ chiếu sang, tơ bóng, gán cấu trúc, tạo ảo giác chuyển động hiệu đặc biệt khác  OpenGL khơng có chức quản lí sổ, tương tác với người dung hay xuất nhập file Môi trường chủ (tức hệ điều hành) có chức chịu trách nhiệm thực biện pháo quản lí cho OpenGl Mơ hình hoạt động:  Mơ hình thơng dịch lệnh OpenGL client/server Mã ứng dụng (vai trò client) đưa lệnh Lệnh thơng dịch sử lí OpenGL (vai trò server) Server client máy tính khác Theo nghĩa này, OpenGl network-transparent (tạm dịch m ạng suốt) Server trì nhiều ngữ cảnh OpenGL, ngữ cảnh trạng thái 5|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng OpenGL Client nói với ngữ cảnh Giao thức mạng sử dụng độc lập hóa dựa giao thức mạng có (tức OpenGl dụng máy độc lập hay mơi trường mạng) Khơng có lệnh OpenGL tiếp nhận việc nhận việc nhập liệc trực tiếp từ người dùng  Cuối cùng, hệ thống cửa sổ kiểm soát tác dụng lệnh OpenGl đệm khung qua thao tác:  Quyết định phần đệm khung mà OpenGL truy suất thời điểm cho phép  Truyền đạt cho OpenGL thông tin cấu trúc phần  Như vậy, khơng có lệnh OpenGL định dạng đệm khung hay khỏi tạo OpenGL Sự định dạng đệm khung thực bên OpenGL liên kết với hệ thống cửa sổ Sự khởi tạp OpenGL tiến hành hệ thống cấp phát cửa sổ cho việc biểu diễn  Thao tác OpenGL Phía Client Khối lệnh OPENGL OpenGL DLL Danh sách Sever DLL Khối lệnh Bước ước lượng Các thao tác pixel Thao tác Vertex DLL vàWin Primitive Video Driver Rasteri zationPhía Thao tác fragme Bộ đệm khung Sever Bộ nhớ texture Hình 1.1 Mơ hình hoạt động Hình 1.2 Sơ đồ sữ lý liệu OpenGL OpenGL Sơ đồ khối Hình 1.2 tóm tắt OpenGL xử lý liệu Các lệnh vào phía trái sơ đồ qua “đường ống xử lí” Một số lệnh xác định đối tượng hình học vẽ số khác kiểm soát cách quản lý đối tượng qua giai đoạn xử lý khác 6|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng 1.3 Cài đặt thư viện môi trường MS Visual Studio 2013 1.3.1 Download thư viện OpenGL cài đặt - Download đây: http://www.mediafire.com/file/4mxl8e14pa6e8il/glut-3.7.6-bin.rar - Sau download xong bạn giải nén có file (File header, file lib file dll) - Nếu bạn cài VS 2013 môi trường Windows x64 (viết ứng dụng 32 bit 64 bit), copy sau:  Copy file header vào thư mục: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include  Copy file lib vào thư mục: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib  Copy file dll vào thư mục: - C:\Windows\System32 Với phiên Windows 32bit (viết ứng dụng 32 bit)  o Sao chép tập tin glut.h glut.def vào thư mục C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl  o Sao chép tập tin glut32.lib vào thư mục C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib  o Sao chép tập tin glut32.dll vào thư mục C:\windows\system32\ 1.3.2 Kiểm tra hàm chương trình - Khai báo hàm sau: + Hàm Init để khởi tạo lựa chọn ban đầu cho môi trường đồ họa : xóa hình, thiết lập chế độ ánh sáng, chiều sâu + Hàm Reshape sử dụng để thiết lập chế độ view cho môi trường đồ họa + Hàm RenderScene dùng để viết đối tượng đồ họa void Init() 7|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng 11 2 2 { glClearColor(0.0, 0.0, 0.0, 0.0); } void ReShape(int width, int height) { glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-10.0, 10.0, -10.0, 10.0, 10.0, -10.0); glMatrixMode(GL_MODELVIEW); } void RenderScene() { glutWireTeapot(2.0); glFlush(); } - Sau xây dựng hàm Main void main() { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500, 500); glutInitWindowPosition(100, 100); 8|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng glutCreateWindow("Do Hoa"); 11 Init(); glutReshapeFunc(ReShape); glutDisplayFunc(RenderScene); glutMainLoop(); return; } 2 2 9|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng - glutCreateWindow("Do Hoa"); Hình 1.3 Chương trình vẽ ấm trà OpenGL 10 | P a g e Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng struct_left_leg(); } - 3.2.17 Khởi tạo lựa chọn ban đâu Xây dựng hàm InitGL(GLvoid) để khởi tạo thiết lập ban đầu Trong hàm - có lời gọi lại hàm init_structures(); Các khởi tạo ban đầu như: Tạo Background, cài đặt chế độ khối cảnh, thiết lập phép chiếu,… glShadeModel(GL_SMOOTH);// Kch hoat tinh nang Smooth Shading glClearColor(0.0f, 0.0f, 0.0f, 0.5f);// Background mau den glClearDepth(1.0f); // Cai dat che Depth Buffer glEnable(GL_DEPTH_TEST);// Kiem tra Enables Depth glDepthFunc(GL_LEQUAL); // Kiem tra chieu xau glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);// Cai dat che phoi canh - 3.2.18 Thiết lập bối cảnh chung Thiết lập bối cảnh chung gồm thiết lập phép chiếu bối cảnh cài đặt hướng sáng chung cho bối cảnh /*Thiet lap phan boi canh chung */ int DrawGLScene(GLvoid) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // thiet dat xoa man hinh va bo nho dem /* THIET DAT CAMERA -*/ glPushMatrix(); glRotatef(360 - camera.y, 0, 1, 0); glTranslatef(-camera.x, 0, -camera.z); /* Che anh sang -*/ 34 | P a g e Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng glPushMatrix(); lights(); glPopMatrix(); DrawRobot(); glPopMatrix(); return TRUE; } - 3.2.19 Tạo hộp thoại thông báo Dự vào thư viện hỗ trợ “windows.h” sử dụng tính lập trình win32 - Ở phần chúng em sử dụng tính tạo hộp thoại thơng báo:  Thông báo yêu cầu xem với chế độ Full hình hay khơng?  Thơng báo lỗi xảy có Để thử hộp thoại phương án chúng em đề sử dụng : Hàm MessageBox(HWND hwnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType): Là hộp tin nhắn từ hệ thống, thống tin mà hệ thống gửi đén người dùng, bạn debug hiểu: o hwnd: trỏ, trỏ vào window (tìm hiểu sau) o lpText: Đoạn văn thể thân MessageBoxlpCaption: Tương tự lpText văn nằm trên cùng.uType: Thể kiểu MessageBox, ví dụ MB_OK Trỏ vào MB_OK bạn thấy rõ số (cụ thể 0x00000000L) Trong thư viện windows, thư viện định nghĩa MB_OK để giúp dễ nhớ hơn, sau ta thao tác với kiểu khác 35 | P a g e Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng Hình 2.12 Hộp thoại hệ thống 3.2.20 Thủ tục windows Thủ tục window giống não chương trình vậy, sau bắt thơng tin vòng lặp gửi đến window procedure window ta tương tác - Sử dụng kỹ thuật hồi đáp windows ứng dụng Cấu trúc hàm: LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); 10 break; 11 default: 36 | P a g e Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng 12 lParam); 13 } 14 return 0; return DefWindowProc(hwnd, msg, wParam, 15 } Hàm ta có:  Các vế WndProc() tạm thời ta chưa cần quan tâm  Hàm switch để xác định Message message để xử lý Như ví dụ message đóng ó Alt + F4 thực bên  DestroyWindow() Hàm gửi câu lệnh WM_DESTROY đến message quene  Khi WM_DESTROY thực hiện, xóa “con” cửa sổ trước thực thao tác  Hàm PostQuitMessage(0) – Gửi lệnh WM_QUIT đến hệ thống  Hàm DefWindowProc() – hàm thực tác vụ mà ta đối xử với window, hiểu đơn giản, ta xử lý lệnh message đặc biệt message lại ta để thư viện Win32 API tự xử lý - 3.2.21 Chương trình Trong chương trình gọi lại hàm DrawGLScene() , thiết lập tỷ lệ hình, - cài đặt chuyển động Robot phím tắt Cấu trúc chương trình: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; // Windows Message Structure 37 | P a g e Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng BOOLdone = FALSE; // Cờ hiệu done để khỏi vòng lặp // Dua lua chon che man hinh if (MessageBox(NULL, "Would You Like To Run In Fullscreen Mode?", "Start FullScreen?", MB_YESNO | MB_ICONQUESTION) == IDNO) { fullscreen = FALSE;// Chế độ cửa sổ } // Thiet dat ty le man hinh if (!CreateGLWindow("ROBOT DA BONG", 1600, 900, 16, fullscreen)) { return 0;// Thoat neu khong khoi tao duoc cua so } while (!done// Loop That Runs While done=FALSE { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) // Co yeu cau dang cho xu ly { if (msg.message == WM_QUIT)// Nhan duoc yeu cau thoat { done = TRUE; // If So done=TRUE } else // nguoc lai xu ly yeu cau { TranslateMessage(&msg); // Translate The Message DispatchMessage(&msg); // Dispatch The Message } } Else // truong hop khong co yeu cau { if ((active && !DrawGLScene()) || keys[VK_ESCAPE]) // Kiểm tra hoạt động chương trình { done = TRUE; // Nhấn phím ESC để } else // Khơng có thời gian để thốt, cập nhật hình { DrawGLScene(); // Lời gọi hàm DrawGLScrene(); SwapBuffers(hDC); // Swap Buffers (Double Buffering) } } 38 | P a g e Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng //Bước 4: Thiết lập hiệu ứng điều khiển chuyển động bàn phím return (msg.wParam); // Ket thuc chuong trinh } - Tỷ lệ hình thiết lập : 1600:900 với 16bit, chế độ fullscreen 3.3 Xử lý lý chuyển động  Nguyên lý chung:  Khi người dùng bấm KeyWord làm tăng giảm góc quay khai báo ban đầu, sau truyền kết Hàm định nghĩa cấu trúc phận Robot bóng Vd: Chuyển động đá bóng  Các thao tác chuyển động giới hạn 3.3.1 Chuyển động đá bóng Robot if (keys['X']) //Nhập Key { left_thigh_angle -= 2.0f; if (left_thigh_angle100.0f) left_leg_angle = 100.0f; } if (keys['Y']) { //Chuyen dong khop chan trai xuong 41 | P a g e Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng 94 95 96 97 98 99 100 101 0.01 102 103 104 105 106 107 108 -80.0f; 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 left_leg_angle -= 2.0f; if (left_leg_angle100.0f) right_leg_angle = 100.0f; } if (keys['I']) //Chuyen dong khop chan phai xuong { right_leg_angle -= 2.0f; if (right_leg_angle

Ngày đăng: 30/08/2019, 16:11

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w