Thị bề mặt và lưới

Một phần của tài liệu bai giang chi tiet tin hoc ung dung (1) (Trang 82 - 87)

6. ĐỒ HỌA 3 CHIỀU TRONG MATLAB

6.1 thị bề mặt và lưới

MATLAB định nghĩa bề mặt lưới bằng các điểm theo hướng trục z ở trên đường kẻ ơ hình vng 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 ra đồ thị lưới của hàm hai biến z = f (x, y ), tương ứng với ma trận X và 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 tốn học về mảng của MATLAB.

Sau đây là một ví dụ về cách dùng hàm meshgrid. >> x = -7.5:.5:7.5;

>> y = x;

>> [X,Y] = meshgrid(x,y);

X, Y 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) có thể sử dụng tính chất này.

>> R = sqrt(X.^2+Y.^2)+eps;

>> % find the distance from the origin (0,0)

>> Z = sin(R)./R; % calculate sin(r)/ r

Ma trận R chứa bán kính của mỗi điểm trong [X,Y], nó là khoảng cách từ mỗi điểm đến tâm ma trận. Cộng thêm eps để không để xảy ra phép chia cho 0. Ma trận Z

chứa sine của bán kính chia cho bán kính mỗi điểm trong sơ đồ. Câu lệnh sau vẽ đồ thị lưới:

>> mesh(X,Y,Z)

Đồ thị trên là đơn sắc. Tuy nhiên bạn có thể thay đổi màu sắc với sự trợ giúp của MATLAB rất rễ dàng nếu bạn đọc đến phần colormaps..

Trong ví dụ này, hàm mesh xắp xếp giá trị của các phần tử của ma trận vào các điểm (Xị,Yị,Zị) trong khơng gian ba chiều. mesh cũng có thể vẽ một ma trận đơn tương tự như với một đối số; mesh(Z), sử dụng các điểm (i,j,Zị). Như vậy Z được vẽ ngược lại với các chỉ số của nó, trong trường hợp này mesh(Z) chỉ đơn giản là chia lại độ khắc các trục x, y theo các chỉ số của ma trận Z. Bạn hãy thử tạo ví dụ cho trường hợp này?.

Đồ thị bề mặt của cùng một ma trận Z trông như đồ thị lưới trước đó, ngoại trừ khoảng cách giữa hai đường là khác nhau (gọi là patchs). Đồ thị loại này dùng hàm

surf, nó có tất cả các đối số như hàm mesh. Hãy xem ví dụ dưới đây (Hình 18.4):

Để làm rõ thêm một vài chủ đề, chúng ta cùng quay lại hàm peaks đã đa ra ở phần trước. Đồ thị lưới trong không gian 3 chiều của hàm này được đưa ra như sau (hình 18.5):

>> mesh(peaks)

>> title('Mesh Plot of Peaks function')

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

6.2 Thao tác với đồ thị

MATLAB cho phép bạn khai báo góc để từ đó quan sát được đồ thị trong không gian ba chiều. Hàm view(azimuth, elevation ) thiết lập góc xem bằng việc khai báo

azimuth và elevation. “Elevation “ mơ tả vị trí người quan sát, xem như là góc đo

bằng độ trên hệ trục x-y. ”Azimut mơ tả góc trong hệ trục nơi người quan sát đứng.

Azimuth được đo bằng độ từ phần âm trục y. Phía âm trục y có thể quay theo chiều kim đồng hồ một góc -37.5 độ từ phía bạn. Elevation là góc mà tại đó mắt bạn thấy được mặt phẳng x-y. Sử dụng hàm view cho phép bạn có thể quan sát hình vẽ từ các góc độ khác nhau. Ví dụ nếu elevation thiết lập là âm, thì view sẽ nhìn hình từ phía dưới lên. Nếu azimuth thiết lập dương, thì hình sẽ quay ngược chiều kim đồng hồ từ điểm nhìn mặc định.Thậm chí bạn có thể nhìn trực tiếp từ trên bằng cách thiết lập

view(0,90 ). Thực ra thì đây là điểm nhìn mặc định 2 chiều, trong đó x tăng từ trái qua

phải, và y tăng từ trên xuống dưới, khn dạng view(2) hồn tồn giống như mặc định của view(0, 90 ), và view(3) thiết lập mặc định trong khơng gian 3 chiều.

Lệnh view có một dạng khác mà rất tiện ích khi sử dụng là view([X,Y,Z ]) cho

phép bạn quan sát trên một vector chứa hệ trục toạ độ decac trong không gian 3 chiều. Khoảng cách từ vị trí bạn quan sát đến gốc toạ độ khơng bị ảnh hưởng. Ví dụ, view([0

10 0 ]), view([0 -1 0 ]) và view(0, 0 ) cho các kết quả như nhau. Các thông số azimuth và elevation mà bạn đang quan sát có thể lấy lại được bằng cách dùng [az, e] = view. Vídụ: >> view([-7 -9 7]) >> [az,el] = view az = -37.8750 el = 31.5475

Một công cụ hữu dụng khác là quan sát đồ thị không gian 3 chiều bởi hàm

rotate3d. Các thông số Azimtuh và elevation có thể được tác động bởi chuột, rotate3d on cho phép chuột can thiệp, rotate3d off không cho phép.

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

>> mesh(peaks(20)+7) >> hold on

>> pcolor(peaks(20)) >> hold off

Bây giờ hãy bỏ chế độ dấu các nét khuất đi ta sẽ thấy sự khác nhau: >> hidden off

Một phần của tài liệu bai giang chi tiet tin hoc ung dung (1) (Trang 82 - 87)

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

(95 trang)
w