Họa trong không gian 3D

Một phần của tài liệu bài giảng MATLAB simulink (Trang 43 - 52)

Matlab cung cấp một số hàm để hiển thị dữ liệu 3 chiều như các hàm vẽ đường thẳng trong không gian 3 chiều, các hàm vẽ bề mặt và khung dây có thể được sử dụng thay thế cho chiều thứ tự

Lệnh plot từ trong không gian 2 chiều có thể mở rộng cho không gian 3 chiều bằng lệnh plot3. Cấu trúc của lệnh plot3 như sau:

plot3(x1, y1, z1, s1, x2, y2, z2, s2 …)

ezplot3(x,y,z,[tmin, tmax]) vẽ đồ thị f(x,y,z)=0 với x=x(t), y=y(t), z=z(t)

Trong đó: xn, yn, zn - là véc tơ hoặc ma trận.

Sn : xây ký tự tùy chọn dùng cho việc khai báo màu, tạo biểu tượng hoặc kiểu đường. Ta xem xét một số lệnh sau:

>> t=linspace(0,10*pi); >> plot3(sin(t), cos(t), t); >> grid on >> xlabel ('sin(t)') >> ylabel ('cos(t)') >> zlabel('t') >> title('do thi 3D')

Kết quả ta thu được đồ thị sau:

* Đồ thị bề mặt và lưới

Matlab định nghĩa bề mặt lưới bằng các điểm hướng trục z ở trên đường kể ô hình vuông trên mặt phẳng x-y. Nó tạo lên mẫu một đồ thị bằng cách ghép các điểm gần kề với các đ ường thẳng. Kết quả là nó trông như một mạng lưới đánh cá với các mắt lưới là các điểm dữ liệu. Đồ thị lưới này thường được sử dụng để quan sát những ma trận lớn hoặc vẽ những hàm có hai biến.

Bước đầu tiên là đa số đồ thị lưới của hàm hai biến z = f (x, y ), tương ứng với ma trận [X, Y] chứa các hàng và các cột lặp đi lặp lại. MATLAB cung cấp hàm meshgrid cho mục đích này. [X, Y] = meshgrid(x, y), tạo một ma trận X, mà các hàng của nó l bản sao của vector x, và ma trận Y có các cột của nó là bản sao của vector y. Cặp ma trận này sau đó được sử dụng để ước lượng hàm hai biến sử dùng đặc tính toán học về mảng của Matlab.

Sau đây là ví dụ về cách dùng hàm meshgrid để vẽ hàm z = sin(x2 + y2)/ (x2 + y2). >> x= -7.5 : 0.5 : 7.5;

>> y = x;

>> [a, b] = meshgrid(x,y);

a, b là một cặp của ma trận tương ứng một lưới chữ nhật trong mặt phẳng x-y. Mọi hàm z=f(x,y) đều có thể sử dụng tính chất này.

>> r = sqrt(a.^2 + b.^2)+ eps; % số vô cùng bé eps được thêm vào để tránh trường hợp 0/0

>> z = sin(r)./r;

Hình 1.25. Đồ thị dạng lưới hàm z = sin(x2 + y2)/ (x2 + y2)

Trong ví dụ này, hàm mesh sắp xếp lại các phần tử của ma trận vào các điểm (a,b,z) trong không gian 3 chiều. hàm mesh cũng có thể vẽ một ma trận tưng tự nhưng với một đối số; mesh(z), sử dụng các điểm (i, j, z).

Đồ thị bề mặt của một hàm cũng được vẽ tương tự như hàm mesh, ngoại trừ khoảng cách giữa hai đường là khác nhau (gọi là patchs). Đồ thị này dùng hàm surf, nó có tất cả các đối số như hàm mesh. Ta xem ví dụ dưới đây:

Hình 1.26. Đồ thị mặt của hàm z = sin(x2 + y2)/ (x2 + y2)

Để làm rõ hơn một vài chủ đề, chúng ta dùng hàm peaks. Đồ thị trong không gian 3 chiều của hàm này được đưa ra như sau:

>> mesh(peaks)

Hình 1.27. Đồ thị hàm peaks trong không giam 3 chiều

Đồ thị đường viền cho ta thấy được độ nâng cao của hình. Trong Matlab đồ thị đường viền trong không gian 2 chiều tương tự như trong không gian ba chiều nhưng hàm gọi của nó là contour3. Đồ thị sử dụng các lệnh sẽ được minh họa trong bảng màu sắc. * Thao tác với đồ thị 3D

