Hình thành phẩm chất, đạo đức, tác phong cho học sinh

Một phần của tài liệu Tìm hiểu về ảnh 3d và ứng dụng trong khoa học giáo dục (Trang 50)

Việc sử dụng máy tính điện tử và phần mềm dạy học đã trực tiếp góp phần hình thành và phát triển kỹ năng sử dụng thành thạo máy tính điện tử và làm việc trong môi trường Công nghệ Thông tin - Truyền thông cho HS. Đây là những đặc tính không thể thiếu của con người lao động trong thời đại của công nghệ cao trên cơ sở sự phát triển của Công nghệ Thông tin - Truyền thông.

Sử dụng máy tính điện tử và phần mềm dạy học trong quá trình thu thập và xử lý thông tin đã giúp hình thành và phát triển cho học sinh cách giải quyết vấn đề hoàn toàn mới: đưa ra các quyết định trên cơ sở kết quả xử lý thông tin. Cách học này tránh được học vẹt, máy móc và góp phần hình thành cho học sinh một phương pháp nghiên cứu toán học mới.

42

Trong quá trình học tập môn toán với sự trợ giúp của máy tính điện tử và các phần mềm đồ họa dạy học, học sinh có điều kiện phát triển năng lực làm việc với cường độ cao một cách khoa học, đức tính cần cù, chịu khó, khả năng độc lập, sáng tạo, tự chủ và kỷ luật cao.

3.2. Xây dựng thƣ viên hình học trong đồ họa 3D

3.2.1. Xây dựng thƣ viện nhân vật

2.2.1.1. Xây dựng nhân vật từ các vật thể 3D

Như chúng ta đã biết để tạo được một phim hoạt hình thì ta phải xây dựng được các nhân vật. Nhân vật trong phim là đối tượng có thể diễn tiến hành động của mình theo thời gian, trong không gian hay theo kịch bản của đảo diễn. Một nhân vật bao gồm nhiều bộ phận được lắp ghép theo một cấu trúc cơ thể đặc trưng cho lớp nhân vật đó. Các bộ phận này được tạo từ các khối vật thể ba chiều và nó sẽ được xây dựng và được lưu vào một file text.

3.2.1.2. Quá trình hiển thị nhân vật

Quá trình này được thực hiện như sau: Đọc các thông tin về nhân vật. - Xác định vị trí của nhân vật trong hoạt cảnh.

- Tạo nhân vật.

- Thực hiện các thao tác: khử khuất, chiếu sáng, tô bóng, … - Hiển thị nhân vật.

Trong luận văn này, do thời gian có hạn nên chương trình chỉ cho phép hỗ trợ một phần trong các quá trình tạo nhân vật, khử khuất, tô bóng và hiển thị nhân vật.

43

3.2.2. Xây dựng thƣ viện nhân vật và thƣ viện động tác

Nhân vật (NV) sau khi được xây dựng sẽ được lưu vào thư viện NV. Thư viện (TV) NV trong đề tì này cũng sử dụng file text mô tả nhân vật. Người sử dụng có thể sử dụng các nhân vật đã tạo ra sẵn, hãy tạo ra các nhân vật cho riêng mình.

Trong thế giới thực các chuyển động của các lớp động vật rất phức tạp và khác nhau. Do đó, để mô phỏng một số chuyển động cơ bản lớp 2 chân và lớp 4 chân trong đề tài này chỉ xây dựng các động tác từ ba chuyển động có bản là: tịnh tiến, quay và co dãn.

Khi xây dựng động tác cho NV User sử dụng các phím nhằm để dịch chuyển hoặc co dãn để thay đổi vị trí cũng như kích thước của từng bộ phận riêng lẻ. Sau khi kết thúc công việc đối với một số bộ phận tham gia vào động tác thì các thay đổi trên sẽ được xem là xảy ra đồng thời.

