Mô phỏng các quá trình vật lý trên máy vi tính bằng XNA
Abstract: Teaching with the support of the computer is being more interested in teacher
research. One of the capabilities of computers for teaching physics is a simulation of physical
phenomena. Thanks to this capability that computers help students realize the physics
knowledge more easily, thereby improving teaching effectiveness. This article introduces
methods of simulating the physical processes on the computer with XNA, a tool developed for
free game led to Microsoft corp
8 trang |
Chia sẻ: yendt2356 | Lượt xem: 521 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Mô phỏng các quá trình vật lý trên máy vi tính bằng XNA, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Tạp chí Khoa học và Giáo dục, Trường Đại học Sư phạm Huế
ISSN 1859-1612, Số 01(13)/2010: tr. 101-108
MÔ PHỎNG CÁC QUÁ TRÌNH VẬT LÝ TRÊN MÁY VI TÍNH BẰNG XNA
NGUYỄN THANH VŨ
Sở Giáo dục và Đào tạo Tây Ninh
Tóm tắt: Dạy học với sự hỗ trợ của máy vi tính là vấn đề đang được nhiều
giáo viên quan tâm nghiên cứu. Một trong những ứng dụng của máy vi tính
trong dạy học vật lý là mô phỏng các hiện tượng vật lý. Thông qua các mô
phỏng đó, học sinh lĩnh hội được kiến thức vật lý dễ dàng và nhanh chóng
hơn. Có rất nhiều phương pháp và công cụ tạo ra các mô phỏng. Bài báo này
giới thiệu phương pháp mô phỏng các quá trình vật lý trên máy vi tính bằng
XNA, một công cụ phát triển game miễn phí của hãng Microsoft.
1. ĐẶT VẤN ĐỀ
Theo Lê Công Triêm, một trong những ứng dụng quan trọng của máy vi tính trong dạy
học vật lý là mô phỏng các quá trình vật lý. Mô phỏng các quá trình vật lý thường được
tiến hành song song với việc xây dựng mô hình. Có thể nói mô phỏng là quá trình thực
hiện các mô hình đã được xây dựng. [1]
Để thực hiện được việc mô phỏng các quá trình, hiện tượng vật lý, người ta thường sử
dụng các phần mềm mô phỏng như Crocodile Physics, Working Model... Thường thì
các phần mềm này tạo ra một môi trường mà người sử dụng có thể tạo ra một hệ thống
vật chất có cấu tạo từ đơn giản đến phức tạp và sau đó cho hệ thống hoạt động. Các hệ
thống vật chất này thuộc về nhiều lĩnh vực khác nhau như cơ học, điện học, từ học hay
quang học. Hiện nay, có rất nhiều phần mềm hỗ trợ cho việc tạo ra các hệ thống nói
trên. Mặc dù vậy, các phần mềm này không thể tạo ra mọi sự mô phỏng mà giáo viên
mong muốn. Ví dụ, khi nghiên cứu chuyển động của vật bị ném xiên, một số giáo viên
thích mô phỏng chuyển động của trái bóng rổ, trong khi một số giáo viên khác lại thích
mô phỏng chuyển động của một quả đạn đại bác. Cùng một hiện tượng, một quá trình,
nhưng thời điểm sử dụng khác nhau, mục tiêu khác nhau cũng đưa đến những yêu cầu
về sự mô phỏng khác nhau. Ví dụ như cùng khảo sát chuyển động ném xiên của quả đại
bác, nếu sử dụng sự mô phỏng để hỗ trợ xây dựng phương pháp tọa độ thì cần phải thể
hiện hệ trục tọa độ và hình chiếu của quả đạn trên các trục, nhưng nếu sử dụng với mục
đích củng cố kiến thức cuối bài học, thì chỉ cần có cơ chế thay đổi tốc độ và góc ném,
đồng thời có một yêu cầu bắn trúng một mục tiêu nào đó, để học sinh tinh toán vận tốc
đầu và góc nghiêng tương ứng với tầm ném xa cho trước. Rõ ràng là các nhà thiết kế
của các hãng phần mềm khó mà đáp ứng hết được những yêu cầu đa dạng như vậy. Do
đó, có thể nói, việc tự mô phỏng các quá trình, hiện tượng vật lý trên máy vi tinh phù
hợp với yêu cầu dạy học là một nhu cầu khi dạy học với sự trợ giúp của máy tính. Vấn
đề đặt ra ở đây là: làm thế nào để mô phỏng trên máy vi tính các quá trình vật lý hoặc
các hiện tượng vật lý phù hợp với yêu cầu dạy học cụ thể?
NGUYỄN THANH VŨ
102
2. PHƯƠNG PHÁP MÔ PHỎNG TRÊN MÁY VI TÍNH CÁC HIỆN TƯỢNG, QUÁ
TRÌNH VẬT LÝ HỖ TRỢ DẠY HỌC
Phương pháp tạo ra một ứng dụng mô phỏng trên máy vi tính cũng tương tự như
phương pháp tạo ra một ứng dụng tin học, nhìn chung gồm các bước sau: phân tích,
thiết kế, viết mã, chạy thử và đóng gói.
Phân tích
Công việc đầu tiên là giáo viên phải xác định được nội dung của mô phỏng. Có nghĩa là
giáo viên phải xác định máy vi tính mô phỏng quá trình hay hiện tượng vật lý gì. Máy vi
tính chỉ mô phỏng các hiện tượng hay quá trình trên thông qua một trong các mô hình
của chúng, để sự mô phỏng có hiệu quả trong dạy học, giáo viên cần phải xác định sử
dụng mô hình nào trong sự mô phỏng này. Xác định được mô hình cần sử dụng khi mô
phỏng, có nghĩa là giáo viên xác định được một hệ thống các đối tượng trên máy vi tính
và các quy luật vận động của chúng khi ứng dụng mô phỏng được thực thi.
Kết quả của quá trình phân tích là giáo viên phải chỉ ra được:
- Hệ thống các đối tượng vật chất ảo (trên máy vi tính) và quy luật hoạt động của
chúng nhằm mô phỏng tốt các quá trình hay hiện tượng vật lý xác định.
- Hệ thống các tác động từ người sử dụng lên các đối tượng nói trên và cách mà
chúng đáp trả từng tác động.
- Hệ thống các cách đưa các tác động nói trên vào máy vi tính.
Thiết kế
Thiết kế là quá trình lên kế hoạch lập trình nhằm tối ưu hóa quá trình viết mã và đảm
bảo yêu cầu về mục tiêu của ứng dụng. Thiết kế được thực hiện dựa trên kết quả của
quá trình phân tích. Thiết kế cần tuân theo trình tự sau:
- Thiết kế giao diện sử dụng: quyết định xây dựng bao nhiêu màn hình. Ví dụ: màn
hình khởi động, màn hình giúp đỡ, màn hình tùy chọn, màn hình vận hành, hệ
thống menu Tuy nhiên, đối với các mô hình đơn giản, không quá nhiều tương
tác, ta có thể chỉ thiết kế duy nhất một màn hình vận hành và có thể không cần
thiết kế menu.
- Thiết kế sự tương tác với ứng dụng: khi ứng dụng thực thi, ta tương tác với nó như
thế nào? Dùng chuột hoặc bàn phím? Nếu dùng bàn phím thì phải xác định rõ
chức năng của từng phím. Khi mô hình được thiết kế trên một màn hình duy nhất,
ta phải chú ý hiển thị rõ chức năng của từng phím điều khiển lên màn hình để
người sử dụng dễ thao tác.
- Thiết kế các lớp đối tượng: dựa vào hệ thống các đối tượng vật chất ảo mà ta xác
định được trong quá trình phân tích, ta xác định được các lớp đối tượng cần thiết
kế. Dựa vào quy luật chuyển động của chúng và sự tương tác của người sử dụng
lên mô hình và các hiệu ứng cần đưa vào, ta thiết kế được các thuộc tính và
MÔ PHỎNG CÁC QUÁ TRÌNH VẬT LÝ TRÊN MÁY VI TÍNH BẰNG XNA
103
phương thức hoạt động của từng lớp đối tượng tương ứng. Các thuộc tính và
phương thức hoạt động của một đối tượng thường được chia thành các phần sau:
các thuộc tính của đối tượng, các phương thức khởi tạo, các hàm hành động và
các hàm tính toán. Một lớp đối tượng được thiết kế tốt có nghĩa là ta phải mô tả
đầy đủ và chi tiết các thành phần trên của nó.
Mối quan hệ về mặt kế thừa của các lớp đối tượng cũng cần được chỉ ra. Đây là một
thói quen lập trình tốt. Việc các định các mối quan hệ về mặt kế thừa giữa các lớp sẽ
giúp chúng ta tiết kiệm một phần lớn công sức khi viết mã cho mô hình.
Viết mã
Viết mã là bước tiếp theo của thiết kế. Có thể xem bước thiết kế là lên kế hoạch còn viết
mã là bước thực thi kế hoạch. Sau khi thiết kế, tùy vào khả năng của người lập trình mà
có thể lựa chọn ngôn ngữ thích hợp để viết mã.
Chạy thử
Thông thường, khi thi công xong một hàm hoặc một thủ tục, ta phải tiến hành chạy thử
nhiều lần. Kết quả chạy thử ổn định mới tiếp tục thi công hàm hoặc thủ tục tiếp theo.
Khi dự án hoàn thành, phải tiến hành chạy thử toàn bộ dự án vài lần rồi mới tiến hành
đóng gói.
Đóng gói
Đóng gói là khâu sau cùng khi thiết kế một dự án. Quá trình này tạo ra bộ file setup để
triển khai ứng dụng lên máy tính khác.
3. MICROSOFT XNA VỚI VIỆC MÔ PHỎNG CÁC HIỆN TƯỢNG, QUÁ TRÌNH
VẬT LÝ TRÊN MÁY VI TÍNH
XNA Game Studio Express beta 1 được phát hành vào 30/8/2006, cho đến nay đã là
phiên bản 3.0. XNA là viết tắt của “It’s Not an Acronym”. Thực chất XNA là một công
cụ phát triển game dựa trên nền .Net Framework Compact 2.0 cho Xbox 360 và .Net
Framework 2.0 cho Windows. Nó bao gồm tập hợp các lớp, thư viện đặc biệt dùng để
phát triển game theo hướng phát huy tối đa mã tái sử dụng (reuse code). Ngôn ngữ lập
trình C# là ngôn ngữ chính thức được XNA hỗ trợ. Đứng về mặt lập trình, XNA là một
thư viện vỏ bọc để người dùng không gọi trực tiếp các thư viện của Directx. Điều này
khiến cho đồ họa và âm thanh trong XNA tương đương với các game viết trên Directx
nhưng lại tốn ít công sức hơn rất nhiều khi lập trình. Như vậy, các ứng dụng mô phỏng
trong dạy học được thiết kế trên XNA có thể tận dụng tối đa sức mạnh của card đồ họa
và card âm thanh, tạo ra các hiệu ứng thật ấn tượng góp phần tăng cường hứng thú học
tập của học sinh.[2]
Khác với ứng dụng windows chỉ vẽ lại cửa sổ khi có sự cố on paint hoặc on resize,
XNA liên tục cập nhật cửa sổ Game 60 lần một giây (default của macromedia flash là
12 lần một giây). Chính vì thế mà các đối tượng chuyển động trong các ưng dụng viết
bằng XNA uyển chuyển hơn, thật hơn với flash. Đứng về mặt lập trình, bằng cách sử
NGUYỄN THANH VŨ
104
dụng một biến thời điểm, cứ mỗi lần vẽ lại cửa sổ, ta cho biến số này tăng thêm một
lượng ∆t xác định. Chuyển động của vật trên màn hình có thể được thiết kế nhanh hay
chậm tùy thuộc vào lượng ∆t này. Như vậy, có thể dễ dàng biểu diễn chuyển động của
vật khi biết quy luật phụ thuộc vào thời gian của tọa độ, tức là phương trình chuyển
động của nó.
Các thư viện của XNA cung cấp khá đầy đủ các kiểu dữ liệu, hàm và thủ tục để vẽ một
đối tượng lên màn hình. Các kiểu dữ liệu Vector2D, Vector3D rất tiện lợi khi xác định
vị trí một vật trong không gian 2 chiều hay 3 chiều. Thủ tục Draw của đối tượng
SpriteBatch có thể vẽ một đối tượng ra màn hình với nhiều tùy biến khác nhau: có thể
xoay đối tượng quanh một tâm nào đó với một góc xoay cho trước, thu nhỏ hoặc phóng
to đối tượng theo một tỉ lệ cho trước. Lớp Math và MathHelper cung cấp các thủ tục
tính toán trên trường vector, các hàm lượng giác giúp người lập trình tính toán tọa độ và
góc xoay của đối tượng, nhằm hiển thị nó lên cửa sổ một cách hợp lý và đơn giản hơn.
XNA có thể hỗ trợ tốt lập trình đồ họa trong không gian 2 chiều (2D) hoặc 3 chiều (3D),
tuy nhiên trong phạm vi bài báo này, tác giả chỉ đề cập tới các mô hình dạy học thiết kế
trong không gian 2 chiều.
Nhược điểm lớn nhất của XNA nằm trong sự tiện lợi của nó. Do XNA là một lớp bọc để
người sử dụng Directx trong C#, nên sản phẩm của nó bắt buộc phải chạy trên nền .Net
Framework, Directx và phải có thêm thư viện đồ họa của XNA. Điều này gây ra sự
phiền toái khi triển khai ứng dụng của XNA. Tuy nhiên, trình đóng gói ứng dụng
Build\Publish sẽ tự động hóa mọi thứ. Khi cài đặt, trình đóng gói sẽ tải về và cài đặt
mọi thứ cần thiết: Directx, .Net Framework và thư viện XNA với điều kiện máy tính
phải kết nối internet.
Nhược điểm thứ hai là XNA đòi hói khá mạnh về cấu hình phần cứng. Để chạy được
ứng dụng XNA, card màn hình máy tính phải hỗ trợ Shader Pixel 1.1 trở lên. Thường
chỉ có các card màn hình có bộ nhớ trên 128 MB mới hỗ trợ Shader Pixel. Trong thực tế
các máy vi tính để bàn từ sản xuất một số năm gần đây đều đạt chuẩn này. Máy tính
xách tay sản xuất trong năm 2009 cũng đa số hỗ trợ Shader Pixel. Hay nói một cách
khác, có thể có một số máy tính hiện nay không chạy nổi ứng dụng của XNA.
Công cụ phát triển XNA dành cho máy vi tính hoàn toàn miễn phí và có thể tải về từ
internet. Tuy nhiên nếu muốn phát triển ứng dụng XNA trên Xbox 360 thì phải tham gia
câu lạc bộ XNA Framework với lệ phí 99 USD một năm.
Hiện nay trên trang web của Microsoft đang phát hành song song hai bản XNA 2.0 dành
cho Visual C# 2005 Express Edition SP1 hay Visual Studio 2005 và bản XNA 3.0 dành
cho Visual C# 2008 Express Edition SP1 hay Visual Studio 2008. Sau đây là các bước
tải về và cài đặt XNA 3.0 dành cho C# 2008.[3]
Bước 1: Tải về C# 2008 từ địa chỉ chọn
nút download trong trong Visual C# 2008. Trình setup sẽ tự động cài đặt mọi thứ trong
vòng từ 30 đến 60 phút. Sau khi cài đặt, vào Help\Register Product để đăng ký với
MÔ PHỎNG CÁC QUÁ TRÌNH VẬT LÝ TRÊN MÁY VI TÍNH BẰNG XNA
105
Microsoft. Việc đăng ký này đòi hỏi phải có một tài khoảng trong trang Web của
Microsoft. Tuy nhiên, việc đăng ký tài khoản này hoàn toàn miễn phí.
Bước 2: Vào địa chỉ chọn menu Download
categories\Games, tiếp tục chọn Microsoft XNA Game 3.0 Studio để tải về và cài đặt
XNA. Dung lượng tải về khoảng vài chục MB và thời gian cài đặt khoảng từ 30 phút
đến 45 phút.
4. MÔ PHỎNG CHUYỂN ĐỘNG CỦA VẬT NÉM XIÊN BẰNG XNA
Phân tích
Ứng dụng mô phỏng được sử dụng khi dạy bài “Chuyển động của vât bị ném”, bài thứ
sáu của chương II “Động lực học chất điểm”, Vật lý 10 nâng cao. Trước khi dạy phần
phương pháp tọa độ.
Khi mở bài, giáo viên cần cho học sinh thấy được sự phụ thuộc của tầm bay cao H và
tầm bay xa phụ thuộc vào vận tốc đầu v0 và góc ném α. Giáo viên cần có một khẩu pháo
có thể thay đổi được góc bắn và vận tốc đầu của quả đạn. Khi bắn, viên đạn phải chuyển
động tuân theo quy luật chuyển động của vật ném xiên, chạm đất và nổ. Để học sinh dễ
hình dung về quỹ đạo của vật ném xiên, khi chuyển động viên đạn vẽ lại quỹ đạo của
nó. Sau khi đạn nổ, màn hình phải hiện lên tầm bay cao H và tầm ném xa L của quả đạn.
Như vậy, đối tượng vật chất ảo của ứng dụng gồm có khẩu súng và quả đạn. Khẩu súng
đứng yên, góc hợp bởi nòng súng và phương ngang thay đổi được. Viên đạn chuyển
động theo quy luật của vật ném xiên với vận tốc đầu và góc ném có thể thay đổi được.
Tác động đưa từ bên gồm có: thay đổi góc bắn của súng, thay đổi vận tốc đầu của đạn,
bắn, khởi tạo lại số liệu và thoát . Người tác động là giáo viên.
Thiết kế
- Thiết kế giao diện sử dụng: dự án chỉ gồm một mô hình duy nhất, nên có thể chỉ
cần một màn hình vận hành (action scene)
- Thiết kế sự tương tác với mô hình:Để đơn giản, mô hình này có thể dùng bàn
phím để tương tác.
+ Nút ↑ , ← để tăng góc bắn và ↓ , → để giảm góc bắn của khẩu đại bác
+ Nút PageUp, Home để tăng tốc độ đầu và Page Down, End để giảm tốc độ đầu
+ Nút Space bar để bắn
+ Nút R khởi tạo lại từ đầu
+ Nút ESC thoát khỏi ứng dụng
NGUYỄN THANH VŨ
106
Hình 1. Giao diện mô hình chuyển động của vật bị ném thiết kế bằng XNA
- Thiết kế các lớp đối tượng:
1. Lớp Ground:
Chức năng: vẽ nền cho ứng dụng.
Phương thức khởi tạo chủ yếu là nạp hình nền đã được vẽ sẵn ở ngoài bằng Paint
Brush.
2. Lớp Gun:
Có nhiệm vụ vẽ lại khẩu đại bác.
Phương thức khởi tạo: nạp hình của khẩu đại bác.
Hàm hành sự: theo dõi sự thay đổi của góc bắn a, rồi chỉnh lại độ nghiêng của
nòng súng cho thích hợp.
3. Lớp Rocket
Chức năng: vẽ lại quả đạn khi chuyển động.
Phương thức khởi tạo: nạp hình quả đạn, lấy tọa độ của súng làm tọa độ đầu.
Các thuộc tính quan trọng:
+ IsFlying: cho biết quả đạn có đang bay hay không
+ L: tầm ném xa
+ H: độ cao cực đại
+ InitialPosition: tọa độ đầu
+ Time: thời điểm (biến t).
MÔ PHỎNG CÁC QUÁ TRÌNH VẬT LÝ TRÊN MÁY VI TÍNH BẰNG XNA
107
Hàm hành sự: cập nhận tọa độ và góc nghiên của đạn tại mọi thời điểm và sau đó
vẽ lại cho thích hợp.
Sử dụng phương trình chuyển động:
( )
( )
0 0
2
0 0
1
2
x x v cos t
y y v sin t gt
α
α
⎧ = +
⎪
⎨
= + +⎪⎩
để xác định tọa độ của đạn và sử dụng phương trình vận tốc:
( )
0
0
x
y
v v cos
v v sin t gt
α
α
=⎧
⎨ = −⎩
để xác định góc nghiên của đạn trên quỹ đạo. Khi lập trình cần chú ý tọa độ đồ
họa màn hình khác hệ trục tọa độ Oxy thường dụng.
Hàm tính toán: xác định tọa độ của đạn có vượt ra ngoài cửa sổ không ? Quả đạn
đã rơi đến đất chưa ?
4. Lớp Explosion
Chức năng: tạo ra hiệu ứng nổ.
Phương thức khởi tạo: nạp hình ảnh để tạo hiệu ứng nổ.
Hàm hành sự: kiểm tra xem quả đạn có rơi xuống nền chưa, nếu rơi xuống thì tạo
hiệu ứng nổ.
5. Lớp MySound
Chức năng: tạo hiệu ứng âm thanh.
Phương thức khởi tạo: nạp tập tin âm thanh.
Hàm hành sự: kiểm tra bàn phím, nếu người sử dụng bấm space bar đển bắng thì
tạo hiệu ứng đạn bay. Nếu quả đạn rơi tiếp đất thì tạo hiệu ứng âm thanh đạn nổ.
6. Lớp Result
Chức năng: ghi lại kết quả L và H ở các lần bắn khác nhau, ngoài ra lớp này còn
chịu trách nhiệm vẽ lại quỹ đạo của đạn ở mỗi lần bắn
7. Lớp ScreenSize
Chức năng: chứa các biến toàn cục của chương trình. Các biến này được khai ở
dạng static.
8. Lớp Game1
Chức năng: tạo đối tượng của các lớp trên, phối hợp hoạt động của chúng và tạo
sự tương tác từ ngoài vào thông qua bàn phím.
NGUYỄN THANH VŨ
108
TÀI LIỆU THAM KHẢO
[1] Lê Công Triêm (1998). Ứng dụng máy tính điện tử trong dạy học vật lý ở trường phổ
thông. Tạp chí Giáo dục.
[2] Alexandre Lobão - Bruno Evangelista - José Antonio Leal de Farias (2008).
Beginning XNA 2.0 Game Programming From Novice to Professional. Publisher
Press.
[3] Riemer Grootjan (2008), XNA usingC #, from:
Title: SIMULATING THE PHYSICAL PROCESSES ON THE COMPUTER WITH XNA
Abstract: Teaching with the support of the computer is being more interested in teacher
research. One of the capabilities of computers for teaching physics is a simulation of physical
phenomena. Thanks to this capability that computers help students realize the physics
knowledge more easily, thereby improving teaching effectiveness. This article introduces
methods of simulating the physical processes on the computer with XNA, a tool developed for
free game led to Microsoft corp.
ThS. NGUYỄN THANH VŨ
Sở Giáo dục và Đào tạo Tây Ninh.
Các file đính kèm theo tài liệu này:
- 19_298_nguyenthanhvu_17_nguyen_thanh_vu_8343_2021145.pdf