Hình 1.28. Thay đổi góc nhìn với đồ thị 3D

Việc thay đổi góc quan sát đồ thị có thể được thực hiện bằng cách sử dụng công cụ rotate ở trên đồ thị.

+ Lệnh hidden

Là lệnh giấu đi các nét khuất. Khi vẽ độ thị thị một số phần của nó bị che khuất bởi các phần khá, khi đó nếu dùng lệnh này thì các nét khuất bị dấu đi, chỉ có thể nhìn phần nào trong tầm quan sát. Nếu chuyển đến hidden off thì có thể nhìn thấy cả phần khuất qua mạng lưới. Dưới đây là ví dụ:

Hình 1.29. Đồ thị khi sử dụng lệnh hidden off + Lệnh pcolor

Pcolor(c): là một hàm vẽ ma trận c. Giá trị của các thành phần trong c được mô tả bằng mầu sắc của các ô. Ở chế đọ mặc định, bề mặt của các ô có một giá trị màu là hằng số, hàng và cột cuối cùng của ma trận c không được sử dụng. Các mầu này được thiết lập từ độ cao của các phần tử trong ma trận c. Giá trị nhỏ nhất và giá trị lớn nhất trong c được gán vào màu đầu tiên và màu cuối cùng trong bảng màu.

Hình 1.30. Lệnh pcolor thể hiện độ cao bằng màu sắc

+ Lệnh meshc : tư tự như lệnh mesh nhưng khi vẽ đồ thị có thêm đường viền bên dưới. + Lệnh waterfall: vẽ đồ thị lưới như mesh nhưng đường dóng chỉ xuất hiện ở hướng x + surftl: vễ bề mặt nhưng có thêm nguồn sáng ở phía trước

+ Bảng màu

Bảng màu mặc định được dùng có tên là jet. Tuy nhiên ta có thể thay đổi bảng màu này bằng bảng màu khác như: colormap(gray); pcolor(a,b,z);

Colormap : đặt và thay đổi bảng màu hiện tại

Cấu trúc:

Colormap (map) Colormap (‘defautl’) Cmap = colormap

Matlab định nghĩa bảng mày như một ma trận có 3 cột. Mỗi hàng của ma trận định nghĩa một màu riêng biệt sử dụng các số trong dải 0 đến 1. Những số này chỉ ra các giá trị RGB, độ nhạy của các thành phần đỏ, xanh lá cây và xanh da trời trong một màu do các thành phần đó tạo ra. Một số màu cơ bản được cho trong bảng dưới dây:

Colormap (map) là lệnh đặt bảng màu theo ma trập map. Nếu bất kỳ giá trị nào của ma trận map nằm ngoài khoảng [0,1] thì Matlab sẽ trả về giá trị báo lỗi bảng amfu.

Colormap(‘default’) : đặt bảng màu hiện tại là bản màu mặc định

Cmap = colormap : lưu lại bảng màu hiện tại, giá trị trả về sẽ nằm trong khoảng [0, 1]

Thiết lập bảng màu:

Matlab chấp nhập một bảng màu là một argument, ví dụ như colormap(hsv(128))

có nhiệm vụ tạo ra bảng màu hsv với 128 màu. Nếu ta không xác định kích thước thì Matlab sẽ tạo ra bảng màu với kích thước bằng kích thước của bảng màu hiện tại.

Một số bảng màu được cung cấp sẵn trong Matlab

Bảng màu Giải thích

Autumn Biến đổi các màu từ đỏ  cam  vàng Bone Bảng màu xám với nhiều màu xanh da trời Colorcube Chứa các màu trong dải RBB

Cool Bao gồm các màu biến đổi từ màu lục (cyan) đến mà đỏ tươi (magenta)

Hot Các màu biến đổi từ đỏ, cam, vàng đến trắng Hsv Các thành phần màu của chế độ màu bão hòa

Jet Dải màu tà xanh da trời đến đỏ, bao gồm cả các màu lục (cyan), vàng, da cam. Jet là bảng màu tự nhiên.

Lines Cung cấp bảng màu chì với màu chủ đạo là màu xám Spring Bao gồm các màu từ màu đỏ tươi (magenta) đến màu vàng Summer Bao gồm các màu từ xanh lá đến màu vàng

>> load flujet >> image(X) >> colormap(jet)

Hình 1.31. Bảng màu jet

Một phần của tài liệu bài giảng MATLAB simulink (Trang 43 - 52)

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

(174 trang)
w