Như chúng ta đã biết, để tạo ra được một đoạn phim hoạt hình (PHH) thì ta phải tạo ra được rất nhiều các hình ảnh, hình ảnh trước khác với hình ảnh sau ở một vài chi tiết. Như vậy, để dễ dàng trong việc tạo hình ảnh thì chúng ta phải tận dụng được các hình ảnh trước đó, sau đó chỉ thay đổi một vài chi tiết nhỏ tùy thuộc vào hoạt cảnh. Để dễ dàng trong việc tạo nhân vật ta chia nhân vật ra thành từng bộ phận riêng biệt một và ghép nối các bộ phận này lại với nhau. Mỗi bộ phận này tương ứng với một giá trị “bộ phận” ở trong comBP, mỗi khi một bộ phận được gọi ra thì giá trị bộ phân tăng lên 1. Khi một khối hình cơ bản được tạo ra thì nó sẽ nhận giá trị “bộ phận” = 1 và giá trị layer sẽ tương ứng với giá trị layer trong comKH. Từ những yêu cầu ở trên, chúng ta cần phải lưu trữ được các thông số cụ thể của từng khối hình trong các hình ảnh.

Nhằm giải quyết vấn đề trên chúng ta sử dụng việc ghi và mở file trên file text với các thông số cần lưu trữ là: gt, r1, r2, r3, dx, dy, dz, gx, gy, gz, color.

Trong đó:

44

- gx, gy, gz: góc quay quanh đối tượng theo các trục tương ứng. - color: tương ứng với giá trị màu của từng khối hình

- gt, r1, r2, r3: ta sẽ có các giá trị khác nhau tùy thuộc vào từng khối hình

3.2.2.1. Ghi file:

Từ những ý tưởng lưu trữ ở trên ta sẽ ghi các giá trị này vào file text. Trong mỗi hình ảnh ta sẽ lưu trữ các giá trị của từng khối hình một theo từng dòng của file text. Mỗi khi một khối hình mới được tạo ra thì ta sẽ lưu các giá trị này vào mảng bophan[1][j] (tương ứng với bphan=1 và layer=j). Mỗi khối hình trong hình ảnh sẽ là layer, khi ta ghi file thì ta sẽ ghi lần lượt các giá trị này trong bophan[bphan][layer] vào từng dòng của file text. Ta sẽ ghi lần lượt từng “bộ phận” một (một body có thể có nhiều layer). Ta sử dụng biến toàn cục Tobject để thực hiện việc ghi file text.

Giải thuật 3.1: Type Body = record gt:integer; r1:integer; r2:integer; r3:integer; dx,dy,dz:integer; gx,gy,gz:integer; color:Tcolor; end; KH = array[1…20] of body; BP = array[1…20] of KH;

ThuTu = array[1…20] of integer; Var

45

Procedure Tform1.SaveFile1Click(Sender: Tobject); Var i,k:integer; mytextfile:textfile; filename,s:string; begin saveDialog1.DefaultExt := „.txt‟; saveDialog1.Filter := „txt (*.txt)|*.txt‟;

saveDialog1.Options := [ofOverwritePrompt, ofFileMusExits]; saveDialog1.Title := „Ghi file‟;

//saveDialog1.FileEditStyle := „txt‟; If savedialog1.Excute then filename :=savedialog1.FileName else filename := ”; if filename <> ” then begin assignfile(mytextfile,filename); rewrite(mytextfile); for k := 1 to bphan do for i := 1 to TTKH[k] do begin s := inttostr(bophan[k][i].gt) + „‟ + inttostr(bophan[k][i].r1) + „‟ + inttostr(bophan[k][i].r1) + „‟ + inttostr(bophan[k][i].r3) + „‟ + inttostr(bophan[k][i].r4) + „‟ + inttostr(bophan[k][i].r5) + „‟ + inttostr(bophan[k][i].dx) + „‟ + inttostr(bophan[k][i].dy) + „‟ + inttostr(bophan[k][i].dz) + ” + inttostr(bophan[k][i].gx) + „‟ + inttostr(bophan[k][i].gy) + „‟ + inttostr(bophan[k][i].gz) + „‟ + inttostr(bophan[k][i].color) + „‟;

46

writeIn(mytextfile,s); end;

closefile(mytextfile);

showMessage(„Ghi file da thanh cong‟); end;

end;

3.2.2.2. Mở file

