Mô phỏng chuyển động rôbốt

35 984 3
Mô phỏng chuyển động rôbốt

Đ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

Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt phụ lục I Tổng quan đồ hoạ máy tính 1) Giới thiệu .2 2) Tổng quan hệ đồ hoạ .3 II Giới thiệu tổng quan opengl 1.Giới thiệu tổng quan OpenGL 1.1 Hardware vs Software 1.2 OpenGL vs Direct3D .6 Các khái niệm 2.1 Primitive & Command 2.2 Các thao tác OpenGL 2.3 OpenGL Pipeline Tổng quan hàm OpenGL 3.1 Cách đặt tên hàm 10 3.5 Các hàm Primitive 15 3.6 Các hàm Primitive 15 Các thư viện tiện ích 16 4.1Chương trình với GLUT 16 4.2 Bên GLUT 18 III Chương trình cánh tay rô bốt 23 1)Mục đích chương trình : 23 2)Chức chương trình : 23 3)Tiến trình vẽ cánh tay rôbốt: 24 3.1)Hàm shoulder(solid): 26 3.2)UpperArm(char solid) 26 3.3)Void ForeArm(char solid) 29 3.4)Vẽ cổ tay: .31 3.5) Một số hàm vẽ khác xây dựng chương trình 32 4) Một số hình vẽ rôbốt: .33 -1- Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt BÁO CÁO ĐỒ ÁN MÔN HỌC I Tổng quan đồ hoạ máy tính 1) Giới thiệu  Đồ họa máy tính hiểu tất liên quan đến việc tạo ảnh (image) máy tính Chúng bao gồm : tạo, lưu trữ, thao tác hình (model) ảnh  Thuật ngữ đồ họa máy tính (computer graphics) William Fetter đặt năm 1960 để tả cách thiết kế làm việc hãng Boeing  Hỗ trợ thiết kế (CAD - Computer Aided Design)  Dùng phát sinh biểu đồ, đồ thị, … việc minh họa mối quan hệ nhiều đối tượng với  Tóm lược liệu tài chính, thống kê, kinh tế, khoa học, toán học, … giúp cho việc nghiên cứu, quản lí, … cách có hiệu -2- Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Giải trí  Tạo giao diện 2) Tổng quan hệ đồ hoạ  Các thành phần phần cứng  Thiết bị hiển thị : hình, máy in, …  Thiết bị nhập : bàn phím, chuột, …  Các công cụ phần mềm  Công cụ ứng dụng (application package) : Được thiết kế cho người sử dụng để tạo hình ảnh mà không cần quan tâm tới thao tác bên hoạt động Ví dụ : AutoCAD, Adobe Photoshop, 3D Studio, …   Công cụ lập trình (programming package) : Cung cấp tập hàm đồ họa dùng ngôn ngữ lập trình cấp cao C, Pascal, … Ví dụ : GRAPH.TPU, GRAPHICS.LIB, Open GL, …  Các chuẩn phần mềm  Ra đời để đáp ứng tính tương thích : Nếu phần mềm thiết kế với hàm đồ họa chuẩn chúng dùng cho nhiều hệ phần cứng môi trường làm việc khác  GKS (Graphics Kernel System) chuẩn đời cho việc phát triển phần mềm đồ họa Ban đầu GKS thiết kế chae dùng cho tập công cụ đồ họa hai chiều, sau mở rộng cho đồ họa ba chiều  Các hàm GKS thực tả trừu tượng, độc lập với ngôn ngữ lập trình Để cài đặt chuẩn đồ họa cho ngôn ngữ cụ thể nào, cú pháp tương ứng xác định cụ thể hóa -3- Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt II Giới thiệu tổng quan opengl 1.Giới thiệu tổng quan OpenGL OpenGL giao diện cho phép phần mềm giao tiếp với phần cứng đồ hoạ mà không phụ thuộc vào phần cứng (hardware-independent) Mục đích: Vẽ hình ảnh (2D/3D) OpenGL cung cấp khoảng 120 hàm để thực thao tác đồ hoạ OpenGL không bao gồm lệnh cấp cao đối tượng để tả hình 3D Các tính nêu cung cấp nhiều thư viện OpenGL (GLU – OpenGL Utility Library, Open Inventor) OpenGL hỗ trợ hầu hết phần cứng đồ hoạ Bình thường ứng dụng window sử dụng GDI(graphic Device interface DC(device context) để vẽ cửa sổ Trong ơpengl không sử dụng GDI mà sử dụng RC(rendering context) RC kết hợp với DC để vẽ window theo hình sau: -4- Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt hình hoạt động Opengl window Lập trình viên sử dụng GDI có khả vẽ đường nét đường thẳng, đường cong Nếu muốn có không gian chiều hay hiệu ứng đồ hoạ : lập trình viên phải tự quản lí sử lí thao tác chương trình không tận dụng sức mạnh phần cứng nên tốc độ chậm Trong hình hoạt động opengl: phần sử lí tính toán đồ hoạ 3D hay hiệu ứng đồ hoạ chuyển cho phần cứng (card đồ hoạ thực hiện) Opengl sử dụng lệnh đồ hoạ nằm phần cứng để sử dụng cách có hiệu Khi có kết sử lý opengl thông qua GDI để kết lên hình -5- Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt 1.1 Hardware vs Software  Các chức đồ hoạ 3D xây dựng dựa thư viện hàm  Đồ hoạ 3D đòi hỏi khối lượng tính toán lớn, sử dụng phần mềm không đảm bảo chất lượng đồ hoạ 3D thời gian thực  Hiện nay, hầu hết card hình hỗ trợ chức 3D, có nghĩa phần tính toán 3D thực chip card hình (phần cứng)  Sử dụng thư viện đồ hoạ thông thường (vd: GDI Windows) không tận dụng tính 3D phần cứng 1.2 OpenGL vs Direct3D  Trên Windows, sử dụng Direct3D để tận dụng tính đồ hoạ phần cứng  Direct3D làm việc trực tiếp với phần cứng mà không qua GDI → tăng tốc độ  Direct3D hỗ trợ việc tả vật thể 3D, biến đổi tương tác môi trường 3D thông qua tập hợp đối tượng (tiếp cận mức cao)  OpenGL cung cấp hàm vẽ đối tượng (điểm, đoạn thẳng, mặt ) (tiếp cận mức thấp)  Direct3D chuẩn Microsoft, OpenGL chuẩn cộng đồng mở Các khái niệm  Các hình (primitive) lệnh (command)  Các thao tác OpenGL 2.1 Primitive & Command  OpenGL cung cấp hàm cấp thấp, vẽ điểm, đoạn thẳng, đa giác  Điểm OpenGL gồm thông tin: – Toạ độ -6- Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt – Màu – Vector pháp tuyến – Toạ độ Texture (Texture coordinate)  OpenGL không cung cấp hàm riêng để vẽ điểm, đoạn thẳng, đa giác mà kết hợp chế độ vẽ với hàm vẽ điểm Ví dụ: – glBegin(GL_POLYGON); • glVertex3f (0.25, 0.25, 0.0); • glVertex3f (0.75, 0.25, 0.0); • glVertex3f (0.75, 0.75, 0.0); • glVertex3f (0.25, 0.75, 0.0); – glEnd(); 2.2 Các thao tác OpenGL Sơ đồ trình xử lý liệu OpenGL  Display List: Hàng đợi lệnh  Dữ liệu hình học - Eluavator: Xấp xỉ đường cong thành đa giác -7- Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt - Per-Vertex Operation & Primitive Assembly: Các hình hình học tả qua điểm → biến đổi điểm, clip hình vùng nhìn - Rasterization: Đưa liệu 2D (toạ độ điểm, đoạn thẳng, đa giác) để chuẩn bị cho bước cuối - Per-fragment operations: Vẽ liệu tính bước Rasterization lên frame buffer  Dữ liệu ảnh – Dữ liệu vào liệu ảnh texture, liệu ảnh để vẽ lên frame buffer – Sau thực thao tác điểm ảnh (pixel operation) • Lưu lại thành texture (texture memory) • Vẽ lên frame buffer 2.3 OpenGL Pipeline -8- Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt Tổng quan hàm OpenGL  Cách đặt tên hàm  Các hàm điểm (Vertex)  Các hàm đối tượng (primitive)  Các hàm mảnh (fragment) -9- Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Các hàm điểm ảnh (pixel) 3.1 Cách đặt tên hàm  OpenGL gồm khoảng 120 nhóm hàm  Mỗi nhóm hàm bao gồm nhiều hàm có chức giống khác kiểu liệu vào Ví dụ – Nhóm hàm glVertex* gồm hàm • glVertex2d( GLdouble x, GLdouble y) • glVertex2f( GLfloat x, GLfloat y) • glVertex2i( GLint x, GLint y) glVertex2s( GLshort x, GLshort y) Tác dụng hàm khác nhau, tuỳ thuộc vào chế độ hành (mode) Để thiết lập bỏ mode, sử dụng lệnh – glEnable() – glDisable() 3.2 Các hàm Vertex Dữ liệu vào  Toạ độ – Để xác định điểm, dùng hàm glVertex* – Dùng glRect để xác định hình chữ nhật  Vector pháp – glNormal*  Màu – glColor* (chế độ RGBA) - 10 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Chiếu (Projection) - Bắt đầu với ma trận chuyển đổi từ WCS sang hệ toạ độ camera: glMatrixMode(GL_PROJECTION) - glLoadIdentity():glLoadIdentity: thay ma trận thời ma trận đơn vị - Thiết lập vùng nhìn (vùng hình chóp cụt) glFrustum() gọi hàm gluPerspective() - Kết thúc việc đặt lại chế độ ma trận glMatrixMode(GL_MODELVIEW)  Matrix Stack - OpenGL gồm ma trận (Projection Matrix, Model View Matrix & Texture Matrix); - Để chuyển đổi chế độ ma trận, sử dụng hàm glMatrixMode(); - 21 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt - Các hàm vẽ điểm glVertex, glNormal không trực tiếp vẽ WCS mà biến đổi qua ma trận vẽ WCS • Như vậy, sử dụng ma trận để thực phép biến đổi: tịnh tiến, quay, co dãn kết hợp nhiều phép biến đổi • Để lưu lại ma trận glPushMatrix() • Để lấy ma trận lưu glPopMatrix() Đẩy lấy ma trận stack  Chiếu sáng - Trong OpenGL, việc chiếu sáng thực đơn giản thông qua đèn (light) Các đèn đánh số: GL_LIGHT0, GL_LIGHT1 - Để thiết lập chế độ chiếu sáng glEnable(GL_LIGHTING); - Để bật đèn glEnable(GL_LIGHT0); - Để thiết lập thông số đèn: glLight*(); glLightfv( GL_LIGHT0, GL_DIFFUSE, diffuse[4] ); glLightfv( GL_LIGHT0, GL_POSITION, position[4] ); Để xác định mặt chiếu sáng với cường độ sáng bao nhiêu, người ta dùng véc tơ pháp tuyến (normal vector) glEnable() glDisable(), thông số cho phép sử dụng ánh sáng tạo đồ vật.Opengl cung cấp cho nguồn sáng, hàm glNormal3dv() thiết - 22 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt lập véc tơ pháp tuyến cho mặt vẽ, vật thể quay quanh trục ta thấy độ sáng tối thay đổi GLfloat ambient[]={ 0.2,0.2,0.2,1.0}; GLfloat diffuse[]={ 0.8,0.0,0.0,1.0}; GLfloat specular[]={0.5,0.5,0.5,1.0}; GLfloat shininess=40.0; Trong thông số đặt theo hệ RGBA(như đề cập phần trên), mà chúng có giá trị.Thông số ambient biểu cho độ sáng môi trường bên ngoài, diffuse độ khuếch tán, specular độ phản xạ shininess độ bóng(độ bóng sáng) Các thông số hàm glMaterial*() sử dụng để tạo vật thể glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,ambient); glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,diffuse); glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,specula); glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,shininess); III Chương trình cánh tay rô bốt 1)Mục đích chương trình : tả chuyển động rôbốt Sử dụng đồ hoạ 3D dựa ngôn ngữ Opengl 2)Chức chương trình : Di chuyển đồ vật từ vị trí A -> B Dùng cánh tay rôbốt để gắp đồ vật di chuyển từ vị trí sang vị trí khác Dùng phím điều khiển bàn phím để điểu khiển cánh tay rôbốt Phạm vi giới hạn cánh tay rôbốt  Cả thân rôbốt chuyển động quanh oy 3600 (nút a,s)  Cánh tay rôbốt chuyển động quay xung quanh trục oz từ -30→2100 (nút điều khiển r,t) - 23 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Khuỷ tay chuyển động quanh trục ox từ -130 → 1300 ( nút điều khiển w,e)  cổ tay quay quanh trục oz 3600 (nút điều khiển z,x)  Ngón tay quanh quanh trục ox -800 →800 (nút điểu khiển m ,n) Ngoài rôbốt dịch chuyển tịnh tiến, lùi , sang phải sang trái nút tiến, lùi, sang phải, sang trái.(tịnh tiến dọc theo trục ox, oz) sử dụng phím left, right, up, down Dùng nút b để bắt vật , sử dụng nút đến để di chuyển rôbốt với vật 3)Tiến trình vẽ cánh tay rôbốt: Định nghĩa hàm sử dụng để vẽ : - void Box(float width, float height, float depth, char solid): hàm vẽ hình hộp bao gồm tham số chiều rộng, chiều cao ,chiều sâu tham số điền đầy Hình hộp tạo mặt phẳng ghép lại y n x z - Void gluSphere( GLUquadricObj *qobj, GLdouble radius, GLint slices, GLint stacks ); Hàm vẽ hình cầu opengl tham số trỏ trỏ tới đối tượng vẽ, tham số thứ bán kính, tham số thứ số mặt chia xung quanh trục z , tham số cuối số mặt chia dọc theo trục z - Void gluCylinder( - 24 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt GLUquadricObj *qobj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks ); hàm vẽ hình trụ Tham số trỏ trỏ tới đối tượng vẽ, tham số thứ bán kính z= 0, tham số thứ bán kính trụ độ cao z, tham số thứ độ cao trụ, tham số thứ số mặt chia xung quanh trục z, tham số cuối số mặt chia dọc theo trục z - Void gluDisk( GLUquadricObj *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops ); Hàm vẽ đĩa tròn Tham số trỏ trỏ tới đối tượng vẽ, tham số thư bán kính trong, tham số thứ bán kính ngoài, tham số thứ số mặt chia, tham số thứ số vòng tròn đồng tâm - 25 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt 3.1)Hàm shoulder(solid): Vẽ bệ: y z O x Chọn hệ trục vẽ bàn tay trái Trục ox vuông góc vào hình Từ góc toạ độ tịnh tiến xuống trục oy đoạn -1.6 sau vẽ hình hộp Box(1,2,1,1) Tiếp tục tịnh tiến đoạn theo trục oy -2 sau vẽ hình hộp Box(2,2,2,1) sau tịnh tiến ngược trở lại quay quanh trục oz góc 90 độ vẽ hình cầu bán kính 0.6 Hình vẽ shoulder 3.2)UpperArm(char solid) Hàm vẽ cánh tay Lúc trục toạ độ là: - 26 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt x z y Tiếp tục vẽ hình hộp cách gọi hàm Box(0.8, 2.0, 0.8, solid) có chiều dài chiều rộng chiều cao 0.4 Sau tịnh tiến lùi lại trục oy đoạn -0.95 Tiếp tục quay quanh trục ox góc 90 độ Hệ trục toạ độ lúc : x y z Sau vẽ tiếp hình trụ ( gluCylinder(qobj, 0.4, 0.4, 1.5, 16, 10)) có bán kính 0.4 , độ dài 1.5 - 27 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt glRotatef(-90.0,1, 0, 0.0) quay quanh trục ox góc -90 độ quay trở lại hệ trục toạ độ: x z y dịch chuyển hàm glTranslatef(-0.4, -1.85, 0) sau quay quanh trục oy góc 90 độ => ta có hệ trục toạ độ z y O x vẽ hình trụ nằm ngang có bán kính 0.2 0.5 có chiều dài 0.8 - 28 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt glTranslatef(0.0, 0.0, 0.8) tịnh tiến đoạn dọc trục oz đoạn 0.8 vẽ đĩa có đường kính 0.5 đường kính 0.2 sau : glRotatef(-90.0, 0.0, 1.0, 0.0); glRotatef(90,1,0,0); quay quanh trục oy góc -90 độ quay quanh trục ox góc 90 độ hệ trục trở thành : x y z glTranslatef(0.4,0, 0.0) tịnh tiến dọc trục ox đoạn 0.4 Hình vẽ cánh tay 3.3)Void ForeArm(char solid) Vẽ khuỷ tay : glTranslatef(0.0, 0.0, 1.3); Box(0.8, 0.8, 2, solid); - 29 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt từ vị trí vị trí hệ toạ độ tịnh tiến dọc trục oz đoạn 1.3 vẽ hình hộp có chiều tường ứng với trục ox, oy ,oz 0.4 , 0.4, ( hàm Box() có : x = width / 2, y = height /2, z = depth / 2) Hình vẽ khuỷ tay - 30 - Khoa Toán Tin - Ứng Dụng x Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt y z 3.4)Vẽ cổ tay: - Vẽ đốt ngón tay Hệ trục toạ độ gluCylinder(qobj, 0.5, 0.5, 0.5, 16, 10); glTranslatef(0.0, 0.0, 0.5);gluDisk(qobj, 0.0, 0.5, 16, 10); sau vẽ hình trụ bán kính 0.5 dài 0.5 Tịnh tiến dọc theo trục oz đoạn 0.5 sau vẽ đĩa tròn bán kính 0.5 glRotatef(180, 0.0, 0.0, 1.0); glTranslatef(0.0, 0.3, -0.15); Quay quanh trục oz 180 độ sau tịnh tiến dọc theo trục oy đoạn 0.3 theo trục oz đoạn -0.15 Lúc trục toạ độ là: O z y x glRotatef(-45, 1, 0, 0); Quay quanh trục oz góc -45 độ gluCylinder(qobj, 0.15, 0.15, 0.8, 16, 10); - 31 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt gluCylinder(qobj, 0.06, 0.06, 0.8, 16, 10); glTranslatef(0.0, 0.0, 0.8); gluDisk(qobj, 0.06, 0.15, 16, 10); gluSphere(qobj, 0.25, 16, 16); ý nghĩa hàm trên: vẽ hình trụ bán kính 0.15 0.06 có chiều dài 0.8 Sau tịnh tiến dọc theo trục oz đoạn 0.8 vẽ đĩa tròn bán kính 0.06 bán kính 0.15 Tiếp theo vẽ hình cầu bán kính 0.25 -b) Vẽ đốt ngón tay 2: Đốt cách vẽ tương tự đốt -c) Vẽ ngón tay trái: glRotatef(30, 1, 0, 0); glTranslatef(0, 0.0, 0.3); Box(0.2, 0.2, 1.1, solid); Quay quanh trục ox góc 30 độ tịnh tiến theo trục oz đoạn 0.3 sau vẽ hình hộp độ dài theo trục toạ độ -d) Vẽ ngón tay phải: glRotatef(-30, 1, 0, 0); glTranslatef(0, 0.0, 0.3); Box(0.2, 0.2, 1.1, solid); 3.5) Một số hàm vẽ khác xây dựng chương trình  Void mouse(int button, int state, int x, int y) : hàm có chức bắt chuột  Void Toggle(void) : chức xác định tham số để điền đầy  Void disable(void) : không sử dụng chế độ chiếu sáng, độ sâu v.v.v  Void lighting(void) : thiết lập chế độ chiếu sáng vị trí nguồn sáng  Void dovat(void) : vẽ hình hộp để di chuyển  Void DrawMech(void) : vẽ thân cánh tay rôbốt  Void vetru(void): chức vẽ bệ đặt khối hình hộp di chuyển - 32 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Void display(void): hiển thị toàn cảnh mà ta vẽ lên hình Bao gồm cánh tay rôbốt, đồ vật, mặt , bệ để đồ vật  Void myinit(void) : khởi tạo toàn cảnh vẽ ban đầu  Void myReshape(int w, int h) :vẽ lại hình thay đổi  Void special(int key, int x, int y) : sử dụng phím đặc biệt bàn phím dùng để di chuyển cánh tay rôbốt Ví dụ tịnh tiến, lùi, dịch chuyển sang phải sang trái  Void keyboard(unsigned char key, int x, int y): sử dụng nút ấn bàn phím  Void menu_select(int mode): chọn menu  Void glutMenu(void) : hàm xây dựng để sử dụng menu  Int main(int argc, char **argv) : hàm main hàm sử dụng vòng lặp vẽ gọi hàm để xây dựng chương trình 4) Một số hình vẽ rôbốt: Dạng line - 33 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt Dạng khối: - 34 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt - 35 - [...]... trình : tả chuyển động của rôbốt Sử dụng đồ hoạ 3D dựa trên ngôn ngữ Opengl 2)Chức năng của chương trình : Di chuyển đồ vật từ vị trí A -> B Dùng cánh tay rôbốt để gắp đồ vật và di chuyển từ vị trí này sang vị trí khác Dùng các phím điều khiển trên bàn phím để điểu khiển cánh tay rôbốt Phạm vi và giới hạn của cánh tay rôbốt  Cả thân rôbốt có thể chuyển động quanh oy 3600 (nút a,s)  Cánh tay rôbốt. .. thể chuyển động quay xung quanh trục oz từ -30→2100 (nút điều khiển r,t) - 23 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Khuỷ tay có thể chuyển động quanh trục ox từ -130 0 → 1300 ( nút điều khiển w,e)  cổ tay có thể quay quanh trục oz 3600 (nút điều khiển z,x)  Ngón tay có thể quanh quanh trục ox -800 →800 (nút điểu khiển m ,n) Ngoài ra rôbốt có thể dịch chuyển. .. Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt từ vị trí và vị trí hệ toạ độ trên tịnh tiến dọc trục oz 1 đoạn là 1.3 và vẽ hình hộp có các chiều tường ứng với trục ox, oy ,oz là 0.4 , 0.4, 1 ( vì hàm Box() có : x = width / 2, y = height /2, z = depth / 2) Hình vẽ khuỷ tay - 30 - Khoa Toán Tin - Ứng Dụng x Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt y z 3.4)Vẽ cổ... dụng vòng lặp vẽ và gọi các hàm để xây dựng chương trình 4) Một số hình vẽ rôbốt: Dạng line - 33 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt Dạng khối: - 34 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt - 35 - ... nguồn sáng  Void dovat(void) : vẽ hình hộp để di chuyển  Void DrawMech(void) : vẽ thân của cánh tay rôbốt  Void vetru(void): chức năng vẽ bệ đặt khối hình hộp di chuyển - 32 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Void display(void): hiển thị toàn cảnh những gì mà ta vẽ lên màn hình Bao gồm cánh tay rôbốt, đồ vật, mặt nền , và bệ để đồ vật  Void myinit(void)... môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt glRotatef(-90.0,1, 0, 0.0) quay quanh trục ox 1 góc -90 độ quay trở lại hệ trục toạ độ: x z y 0 dịch chuyển bằng hàm glTranslatef(-0.4, -1.85, 0) sau đó quay quanh trục oy 1 góc 90 độ => ta có hệ trục toạ độ z y O x vẽ 2 hình trụ nằm ngang có bán kính là 0.2 và 0.5 có chiều dài là 0.8 - 28 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Mô. .. môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Xác định trực tiếp ma trận – glLoadMatrix* – glLoadIdentity  Lưu và phục hồi ma trận – glPushMatrix – glPopMatrix 3.4Các hàm trên Vertex Ánh sáng & màu sắc  Thiết lập ánh sáng - glLight* - glLightModel*  Thiết lập vật liệu - glMaterial* - glFrontFace - glColorMaterial  Các chế độ - 14 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Mô. ..Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt – glIndex* (chế độ color-index)  Texture coordinate – glTexCoord*  Chú ý: Các hàm trên cạnh, vector pháp, màu, texture là thiết lập giá trị hiện tại, do đó phải được gọi trước glVertex* 3.3 Các hàm trên Vertex Biến đổi ma trận  Toạ độ điểm, vector pháp được chuyển đổi bởi ma trận phép chiếu trước khi vẽ... kí tự được ấn - 17 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Void glutMouseFunc(void (*func)(int button, int state, int x, int y)) : hàm được gọi khi 1 nút của chuột được ấn hay được nhả ra Nó bao gồm các tham số sau: GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, or GLUT_RIGHT_BUTTON, GLUT_UP or GLUT_DOWN còn x, y tả vị trí của chuột khi sự kiện sảy ra  Void glutMotionFunc(void... glVertex*(); - glEnd() - Tất cả các hình khối được vẽ trong opengl đều được nằm giữa hai dòng lệnh glBegin() và glEnd() - 20 - Khoa Toán Tin - Ứng Dụng Đồ án môn học Đồ Hoạ Máy Tính Phỏng Chuyển Động Rôbốt  Chiếu (Projection) - Bắt đầu với ma trận chuyển đổi từ WCS sang hệ toạ độ camera: glMatrixMode(GL_PROJECTION) - glLoadIdentity():glLoadIdentity: thay thế ma trận hiện thời bằng ma trận đơn vị - Thiết

Ngày đăng: 11/07/2016, 22:37

Từ khóa liên quan

Mục lục

  • I. Tổng quan về đồ hoạ máy tính

    • 1) Giới thiệu

    • 2) Tổng quan về một hệ đồ hoạ.

    • II. Giới thiệu tổng quan về opengl

      • 1.Giới thiệu tổng quan về OpenGL

      • 2. Các khái niệm

      • 3. Tổng quan về các hàm của OpenGL

      • 4. Các thư viện tiện ích

      • III. Chương trình cánh tay rô bốt

        • 1)Mục đích của chương trình :

        • 2)Chức năng của chương trình :

        • 3)Tiến trình vẽ cánh tay rôbốt:

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

Tài liệu liên quan