Sau hơn 3 tháng dưới sự hướng dẫn tận tình của TS. Triệu Quốc Lộc và PGS,TS. Đinh Văn Phong em đã cơ bản hoàn thành bản đồ án tính toán và mô phỏng trục đập của máy đập lúa liên hoàn. Nội dung của đồ án đã đạt được như sau:
Chương I: Nêu lên hiện trạng và phương hướng cơ giới hóa thu hoạch lúa ở nước ta.
Chương II: Tổng quan về các loại máy đập lúa liên hoàn.
Chương III: Khảo sát động lực học trục đập máy đập lúa liên hoàn.
Chương IV: Mô phỏng động học trục đập.
Mặc dù đã hết sức cố gắng trong quá trình làm đồ án, nhưng do kiến thức thực tế còn hạn chế, cho nên bản đồ án này không tránh khỏi những thiếu xót và hạn chế, mong các thầy thông cảm.
Vì ở Việt Nam việc sản xuất máy đập lúa hầu hết do các xưởng tư nhân với các trang thiết bị thô sơ, sử dụng nhiều vật tư tận dụng, chế tạo theo kinh nghiệm là chủ yếu, do vậy chất lượng làm việc và độ bền không đảm bảo độ đồng đều và ổn định. Mà hiện nay chúng ta chưa có tiêu chuẩn về chất lượng của máy đập lúa, chưa có cơ quan có trách nhiệm giám định và kiểm soát chất lượng của máy đập lúa của các cơ sở chế tạo để đảm bảo hiệu quả kinh tế cho người sử dụng. Vì vậy em hy vọng trong thời gian tới ở Việt Nam sẽ có một cơ quan có trách nhiệm giám định và kiểm soát chất lượng của máy đập lúa của các cơ sở chế tạo để đảm bảo hiệu quả kinh tế cho người sử dụng.
71 trang |
Chia sẻ: huong.duong | Lượt xem: 1602 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Thiết kế lô đập của máy đập lúa liên hợp cũng chính là một phần trong việc cải tiến máy móc để nâng cao năng suất trong quá trình thu hoạch lúa ở nước ta, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
c trục
9. Sàng phân loại: Lỗ F12, lắc dọc
- Số lượng sàng, chiếc 3 3
- Biên độ giao động, mm 38 38
10. Kích thước chung (DxRxC), m
2,2x1,7x1,6 (ĐLLH-1400)
2,6x1,9x1,8 (ĐLLH-1600)
11. Khối lượng máy (không động cơ ), kg 450 700
Máy đập lúa Nam Hồng kiểu ĐL
Đặc tính kỹ thuật
Mã hiệu
ĐL-1400
ĐL-1600
ĐL-2000
1. Năng suất, T/h
0,8
1,5
2,0
2. Công suất động cơ, HP
8
10
15
3. Chiều dài máy, m
2,3
2,5
3,0
4. Chiều rộng máy, m
0,85
0,95
1,10
5. Chiều cao máy, m
1,60
1,68
1,80
6. Khối lượng máy, kg
290
315
380
7. Tỷ lệ sót hạt, %
< 0,3
< 0,2
-
8. Giá tham khảo, 1000 đ
3.200
3.600
5.100
Máy đập lúa liên hoàn kiểu tự hành
Đặc tính kỹ thuật
1. Năng suất, T/h 2,5
2. Chất lượng đập
- Tỷ lệ sót, % 0,5
- Tỷ lệ thóc theo rơm, % 0,1
- Tỷ lệ hư hỏng hạt, % 0,5
- Độ sạch thóc, % 90
3. Chi phí nhiên liệu, g/h 3960
4. Nhân công phục vụ, người 3
5. Công suất động cơ, HP 18
6. Trống đập: răng bản
- Đường kính đỉnh răng, mm 600
- Chiều dài trống, m 2,2
- Đường kính chân răng, mm 300
- Số lượng răng 18
- Tốc độ trống, vg/ph 650
7. Máng trống: Máng trơn
-Góc bao, độ 270
- Khe hở trống máng, mm 18
8. Quạt làm sạch: Thổi dọc trục
- Đường kính, mm 450
- Tốc độ quay, vg/ph 1900
9. Sàng phân loại: Lỗ F12, lắc dọc
- Số lượng sàng, chiếc 2
- Tần số giao động, lần/ phút 450
- Biên độ giao động, mm 32
10. Kích thước chung (DxRxC), m 2,9x1,1x1,6
11. Khối lượng máy (không động cơ ), kg 500
Chương III
KHẢO SÁT LỰC ĐỘNG HỌC TRỤC ĐẬP MÁY ĐẬP LÚA LIÊN HOÀN VN 2000
3.1.Cấu tạo và nguyên lý hoạt động của máy đập lúa liên hoàn VN 2000.
a.Cấu tạo.
b.Sơ đồ động lực học.
Hình 3.1: Sơ đồ động học của máy đập lúa liên hoàn
c.Nguyên lý hoạt động.
Khi động cơ quay làm cho bánh đai 2 quay, nhờ bộ truyền đai bánh đai 2 truyền chuyển động quay tới bánh đai 3 gắn trên trục đập, làm cho trục đập quay. Trên lô đập có gắn các răng đập, khi trục đập quay các răng này có tác dụng vừa tách hạt lúa ra khỏi bông vừa có tác dụng đẩy lúa về phía cuối trục đập. Khi đến cuối trục đập lúa lúc này đã được tách hết hạt chỉ còn lại rơm và được đẩy ra ngoài nhờ các cánh quạt được bố trí ở cuối trục đập.
3.2.Khảo sát động lực học trục đập.
a.Thiết lập biểu thức tính lực và mômen tại các răng đập.
Xét bộ truyền đai như hình vẽ:
Ta thấy:
Để tạo lực ma sát giữa đai và bánh đai, cần phải căng đai với lực căng ban đầu .
Khi bộ truyền làm việc, bánh dẫn chịu tác dụng của mômen xoắn , trong nhánh dẫn lực sẽ tăng lên là và trong nhánh bị dẫn lực sẽ giảm xuống còn .
Ta có hệ thức (theo tài liệu [4]):
(3.1)
Gọi là lực vòng trong truyền động đai (theo tài liệu [4]), ta có:
(3.2)
Trong đó:
: lực vòng trên bánh đai, hay lực có ích, N.
: đường kính bánh dẫn, mm.
: mômen xoắn trên trục dẫn, N.m.
: công suất của máy, kW.
: vận tốc vòng của bánh dẫn, m/s.
(3.3)
Với:
: số vòng quay của bánh dẫn trong 1 phút,v/ph.
Từ (3.2) và (3.3) ta có công thức tính lực vòng theo các thông số của bánh dẫn là:
(3.4)
Vì trong truyền động đai có xảy ra hiện tượng trượt giữa dây đai và bánh đai, cho nên vận tốc vòng của bánh bị dẫn chậm hơn vận tốc vòng của bánh dẫn.
Ta có hệ thức (theo tài liệu [4]):
(3.5)
Trong đó:
: vận tốc vòng của bánh dẫn, m/s.
: vận tốc vòng của bánh bị dẫn, m/s.
: hệ số trượt của đai.
Vận tốc vòng của bánh bị dẫn được tính theo công thức:
(3.6)
Trong đó:
: đường kính của bánh bị dẫn, mm.
: số vòng quay trong 1 phút của bánh bị dẫn, v/ph.
Từ các công thức (3.2),(3.5) và (3.6) ta có công thức tính lực vòng trong truyền động đai theo các thông số của bánh bị dẫn là:
(3.7)
Ta thấy, lực vòng chính là ngoại lực tác dụng lên bánh đai, lực này có phương tiếp tuyến với vành của bánh đai.
Nếu gọi và lần lượt là đường kính và tổng lực tại một điểm trên răng đập, thì ta sẽ có hệ thức sau:
Từ biểu thức trên ta suy ra công thức tính tổng lực tại một điểm trên các răng đập là:
(3.8)
Từ biểu thức tính lực (3.8) ta có biểu thức tính tổng mômen tại một điểm trên các răng đập là:
(3.9)
Biểu thức (3.9) chính là biểu thức tính tổng mômen tại một điểm trên các răng đập.
b.Thiết lập phương trình chuyển động của trục đập.
Do khi máy làm việc có lúa đưa vào, tạo ra một lực cản Fc và mômen cản Mc đối với trục đập và vì vậy ở đây coi chuyển động của trục đập là chuyển động quay biến đổi.
Như vậy, nếu bỏ qua ma sát tại các ổ bi trên trục đập thì phương trình chuyển động của trục đập được mô tả như sau:
(3.10)
Trong đó:
: Mômen của ngoại lực tác dụng do lực vòng Ft tạo ra.
: Mômen cản của lúa lên trục đập.
: Mômen quán tính của trục đập.
Mômen quán tính J của trục đập được tính theo công thức:
(3.11)
Trong đó:
J1: Mômen quán tính của bánh đai.
J2: Mômen quán tính của lô đập.
J3: Mômen quán tính của răng đập loại A ( loại răng bản nhỏ).
J4: Mômen quán tính của răng đập loại B ( loại răng bản to).
Khi tính mômen quán tính J1 của bánh đai ta tính như đối với bánh đà:
(3.12)
Trong đó:
m1: Khối lượng của bánh đai.
r1: Bán kính của bánh đai.
Vì lô đập là trụ rỗng nên ta có thể tính mômen quán tính J2 của lô đập theo công thức sau:
(3.13)
Trong đó:
m2: Khối lượng của lô đập.
: Bán kính ngoài của lô đập.
: Bán kính trong của lô đập.
Nếu răng đập A có các kích thước như hình 3.2, trong đó hệ trục tọa độ OUVZ được tạo ra khi quay hệ trục tọa độ OXYZ quanh trục OZ theo chiều ngược kim đồng hồ một góc , và trục OU // D.
Hình 3.2
Khi đó ta có công thức tính mômen quán tính của răng đập A đối với trục quay D như sau:
(3.14)
Trong đó:
: Số răng đập loại A.
m3: Khối lượng của răng đập A.
: Chiều rộng của răng đập A.
: Chiều cao của răng đập A.
: Chiều dày của răng đập A.
: Góc giữa véctơ pháp tuyến của bề mặt răng đập và trục
quay D của lô đập.
: Khoảng cách từ trục quay của lô đập đến chân răng đập A.
: Khoảng cách từ trục quay của lô đập đến đỉnh răng đập A.
Tương tự như đối với răng đập loại A, ta cũng tính được mômen quán tính J4 của răng đập loại B như sau:
(3.15)
Trong đó:
: Số răng đập loại B.
m4: Khối lượng của răng đập B.
: Chiều rộng của răng đập B.
: Chiều cao của răng đập B.
: Chiều dày của răng đập B.
: Góc giữa véctơ pháp tuyến của bề mặt răng đập và trục
quay D của lô đập.
: Khoảng cách từ trục quay của lô đập đến chân răng đập B.
: Khoảng cách từ trục quay của lô đập đến đỉnh răng đập B.
Vì các răng đập A và các răng đập B đều có cùng chiều cao và các răng đập đều gắn lên lô đập nên ta có:
(3.16)
(3.17)
Mặt khác vì các răng đập A và các răng đập B đều nghiêng so với trục quay một góc bằng nhau nên ta có:
(3.18)
Từ các công thức (3.14), (3.15), (3.16), (3.17), (3.18) ta có các công thức tính mômen quán tính của các răng đập A và các răng đập B như sau:
(3.19)
(3.20)
Từ các công thức (3.11), (3.12), (3.13), (3.19), (3.20) ta thu được công thức tính mômen quán tính của trục đập như sau:
(3.21)
Mặt khác do đặc trưng của lúa có khác nhau như: lúa khô - lúa ướt, lúa dai - lúa rụng, lúa ngắn – lúa dài. Vì vậy mômen cản Mc cũng sẽ thay đổi theo từng loại lúa làm việc, cũng như lượng lúa đưa vào.
Hơn nữa nếu mômen cản Mc cân bằng với mômen của ngoại lực tác dụng Mt, khi đó trục đập sẽ đứng im hoặc quay đều. Mà trong thực tế khi máy làm việc trục đập vẫn quay khi lúa vẫn đưa vào, điều này có nghĩa mômen cản nhỏ hơn so với mômen của ngoại lực tác dụng lên trục đập
( Mc < Mt ) và như vậy có thể coi giá trị của mômen cản:
(3.22)
Trong đó:
: Hệ số của mômen cản.
Mômen của ngoại lực tác dụng được tính theo công thức sau:
(3.23)
Như vậy phương trình chuyển động của trục đập (3.10) được viết lại như sau:
(3.24)
Trong đó mômen quán tính J được tính theo công thức (3.21), và mômen của ngoại lực tác dụng được tính theo công thức (3.23).
c.Khảo sát sự biến đổi của gia tốc góc và gia tốc dài a () theo sự thay đổi của mômen cản Mc hay hệ số mômen cản k.
Các thông số của trục đập:
+ Công suất động cơ: P = 13,5 kw.
+ Tốc độ quay của động cơ: n1 = 1400 vg/ph.
+ Hệ số trượt đai: = 0,02.
+ Khối lượng của bánh đai: = 6,38 kg.
+ Bán kính của bánh đai: = 150 mm.
+ Khối lượng của lô đập: = 34,8 kg.
+ Bán kính trong của lô đập: = 158 mm.
+ Bán kính ngoài của lô đập: = 160 mm.
+ Số răng đập loại A: = 12.
+ Khối lượng của một răng đập loại A: = 0,52 kg.
+ Các kích thước của răng đập loại A:
-Chiều rộng: = 32.5 mm.
-Chiều cao: = 110 mm.
-Chiều dày: = 17 mm.
+ Số răng đập loại B: = 6.
+ Khối lượng của một răng đập loại B: = 0,67 kg.
+ Các kích thước của răng đập loại B:
-Chiều rộng: = 45 mm.
-Chiều cao: = 110 mm.
-Chiều dày: = 17 mm.
+Góc giữa véctơ pháp tuyến của bề mặt răng đập và trục quay D của lô đập: = 45°.
Từ các thông số của trục đập và từ công thức (3.24) ta vẽ được đồ thị của gia tốc góc và của gia tốc dài a theo sự thay đổi của hệ số Mômen cản k như sau:
Hình 3.3: Đồ thị biểu diễn sự phụ thuộc của gia tốc góc vào sự thay đổi của hệ số mômen cản k.
Hình 3.4: Đồ thị biểu diễn sự phụ thuộc của gia tốc dài a ( tại điểm giữa của răng đập) vào sự thay đổi của hệ số mômen cản k.
d.Thiết lập mối quan hệ giữa góc nghiêng của răng so với trục đập và gia tốc góc , gia tốc dài a ().
Hình 3.5: Sơ đồ bố trí góc nghiêng của răng trên trục đập.
Từ hình vẽ trên ta suy ra công thức liên hệ giữa góc nghiêng của răng trên trục đập và góc giữa véctơ pháp tuyến của bề mặt răng so với trục quay là:
(3.25)
Thay (3.25) vào (3.21) ta thu được công thức tính mômen quán tính của trục đập theo góc nghiêng là:
(3.26)
Thay (3.26) vào (3.24) ta thu được công thức tính gia tốc góc theo góc nghiêng của răng đập trên trục đập như sau:
(3.27)
Từ công thức (3.27) ta vẽ được đồ thị biểu diễn mối quan hệ giữa gia tốc góc và góc nghiêng của răng trên trục đập với hệ số mômen cản k = 0.5 như sau:
Hình 3.6:
Đồ thị biểu diễn mối quan hệ giữa góc nghiêng và gia tốc góc .
Hình 3.7:
Đồ thị biểu diễn mối quan hệ giữa góc nghiêng và gia tốc
dài .
Chương IV
MÔ PHỎNG ĐỘNG HỌC TRỤC ĐẬP
4.1.Khái quát về công cụ mô phỏng.
Các vấn đề lí thuyết về Visual C++ và OpenGL:
4.1.1.Visual C++
a)Giới thiệu
Visual C++ là một ngôn ngữ lập trình hướng đối tượng, nó đã khắc phục được một số nhược điểm của phương pháp lập trình hướng thủ tục bằng cách kết hợp các đặc trưng tốt nhất của lập trình hướng thủ tục với các quan niệm mới, mạnh hơn như lớp, thừa hưởng, đa trị...Thư viện MFC (Microsoft Foundation Class ) của Visual C++ tỏ ra khá hiệu quả, chúng làm giảm nhẹ sức lực của người lập trình theo quan điểm hướng đối tượng. Chương trình xây dựng trên cơ sở MFC có tính thích nghi cao, sẵn sàng chạy trên các thế hệ Windows khác nhau. Vì xuất phát từ ngôn ngữ của hệ điều hành, cho nên Visual C++ có khả năng tận dụng mọi sức mạnh của hệ thống cho chương trình ứng dụng. Tiếp theo, Visual C++ cho lại chương trình ngắn gọn và thực hiện với tốc độ rất cao, đôi khi so sánh được với chương trình viết bằng hợp ngữ. Đặc biệt chức năng Wizard giúp làm giảm thiểu thời gian ban đầu để tạo lập khung chương trình. Ngoài ra Visual C++ còn hỗ trợ các ứng dụng liên quan đến Internet, cơ sở dữ liệu...
b)Thư viện MFC của Visual C++
MFC là tập hợp các lớp định nghĩa sẵn. Chúng biểu diễn cách tiếp cận hướng đối tượng đến lập trình Windows và chúng gói các Windows API. Rất nhiều lập trình viên Visual C++ đã chọn thư viện MFC như là thư viện lớp để phát triển ứng dụng của mình. MFC cho phép lập trình viên dành nhiều thời gian hơn cho phát triển các thành phần cấu trúc chương trình và ít phải lo lắng về giao diện của Windows. Đặc biệt, MFC làm đơn giản tiến trình phát triển mã trình cho các loại máy có hệ điều hành khác nhau: Windows 16 bit, Win32, MacIntosh.
Hiện nay MFC của Visual C++ 6.0 có hơn 130 lớp, trong đó một số lớp được trực tiếp sử dụng và một số khác làm các lớp cơ sở cho lớp riêng của lập trình viên. Rất nhiều lớp khá đơn giản, chẳng hạn như lớp CPoint ( chỉ chứa tọa độ x, y của điểm ). Một số lớp khác lại rất phức tạp, thí dụ như lớp CWnd chứa cả cửa sổ mà ta quan sát thấy trên màn hình.
Trong chương trình MFC, giao diện lập trình rất ít được gọi trực tiếp. Thay vì đó là tạo ra các đối tượng của các lớp MFC và gọi các hàm thành phần của chúng. Rất nhiều hàm thành phần MFC là lớp bao bọc mỏng xung quanh giao diện lập trình ứng dụng ( Application Programming Interface – API ); và rất nhiều hàm, thậm chí có cùng tên với các hàm API. Điều này giúp lập trình viên C có thể chuyển nhanh sang MFC. Thí dụ, khi dịch chuyển cửa sổ, trong C ta gọi hàm API với tên SetWinowsPos. Khi tìm tên hàm này trong MFC ta thấy MFC cũng trợ giúp chúng. Đó là hàm thành phần của lớp CWnd khi cửa sổ được coi là đối tượng còn SetWindowsPos là một hành động mà ta muốn thực hiện trên đối tượng đó.
MFC còn là khung ( framework ) ứng dụng. MFC giúp định nghĩa cấu trúc của ứng dụng và quản lý rất nhiều các công việc khác nữa. Bắt đầu với CWinApp, là lớp biểu diễn chính ứng dụng, MFC bao gồm hầu hết mọi thao tác chương trình. Khung ứng dụng cung cấp hàm WinMain, đến lượt WinMain gọi các hàm thành phần của đối tượng ứng dụng để làm cho chương trình chạy. Một trong các hàm thành phần của CWinApp mà WinMain gọi đến là hàm Run, chúng chứa vòng lặp thông điệp và lệnh chạy chương trình. MFC còn hỗ trợ các tài liệu ( Document ) và quan sát ( View ), cho phép tách dữ liệu của chương trình khỏi biểu diễn đồ họa của chúng. MFC cũng đưa ra một số hàm API riêng, độc lập với các lớp và được dùng chung.
Các nhóm lớp trong thư viện MFC:
· Document & application class : Lo quản lý các tài liệu và các ứng dụng .
· Control Class : Liên quan đến các ô điều khiển nhìn thấy được (visual control) như ô hiệu đính (Edit control), nút điều khiển (command button) ô liệt kê (list box) cũng như ô hỗn hợp ( combo box).
· Dialog box Class: Xử lý các khung đối thoại tự tạo bởi người sử dụng (custom dialog box) và các khung đối thoại thông dụng đã cài sẵn (command dialog box như file, color selection, print, Fine/ Replace dialog box).
· Fram Window class : Quản lý các khung cửa sổ (chính và con ) liên quan đến tài liệu SDI và MDI.
· View Class: Quản lý các trình đơn và các mục trình đơn.
· Control Bar Class : Tạo những thanh công, thanh tình trạng và các dialog Bar trong một ứng dụng đi kèm với cửa sổ bị chẻ đôi giống như trên file Manager của windows.
· Menu Bar : Quản lý các trình đơn và mục trình đơn .
· Graphical Draw Object : Liên quan đến các hình ảnh đồ họa bitmap, Icon và việc quản lý và sử dụng font chữ (Font ), hộp mầu (Color palette) thường được gọi là các đối tượng GDI (Graphic Device Interface).
· Graphical Drawing Class: Các lớp này sẽ giải quyết vẽ việc các điểm, đường thẳng hoặc cong, hình dáng( tròn, chữ nhật, đa giác) thường được gọi là đối tượng GDI.
· File Services Class: Các lớp này chận hứng và giăng bẫy bắt các lỗi lầm khi chạy chương trình. Các sai lầm này có thể do hoạt động sai liên quan đến tập tin, ký ức nguồn lực và OLE.
·Collection Class: Gồm ba nhóm lớp cho phép quản lý các bảng dãy (Array), bảng liệt kê kết nối ( Linked List) và “maps” thuộc nhiều kiểu dữ liệu khác nhau hoặc nhiều lớp khác nhau.
· OLE Support class: Các lớp này quản lý các đối tượng OLE trong những giao dịch.
· ODBC class: Liên quan đến việc quản lý và truy xuất các tập tin dữ liệu thông qua cơ chế ODBC (Open DataBase Connectivity).
· Miscellaneous Class: Các lớp linh tinh này là hỗ trợ mô hình đối tượng runtime, các kiểu dữ liệu đơn giản, các cấu trúc
4.1.2.OpenGL
a)Giới thiệu
Ngày nay, với sự trợ giúp của máy tính, chúng ta có thể nâng cao khả năng làm việc cũng như có thể cụ thể hóa chí tưởng tượng. Trong đó, mô phỏng là một lĩnh vực có nhu cầu lớn. Chúng ta có thể mô phỏng các hoạt động của các loại máy móc, mô phỏng các vụ va chạm giữa các phương tiện giao thông, các thí nghiệm cơ điện, các trò chơi...
Ưu điểm mô phỏng mang lại là thể hiện khá rõ nét, tương đối thực các cơ cấu, những vật thể cần mô phỏng... hiện nay có rất nhiều ngôn ngữ được dùng để mô phỏng như: C++, Alaska, 3Dstudiomax, Solidwork... chúng đều có khả năng mô phỏng rất tốt.
Một trong những phần mềm mô phỏng bằng máy tính khá mạnh đó là: Lập trình đồ họa 3 chiều với OpenGL. Đây là ngôn ngữ làm trên nền Visual C++, chủ yếu về lập trình với thư viện MFC của Microsoft Visual C++.
OpenGL là một thư viện đồ họa tốc độ cao, độc lập với các hệ thống giao diện của hệ điều hành. Ban đầu do hãng Silicon Graphics Inc phát triển cho các Workstation đồ họa tốc độ cao với tên IRIS GL từ năm 1982.
OpenGL đã trở thành một chuẩn công nghiệp và các đặc tính kỹ thuật của OpenGL do ủy ban kỹ thuật (ARB : Architectural Review Board) phê chuẩn. ARB được những hãng phần mềm hàng đầu như Silicon Graphics Inc, (SGI), Intel, Microsoft, IBM, Intergraph... lập ra năm 1990.
Có thể phát triển các ứng dụng đồ họa với OpenGL sử dụng các ngôn ngữ lập trình khác nhau. Hiện đã có các triển khai của OpenGL cho các ngôn ngữ như C/C++, Fortran, Java...
b)Cấu trúc thư viện của OpenGL
Về cơ bản OpenGL là một thư viện của một tập hợp của khoảng 150 hàm hỗ chợ các thao tác:
- Thể hiện các đối tượng cơ bản như điểm, đường, đa giác và từ đó có thể tạo ra các đối tượng đồ họa phức tạp hơn như mặt cầu, mặt nón, mặt hình trụ...hoặc các đối tượng do lập trình viên tạo ra.
- Quan sát các đối tượng: các đối tượng sau khi được vẽ ra có thể được quan sát từ những góc nhìn khác nhau thông qua các phép biến hình (transformation).
- Định màu sắc: các đối tượng có thể được thể hiện với màu sắc bằng nhiều cách chỉ định màu khác nhau RGBA hay color-index...
- Sử dụng ánh sáng: ánh sáng có thể được sử dụng để tạo ra những cảnh “thật” từ những đối tượng đã có. OpenGL cho phép sử dụng nhiều loại nguồn sáng khác nhau như phát xạ (emitted), bao quanh (ambient), phân tán (diffuse), và phản chiếu (specular).
- Các kỹ thuật tăng chất lượng hiển thị ảnh như chống răng cưa (anti-aliasing), trộn màu (blending), sương khói trong ảnh (fog)...
- Thao tác trên các ảnh Bitmap: Lập trình viên có thể “dán” các ảnh của cảnh thật lên trên bề mặt các đối tượng được tạo ra bằng OpenGL...
c) Các bước khởi tạo OpenGL với MFC
- Để OpenGL có thể chạy được, ta phải thực hiện các lệnh gộp file header chứa các lệnh OpenGL.
Cụ thể:
#include cho mọi hàm của OpenGL ( các hàm có tên bắt đầu bằng “gl”).
#include cho các thư viện tiện ích của OpenGL
( các hàm có tên bắt đầu bằng “glu”).
#include cho các thư viện bổ trợ trong WindowsNT (các hàm có tên bắt đầu bằng “aux”).
Ngoài ra, ta còn phải thêm các mô đun thư viện tương ứng để có thể liên kết với các project: thêm vào Project – Setting – Link – Objecj/ Library modules các tên file thư viện: Opengl32.lib, glaux.lib, glu32.lib.
Hoặc nhập trực tiếp các file này vào Project, thông thường chúng ở thư mục:
Microsoft Visual Studio\VC98\Lib
- Khởi tạo:
Các bước khởi tạo OpenGL ở đây cho phép OpenGL có thể vẽ được trong môi trường Windows.
Các bước đó là:
· Khởi tạo PIXLFORMATDESCRIPTOR
· Tạo OpenGL Rendering Context
· Đặt các chế độ ta cần cho OpenGL
· Đặt cửa sổ vẽ cho OpenGL
- Kết thúc (xóa bỏ Open )
Thực hiện việc xóa bỏ OpenGL chính là xóa bỏ OpenGL Rendering Context. Trong công đoạn này, ta phải chỉ ra cái OpenGL Rendering Context hiện hành, làm cho nó không phải hiện hành nữa rồi xóa bỏ nó.
4.2.Lập trình mô phỏng cụ thể.
4.2.1.Mô phỏng lô đập của máy đập lúa.
Chương trình thực hiện mô phỏng chuyển động quay của trục đập với giao diện rất dễ sử dụng:
4.2.2.Sử dụng chương trình.
Giao diện của chương trình mô phỏng rất thuận tiện và dễ sử dụng, có nhiều phím chức năng, tiện ích như:
Trình đơn File cho phép tạo cửa sổ mới, mở file, ghi lại và thoát khỏi chế độ mô phỏng.
Trình đơn View cho phép hiển thị thanh công cụ và thanh trạng thái.
Trình đơn Van toc cho phép thay đổi vận tốc của lô đập.
Nút thực hiện chức năng chạy chương trình mô phỏng.
Nút thực hiện chức năng dừng chương trình mô phỏng.
Nút thực hiện chức năng dịch trái.
Nút thực hiện chức năng dịch phải.
Nút thực hiện chức năng dịch lên.
Nút thực hiện chức năng dịch xuống.
Nút thực hiện chức năng quay quanh trục 0x.
Nút thực hiện chức năng quay quanh trục 0y.
Nút thực hiện chức năng quay quanh trục 0z.
Nút thực hiện chức năng phóng to.
Nút thực hiện chức năng thu nhỏ.
4.2.3.Một số đoạn mã trong chương trình mô phỏng lô đập.
Hàm DrawScene() thực hiện vẽ và mô phỏng chuyển động của lô đập:
void CRobot_2DOFView::DrawScene()
{
CRobot_2DOFDoc* pDoc = GetDocument();
m_pInitGL->BeforeDrawing();
m_pInitGL->TranslateGL();
m_pInitGL->MouseMoveGL();
m_pInitGL->ScaleGL();
m_Enviroment.EnableLighting();
m_Enviroment.TurnOnLight();
glPushMatrix();
glScaled(m_dScaleX,m_dScaleY,m_dScaleZ);
glTranslated(m_dTranslateX,m_dTranslateY,m_dTranslateZ);
glRotated(m_dRotateX,1,0,0);
glRotated(m_dRotateY,0,1,0);
glRotated(m_dRotateZ,0,0,1);
glPushMatrix();
pDoc->DrawThan();
glPopMatrix();
glPushMatrix();
glRotated(x_rot,1,0,0);
pDoc->DrawTruc();
glPopMatrix();
glPushMatrix();
glTranslated(-1157.5,-458,0.0);
glRotated(x_rot,1,0,0);
pDoc->DrawBanh_dai();
glPopMatrix();
glPushMatrix();
glTranslated(-1157.5,-213,-150);
glRotated(x_rot,1,0,0);
pDoc->DrawBCDai();
glPopMatrix();
glPopMatrix();
m_Enviroment.TurnOffLight();
m_pInitGL->AfterDrawing();
}
Hàm OnPlay() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnPlay()
{
SetTimer(1,1,NULL);
}
Hàm OnPause() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnPause()
{
KillTimer(1);
}
Hàm OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) được gọi khi nút chuột giữa được nhấn:
BOOL CRobot_2DOFView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
if(zDelta < 120)
{
m_dScaleX -=0.01;
m_dScaleY -=0.01;
m_dScaleZ -=0.01;
}
else
{
m_dScaleX += 0.01;
m_dScaleY += 0.01;
m_dScaleZ += 0.01;
}
DrawScene();
return CView::OnMouseWheel(nFlags, zDelta, pt);
}
Hàm OnThunho() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnThunho()
{
m_dScaleX -= 0.01;
m_dScaleY -= 0.01;
m_dScaleZ -= 0.01;
DrawScene();
}
Hàm OnPhongto() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnPhongto()
{
m_dScaleX += 0.01;
m_dScaleY += 0.01;
m_dScaleZ += 0.01;
DrawScene();
}
Hàm OnDichlen() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnDichlen()
{
m_dTranslateY += 10;
DrawScene();
}
Hàm OnDichxuong() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnDichxuong()
{
m_dTranslateY -= 10;
DrawScene();
}
Hàm OnDichtrai() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnDichtrai()
{
m_dTranslateX -= 10;
DrawScene();
}
Hàm OnDichphai() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnDichphai()
{
m_dTranslateX += 10;
DrawScene();
}
Hàm OnQuayx() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnQuayx()
{
m_dRotateX += 10;
DrawScene();
}
Hàm OnQuayy() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnQuayy()
{
m_dRotateY += 10;
DrawScene();
}
Hàm OnQuayz() được gọi khi nút được nhấn:
void CRobot_2DOFView::OnQuayz()
{
m_dRotateZ += 10;
DrawScene();
}
Hàm DrawTruc() thực hiện vẽ trục quay của lô đập:
void CRobot_2DOFDoc::DrawTruc()
{
glPushMatrix();
m_truc.drawObject();
m_bdTruc.drawObject();
m_Puli.drawObject();
m_Ocpuli.drawObject();
glPopMatrix();
}
void CRobot_2DOFDoc::DrawThan()
{
glPushMatrix();
m_than.drawObject();
m_Thanmay.drawObject();
m_Tangdai.drawObject();
m_Octangdai.drawObject();
m_Vongbi.drawObject();
m_Daydai.drawObject();
glPopMatrix();
}
void CRobot_2DOFDoc::DrawBanh_dai()
{
glPushMatrix();
m_bdMay.drawObject();
m_TBDMay.drawObject();
glPopMatrix();
}
void CRobot_2DOFDoc::DrawBCDai()
{
glPushMatrix();
m_bCangdai.drawObject();
glPopMatrix();
}
void setModel(string _filename)
{
displaylist = 0;
filename=_filename;
if(filename.size()==0) return;
createDisplayList(filename);
}
void setMaterial(const CMaterial& _material)
{
material = _material;
}
void CRobot_2DOFDoc::InitModel()
{
m_truc.setModel("BDF/Truc.bdf");
m_than.setModel("BDF/Than.bdf");
m_bdTruc.setModel("BDF/Banh dai truc.bdf");
m_Thanmay.setModel("BDF/Than may.bdf");
m_Puli.setModel("BDF/Puli.bdf");
m_Ocpuli.setModel("BDF/Ocpuli.bdf");
m_Octangdai.setModel("BDF/Oc tang dai.bdf");
m_Tangdai.setModel("BDF/Tang dai.bdf");
m_bdMay.setModel("BDF/Banh dai may.bdf");
m_TBDMay.setModel("BDF/Truc_BDMay.bdf");
m_Daydai.setModel("BDF/Day dai.bdf");
m_bCangdai.setModel("BDF/Banh cang dai.bdf");
m_Vongbi.setModel("BDF/Vong bi.bdf");
m_than.setMaterial(storageMaterial[8]);
m_truc.setMaterial(storageMaterial[5]);
m_bdTruc.setMaterial(storageMaterial[4]);
m_Thanmay.setMaterial(storageMaterial[5]);
m_Puli.setMaterial(storageMaterial[3]);
m_Ocpuli.setMaterial(storageMaterial[7]);
m_Octangdai.setMaterial(storageMaterial[5]);
m_Tangdai.setMaterial(storageMaterial[3]);
m_bdMay.setMaterial(storageMaterial[5]);
m_TBDMay.s
Các file đính kèm theo tài liệu này:
- DA0445.DOC