Tương tự như việc ghi file, ta cũng đọc file text theo từng dòng một, mỗi một dòng tương ứng với các thông số giá trị của khối hình. Dựa vào các thông số giá trị của từng dòng đó ta sẽ ghi lại vào mảng bophan[bphan][layer]. Ta dùng thủ tục docfile(var sbd:KH; var i:integer; str:string) để ghi các thông số giá trị của dòng thứ i vào mảng sbd[i]. Từ những thông số giá trị này ta sẽ dùng thủ tục OpenFile1Click(Sender: Tobject) để vẽ hình ảnh tương ứng với file cần mở, các giá trị trong file này sẽ được lưu vào trong mảng bophan[bphan][layer] từ đó ta có thể sử dụng hình ảnh này để tạo ra hình ảnh mới bằng cách thay đổi một vài khối hình hoặc cũng như việc thêm bớt các khối hình cơ bản khác vào.

Giải thuật 3.2:

Procedure TForm1.docfile(var sbd:KH; var i:integer; s:string);

Var i:integer; i:array[1…20] of integer; str:string; begin i := 1; for j := 1 to Length(s) do if s[j] = „‟ then begin mi[k] := j;

47

k := k + 1; end;

s1 := „‟;

sbd[i].gt := strToInt(s[1]);

for j := mi[1] + 1 to mi[2] – 1 do s1 := s1 + s[j];

sbd[i].r1 := strToInt(s1); s1 := „‟;

for j := mi[2] + 1 to mi[3] – 1 do s1 := s1 + s[j];

sbd[i].r2 := strToInt(s1); s1 := „‟;

for j := mi[3] + 1 to mi[4] – 1 do s1 := s1 + s[j];

sbd[i].r3 := strToInt(s1); s1 := „‟;

for j := mi[4] + 1 to mi[5] – 1 do s1 := s1 + s[j];

sbd[i].r4 := strToInt(s1); s1 := „‟;

for j := mi[5] + 1 to mi[6] – 1 do s1 := s1 + s[j];

sbd[i].r5 := strToInt(s1); s1 := „‟;

for j := mi[6] + 1 to mi[7] – 1 do s1 := s1 + s[j];

sbd[i].dx := strToInt(s1); s1 := „‟;

for j := mi[7] + 1 to mi[8] – 1 do s1 := s1 + s[j];

48

sbd[i].dy := strToInt(s1); s1 := „‟;

for j := mi[8] + 1 to mi[9] – 1 do s1 := s1 + s[j];

sbd[i].dz := strToInt(s1); s1 := „‟;

for j := mi[9] + 1 to mi[10] – 1 do s1 := s1 + s[j];

sbd[i].gx := strToInt(s1); s1 := „‟;

for j := mi[10] + 1 to mi[11] – 1 do s1 := s1 + s[j];

sbd[i].gy := strToInt(s1); s1 := „‟;

for j := mi[11] + 1 to mi[12] – 1 do s1 := s1 + s[j];

sbd[i].gz := strToInt(s1); s1 := „‟;

for j := mi[12] + 1 to mi[13] – 1 do s1 := s1 + s[j]; sbd[i].color := strToInt(s1); s1 := „‟; end; //--- Procedure TForm1.Openfile1Click(Sender:Tobject); var i, j :integer; s1, filename:string; mytextfile:textfile; begin // New

49 bphan := bphan + 1; comBP.Items.Add(IntToStr(Bphan)); comBP.Text := IntToStr(bphan); comTTBP.Items.Add(IntToStr(Bphan)); OpenDialog1.DefaultExt := „.txt‟; OpenDialog1.Filter := „txt (*.txt)|.txt‟;

OpenDialog1.Options := [ofOverwritePrompt, ofFileMustExist]; If OpenDialog1.Execute then filename := OpenDialog1.FileName Else filename := „‟; If filename <> „‟ then Begin Assignfile(mytextfile, filename); Reset(mytextfile, filename); i := 1; comKH.Items.Clear; comTTKH.Items.Clear;

while not eof(mytextfile) do begin

//Doc tung dong 1

readIn(mytextfile, s1); docfile(Bophan[bphan], i, s1); comKH.Items.Add(IntToStr(i)); Velai(Bphan, i); i := 1 + 1; end; TTKH[StrToInt(comBP.Text)] := i – 1; comKH.Items.Clear; for i := 1 to TTKH[StrToInt(comBP.Text)] do comKH.Items.Add(IntToStr(i)); comKH.Text := „1‟;

50

closefile(mytextfile); end;

end;

3.3. Lập trình đồ họa 3D với MATLAP trong dạy học toán

3.3.1. Tổng quan về MATLAB

3.3.1.1. Khái niệm về Matlab

Matlab là một ngôn ngữ lập trình thực hành bậc cao được sử dụng để giải các bài toán về kỹ thuật. Matlab tích hợp được việc tính toán, thể hiện kết quả, cho phép lập trình, giao diện làm việc rất dễ dàng cho người sử dụng. Dữ liệu cùng với thư viện được lập trình sẵn cho phép người sử dụng có thể có được những ứng dụng sau đây.

- Sử dụng các hàm có sẵn trong thư viện, các phép tính toán học thông thường. - Cho phép lập trình tạo ra những ứng dụng mới.

- Cho phép mô phỏng các mô hình thực tế. - Phân tích, khảo sát và hiển thị dữ liệu. - Với phần mềm đồ họa cực mạnh.

- Cho phép phát triển giao tiếp với một số phần mềm khác như C++, Fortran.

3.3.1.2. Tổng quan về cấu trúc dữ liệu của Matlab, các ứng dụng

Matlab là một hệ thống tương giao, các phần tử dữ liệu là một mảng (mảng này không đòi hỏi về kích thước). Chúng cho phép giải quyết các vấn đề liên quan đến lập trình bằng máy tính, đặc biệt sử dụng các phép tính về ma trận hay vector và có thể sử dụng ngôn ngữ C hoặc Fortran lập trình rồi thực hiện ứng dụng lập trình đó bằng các câu lệnh gọi từ Matlab. Matlab được viết tắt từ chữ MATRIX LABORATORY tức là thư viện về ma trận, từ đó phần mềm Matlab được viết nhằm cung cấp cho việc truy

51

cập vào phần mềm ma trận một cách dễ dàng, phần mềm ma trận này được phát triển bởi các công trình Linpack và Eispack. Ngày nay Matlab được phát triển bởi Lapack và Artpack tạo nên một nghệ thuật phần mềm cho ma trận.

a. Dữ liệu

Dữ liệu của Matlab thể hiện dưới dạng ma trận, và có các kiểu dữ liệu được liệt kê sau đây

- Kiểu đơn single, kiểu này có lợi về bộ nhớ dữ liệu vì nó đòi hỏi ít byte nhớ hơn,

kiểu dữ liệu này không được sử dụng trong các phép tính toán học, độ chính xác kém hơn. - Kiểu double kiểu này là kiểu thông dụng nhất của các biến trong Matlab.

- Kiểu Sparse.

- Kiểu int8, uint8, int16,… - Kiểu char ví dụ „Hello‟ - Kiểu cell.

- Kiểu Structure.

Trong Matlab kiểu dữ liệu double là kiểu mặc định sử dụng trong các phép tính số học.

b. Ứng dụng

Matlab tạo điều kiện thuận lợi cho: - Các khóa học về toán học.

- Các kỹ sư, các nhà nghiên cứu khoa học.

- Dùng Matlab để tính toán, nghiên cứu tạo ra các sản phẩm tốt nhất trong sản xuất.

c. Toolbox là một công cụ quan trọng trong Matlab

Công cụ này được Matlab cung cấp cho phép bạn ứng dụng kỹ thuật để phân tích, thiết kế, mô phỏng các mô hình.

52 - Mạng nơron

- Logic mờ - Simulink

3.3.1.3. Hệ thống Matlab

Hệ thống giao diện của matlab được chia thành 5 phần

 Môi trường phát triển

Đây là nơi đặt các thanh công cụ, các phương tiện giúp chúng ta sử dụng các lệnh và các file, ta có thể liệt kê một số như sau.

+ Desktop

+ Command Window + Command History

+ Browsers for viewinghelp

 Thư viện, các hàm toán học

Bao gồm các cấu trúc như tính tổng, sin. Cosin, atan2…, các phép tính đơn giản đến các phép tính phức tạp như tính ma trận nghịch đảo, trị riêng, chuyển đổi furier, laplace, symbolic library.

 Ngôn ngữ Matlab

Đó là các ngôn ngữ cao về ma trận và mảng, với các dòng lệnh, các hàm, cấu trúc dữ liệu vào, có thể lập trình hướng đối tượng.

 Đồ họa trong Matlab

Bao gồm các câu lệnh thể hiện đồ họa trong môi trường 2D và 3D, tạo các hình ảnh chuyển động, cung cấp các giao diện tương tác giữa người sử dụng và máy tính.

 Giao tiếp với các ngôn ngữ khác.

53

3.3.2. Đồ họa 3D với Matlab

3.3.2.1. Điểm và đường

a. Hàm Plot - Vẽ các điểm và đường trong mặt phẳng (2D)

Phần lớn các câu lệnh để vẽ đồ thị trong mặt phẳng đều là lệnh plot. Lệnh plot vẽ đồ thị của một mảng dữ liệu trong một hệ trục thích hợp và nối các điểm bằng đường thẳng.

Ví dụ 3.1.

>> x=linspace(0,2*pi,30); >> y=sin(x);

>> plot(x,y)

Lệnh plot mở ra cửa sổ đồ họa gọi là cửa sổ figure:

Trong cửa sổ này nó sẽ tạo ra độ chia phù hợp với dữ liệu, vẽ đồ thị qua các điểm, và đồ thị được tạo thành bởi việc nối các điểm này bằng đường nét liền.

Có thể vẽ nhiều hơn một đồ thị trên cùng một hình vẽ bằng cách đưa thêm vào plot một cặp đối số, plot tự động và vẽ đồ thị thứ hai bằng màu khác trên màn hình.

54

Nhiều đường cong có thể cùng vẽ một lúc nếu như cung cấp đủ cặp đối số cho lệnh plot.

Ví dụ 3.2. Ta có thể sử dụng cùng hệ trục của ví dụ trên để vẽ thêm đồ thị cosx

>> z=cos(x);

Nếu như ta thay đổi trật tự các đối số thì đồ thị sẽ xoay một góc bằng 900.

>> plot(y,x,z,x)

Hình 3.2: Vẽ thêm đồ thị cosx

55

b. Kiểu đường, đánh dấu và màu sắc

Matlab mặc định đường vẽ là đường viền, không đánh dấu, màu xanh da trời. Ta có thể thay đổi kiểu đường vẽ và đánh dấu lên đồ thị bằng cách đưa vào một đối số thứ ba. Các đối số tùy chọn này là một xâu ký tự, có thể chứa một hoặc nhiều hơn theo bảng dưới đây.

Nếu một màu, dấu và kiểu đường tất cả đều chứa trong một xâu, thì kiểu màu chung cho cả dấu và kiểu nét vẽ. Để khai báo màu khác cho dấu, ta phải vẽ cùng một dữ liệu với các kiểu khai báo chuỗi khác nhau.

Biểu tƣợng Màu Biểu tƣợng Đánh dấu Biểu tƣợng Kiểu nét vẽ

b Xanh da trời . chấm - nét liền

g Xanh lá cây o vòng tròn : nét chấm

r đỏ x dấu x -. nét gạch - chấm

c Xanh da trời nhạt + dấu + -- nét đứt

m đỏ tím * dấu hoa thị

y Vàng s hình vuông

k Đen d hình thoi

w trắng ˄ tam giác hướng xuống

˅ tam giác hướng lên

< tam giác hướng phải

> tam giác hướng trái

p sao năm cánh

56

Ví dụ 3.3. >> plot(x,y,‟m*‟,x,y,‟b--„)

Độ rộng của đường vẽ (lines) được xác định kèm với mô tả Linewidth trong lệnh plot. Độ rộng đường vẽ được mặc định là 0.5 point ≈ 1/72 inch.

Chiều cao của dấu (marker) được xác định kèm với mô tả Markersize trong lệnh

Một phần của tài liệu Tìm hiểu về ảnh 3d và ứng dụng trong khoa học giáo dục (Trang 50)

Tải bản đầy đủ (PDF)

(98 trang)