1. Trang chủ
  2. » Công Nghệ Thông Tin

Giao trinh matlab v5.2 P10 pptx

11 266 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 388,51 KB

Nội dung

Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 89 >> z = abs ( sin( Y ).* cos( X ) ); >> [ DX, DY ] = gradient ( z, 0.1, 0.2 ) >> contour ( z ); >> hold on; >> quiver ( DX, DY ); >> hold off; 5.3. Đồ hoạ 3 chiều. Matlab sẽ tự dn xếp cảnh nhìn v góc nhìn với bộ lệnh plot3 v bản chất plot3 tơng đơng với plot chỉ khác plot3 yêu cầu thêm vector thứ 3 hay ma trận đối số. Kiểm tra mu của đờng có thể thay đổi thông qua biến string. 5 5 . . 3 3 . . 1 1 L L ệ ệ n n h h v v ẽ ẽ đ đ ồ ồ h h o o ạ ạ 3 3 D D t t h h ô ô n n g g t t h h ờ ờ n n g g plot3( x, y, z ) - Vẽ đồ hoạ thông qua điểm xác định bởi (xi, yi, zi). Các vector x, y, z phải có độ di bằng nhau. plot3( X, Y,Z ) - Vẽ đồ hoạ với các cột của ma trận X, Y, Z các ma trận phải có độ lớn nh nhau, đồng thời chiều di của các cột trong ma trận phải bằng nhau. plot3(x,y,z,srt ) - Vẽ đồ hoạ tơng tự lệnh trên với mu v kiểu đờng đợc xác định bởi biến srt. plot3 (x 1 , y 1 , z 1 , srt 1 , x 2 , y 2 , z 2 , str 2 , ) - Vẽ đồ hoạ tại (x 1 , y 1 , z 1 ) với mu v kiểu đờng xác định bởi str 1 v tơng tự str 2 cho x 2 , y 2 , z 2 Nếu str 1 v str 2 không đợc định nghĩa Matlab sẽ tự chọn mu v kiểu cho đờng. Ví dụ 5.3 Ví dụ trên sẽ tạo ra chơng trình mô phỏng chuyển động hỗn loạin n bớc trong không gian 3D. n = input ( 'số bớc chuyển động' ); x = cumsum ( rand (1,n ) -0.5 ); y = cumsum ( rand( 1,n ) -0.5 ); z = cumsum ( rand( 1,n ) -0.5 ); plot3 ( x,y,z ); text ( x( 1), y( 1 ), z( 1 ), 'Tới đây'); text ( x( n), y( n ), z( n ), 'kết thúc'); Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 90 Hình 5.6 Mô tả chuyển động hỗn loạn trong không gian 3D 5 5 . . 3 3 . . 2 2 C C á á c c l l ệ ệ n n h h v v ẽ ẽ h h o o ạ ạ t t h h ì ì n n h h 3 3 D D comet 3 (x) - Cũng tơng tự nh lệnh comet trong khoong gian 2D. Comet3 cho ra hình ảnh chuyển động hoạt hình mô phỏng lại quá trình vẽ comet3(x,y,z) - Vẽ mô phỏng quá trình vẽ của hm z = f(x,y). Điều đó có nghĩa điểm vẽ xác định bởi (xi, yi,zi) comet3(x,y,z,p) - Cho ra tiến trình vẽ mô phỏng tơng tự nh trên với đôi kéo di tính theo p. Chiều di của p đợc cho trớc nh vector y. Nếu p không đợc xác định thì hm số lấy giá trị mặc định l tập của các giá trị 0.1 Chữ trong cửa sổ không gian 3D đợc thể hiện tơng tự nh các bộ lệnh trong không gian 2D nh title, text, xlabel, ylabel v zlabel. 5.4 Mặt lới trong không gian 3D. -4 -3 -2 -1 0 -2 -1 0 1 2 -3 -2 -1 0 1 Toi day ket thuc Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 91 Matlab cho phép tạo ra các mặt lới trên mn hình đồ hoạ của hm z = f(x,y) theo từng bớc sau đây. - Xây dựng lới grid - Tính giá trị z = f(u,v) với U v V l 2 ma trận điểm toạ độ của các giá trị trên trục x v y tơng ứng. - Vẽ mặt lới bằng lệnh đồ hoạ cho phép trong Matlab. Chú ý rằng lới grid không cần thiết cho loại lới tứ giác. Trong các trờng hợp khác toạ độ lới phải đợc cho vo khi gọi hm. 5 5 . . 4 4 . . 1 1 B B ộ ộ l l ệ ệ n n h h t t ạ ạ o o l l ớ ớ i i mesh ( z ) - In các giá trị trong ma trận z nh l các độ cao trên mặt lới grid hình chữ nhật. Nối các điểm đó với các điểm xung quanh tạo nên mặt lới (mesh) mesh ( z , c ) - Vẽ các giá trị của z lên trên mặt lới grid chữ nhật với mu sắc của điểm đợc xácđịnh bởi tập các biến trong ma trận c. mesh( u, v, z, c ) - Vẽ hm mặt lới trên dữ liệu l các phần tử trong ma trận z. Các điểm láng giềng trong lới đợc nối với nhau bởi các đờng thẳng. Đồ hoạ đợc vẽ trong không gian 3D với góc chiếu phối cảnh với phần tử zij l chiều cao trên lới grid(Uij, Vij)). - Điểm nhìn đợc lấy tự động để đợc góc nhìn phối cảnh rộng nhất. Vị trí điểm nhìn có thể đợc thay đổi thông qua hm view. U: ma trận toạ độ theo x V: ma trận toạ độ theo y Z: ma trận toạ độ theo z Zij = f(Uij, Vij) C: ma trận mu cho mỗi điểm. Nếu ma trận C không xác định thì C = Z đợc sử dụng. Nếu U v V l 2 vector có chiều di m v n tơng ứng thì z l ma trận có kích thớc m x n v mặt lới đợc xác định bởi 3 điểm (uij, Vi, Zij). meshc ( ) - Dùng để vẽ b ớc lới cho các bề mặt lới tơng tự nh lệnh mesh nhng đồng thời vẽ thêm đờng contour ở dới bề mặt lới meshz ( ) - Dùng để vẽ mặt lới tơng tự nh lệnh mesh nhng có thêm lới grid trên mặt x,y Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 92 waterfall( ) - Tơng tự nh lệnh mesh nhng lới grid chỉ đợc vẽ theo 1 hớng. hidden on - Giữ cho Matlab không vẽ các đờng khuất sau mặt lới tạo bởi lệnh mesh hidden off - Cho phép Matlab vẽ các đờng khuất sau mặt lới hidden - Chuyển trạng thái hidden từ on sang off hoặc ngợc lại 5 5 . . 4 4 . . 2 2 Q Q u u a a y y m m a a t t r r ậ ậ n n đ đ ồ ồ h h o o ạ ạ 3 3 D D Việc quay các ma trận đồ hoạ có thể đợc thao tác thông qua lệnh rot90. rot90(A) - Trả lại giá trị của ma trận ảnh A qua phép quay 90 0 theo chiều kim đồng hồ, lệnh thờng đợc sử dụng với lệnh mesh rot90(A,k) - Trả lại giá trị ma trận A quay theo chiều kim đồng hồ 1 góc k * 90 Dới đây l một số ví dụ minh hoạ cho các lệnh đồ hoạ trên đây l sáng tỏ ý nghĩa v cánh dùng cuả lệnh hay lm. Ví dụ 5.4: a) Trong Matlab có sẵn một số ma trận ảnh chữ có tên Matlabmatrix. Vì lý do ma trận quá to chúng ta chỉ quan sát trên cơ sở những gì tạo thnh từ nó. >> clf; >> subplot(2,2,1); mesh( Matlabmatrix ); >> title('gcs nhìn chuẩn'); >> subplot(2,2,2); mesh(Matlabmatrix); >> view([1 -4 2]);axis([0 200 0 20 0 3]); >> title('viewed từ điểm [1 -4 2]'); >> subplot(2,2,3); mesh (Matlabmatrix); >> view([-1 -2 -7]); >> title('nhìn dới lên 1 điểm nhìn [-1 -2 -7];); >> subplot(2,2,4); spy (Matlabmatrix); >> title('cấu trúc của ma trận ảnh Matlabmatrix'); với lệnh spy( ) cho phép mô tả một cách rõ rng nhất về ma trận điểm ảnh. Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 93 b) Ví dụ b dùng Matlab để mô tả các mặt hình học sau: z 1 = f(x,y) = sinx . siny x,y [ 0, ] z 2 = f(x,y) = +x = x 3 + y 2 + 1 x, y [-3, 3] z 3 = f(x,y) = sin () xy xyxy 22 22 88++/( ), [,] Việc định nghĩa x, y v z 1 , z 2 , z 3 đợc mô tả với các khoảng xác định nh sau: >> x = 0 : 0.2 : 3*pi; >> y = 0 : 0.25 : 5*pi; >> [X,Y] = meshgrid(x,y); >> z 1 = sin(X) . *sin(Y); >> subplot(2,2,1); mesh(z 1 ); >> title('hm sinx . siny'); Hình 5.7 Mô tả ví dụ 5.4 a Hm sin x * cos x >> x = 03 : 0.25 : 3 >> y = x >> [X,Y] = meshgrid (X,Y); >> z 2 = X - X.^3 + Y.^2 + 1; >> subplot ( 2, 2, 2 ); mesh ( z2 ); >> title (' Hm x - x 3 + y 2 + 1 '); 0 10 20 30 40 50 0 20 40 60 80 -1 -0.5 0 0.5 1 Hm sinx . siny Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 94 Hình 5.8 Mô tả ví dụ 5.4 b Hm z = X - X.^3 + y.^2 +1 >> subplot ( 2, 2, 3 ); >> waterfall ( z2 ); Hiệu ứng waterfall cho phép hiển thị các đờng mô tả chiều cao của của từng đỉnh trên lới. Hình 5.9 Mô tả hiệu ứng waterfall >> x = -8 : 0.5 : 8; >> y = x; >> [X,Y] = meshgrid ( x, y ); 5 10 15 20 25 10 20 30 -10 -5 0 5 10 15 0 5 10 15 20 25 0 10 20 30 -10 -5 0 5 10 15 Hm x - x3 + y2 + 1 Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 95 >> r = sqrt ( X.^2+Y.^2 ); >> z3 = sin ( r )./ r; >> subplot ( 2, 2, 4 ); meslice ( z3 ); >> title ( ' Đồ hoạ hm sin(x)/x ' ); Hình 5.10 Đồ thị lới của phơng trình hm sin( x ) / x c) Ví dụ c xây dựng các ma trận LU v QR thông qua 2 hm lu v qr từ ma trận A. Mã chơng trình sau đây sẽ cho kết ra quả thu đợc lên mn hình đồ hoạ Hình 5.11 If ~ exist ( 'A' ) A=input ('Vo số liệu cho A :' ) else disp ( 'Ma trận A đã tồn tại' ); end [ L, U ] = lu ( A ); [ Q , R ] = qr ( A ); disp( ' Press any key to continue ' ); pause; elf; subplot ( 2, 2, 1 ); mesh ( L ); title ( ' Ma trận L ' ); subplot ( 2 , 2 , 2 ) 0 10 20 30 40 0 10 20 30 40 -0.5 0 0.5 1 Hm sin(x)/x Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 96 mesh ( U ), title ( 'Ma trận U'); subplot ( 2 , 2 , 3 ); mesh ( Q ), title( 'Ma trận Q' ); subplot ( 2 , 2 , 4 ); mesh ( R ), title ( 'Ma trận R' ); Hình 5.11 Mô tả kết quả ví dụ 5.4 c Kết quả thu đợc với hm bất kỳ l tên của đoạn chơng trình cho ta dữ liệu sau trong phần trên chúng ta lm quen với những hm tạo mặt lới trong không gian 3D. Tuy nhiên khi tạo ra các bề mặt lới có độ bóng hay ánh sáng tơng tác lên bề mặt thì các hm hay độ lệch đợc sử dụng sẽ khác v mang thêm thông tin về các dạng dữ liệu đó. Để tìm hiểu về các thông tin các loại, dạng ánh sáng hay các giải thuật tạo bóng bề mặt, bạn đọc có thể tìm hiểu thêm trong giáo trình đồ hoạ hoặc giáo trình CAD. 5.5 Đồ hoạ bề mặt. 0 5 10 0 5 10 -1 0 1 Ma tran L 0 5 10 0 5 10 -50 0 50 Ma tran U 0 5 10 0 5 10 -1 0 1 Ma tran Q 0 5 10 0 5 10 -50 0 50 Ma tran R Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 97 surf ( X, Y, Z, C ) - Tạo mặt ba chiều lên mn hình đồ hoạ xác định bởi các toạ độ xij, yij, zij. Nếu x v y l các vector có độ di m, n tơng ứng, z l ma trận tơng ứng m x n v bề mặt đợc định nghĩa bởi xi, yj v zij. - Nếu X, Y không đợc định nghĩa Matlab sẽ sử dụng lới grid hình chữ nhật đến giá trị của lới đợc xác định bởi giá trị các phần tử trong ma trận C. - Nếu C không đợc xác định thì giá trị mặc định của C = Z. surfc ( X,Y, Z, C ) - Hm thực hiện các chức năng tơng tự nh surf( ) ngoại trừ việc bao gồm cả chức năng vẽ các đờng contour của mặt lên mặt phẳng dới bề mặt lới. surfl ( X , Y , Z , ls ) - Tơng tự nh hm surf ( ) nhng cần có thêm ánh sáng theo hớng ls = [ v,h ] hoặc ls = [ x, y, z ] m trong đó các biến số tơng tự nh ở lệnh view. surfc ( X, Y, Z, ls, r ) - Hm thực hiện các chức năng nh trên, tuy nhiên ngời sử dụng có thể cho thêm các thông tin liên quan nh ánh sáng xung quanh, độ phản xạ khuyếch tán, phản xạ dải v độ phản chiếu. - r = [ ambient, diffuse, specular, spread ] surfnorm ( X, Y, Z ) - Hm tạo bề mặt lới với các chỉ số chức năng khác ở mức độ bình thờng hay mặc định. - [ Nx, Ny, Nz ] surfmorm ( X, Y, Z ) - Đa giá trị đơn vị vo bề mặt tạo các ma trận X,Y,Z nhng không vẽ hm lên mn đồ hoạ nxij, nyij, nzij l vector đơn vị xác định bởi xij, yij, zij. Giá trị đơn vị có độ di 1. difuse(Nx,Ny,Nz,ls) - Trả lại độ phản xạ của mặt khuyếch tán cùng với các thnh phần đơn vị cho bởi: Nx, Ny, Nz sử dụng luật Lambert ls ở đây l vị trí của nguồn sáng xác định bởi vecotr 3 thnh phần. specular(Nx,Ny,Nz,lsN) - Trả lại độ phản xạ bề mặt cho các thnh phần đơn vị Nx, Ny, Nz sử dụng nguồn sáng ls v góc nhìn v. pcolor ( Z ) - Vẽ một mảng mu nhằm tạo với mỗi ô l 1 mầu xác định bởi các phần tử trong ma trận Z. Chơng 5 - Đồ hoạ trong không gian ba chiều Phần 1 - Cơ sở 98 pcolor( X,Y,Z ) - Giống với lệnh surf(Z,Y,Z) v với góc nhìn view(2). file ( x, y, c ) - Vẽ 1 đa giác với các góc xác định bởi toạ độ trong vector c. Nếu c l vecotr có cùng chiều di với x v y. Nếu x v y l ma trận thì đa giác đợc vẽ bởi mỗi cột. Ví dụ 5.5 a) Vẽ hình phơng trình sinr/r với đồ thị đờng mức ở dới. >> x = -8 : 0.5 : 8; y = x >> [X Y] = meshgrid ( x, y ); >> R = sqrt ( X.^2+Y.^2 ) + eps; >> Z = sin ( R)./ R; >> surfc ( X,Y,Z ); >> title ( 'Hm sin r/r' ); Hình 5.11 Mô tả mặt lới sin (r )/ r. Với dải mầu C phụ thuộc vo Z 10 20 30 40 10 20 30 40 -0.5 0 0.5 1 Hm sin(x)/x tren view( [1 0 0] . >> subplot (2, 2 ,2) ; mesh(Matlabmatrix); >> view([1 -4 2] );axis([0 20 0 0 20 0 3]); >> title('viewed từ điểm [1 -4 2] '); >> subplot (2, 2,3); mesh (Matlabmatrix);. srt 1 , x 2 , y 2 , z 2 , str 2 , ) - Vẽ đồ hoạ tại (x 1 , y 1 , z 1 ) với mu v kiểu đờng xác định bởi str 1 v tơng tự str 2 cho x 2 , y 2 , z 2 Nếu str 1 v str 2 không đợc định nghĩa Matlab. meshgrid (X,Y); >> z 2 = X - X.^3 + Y. ^2 + 1; >> subplot ( 2, 2, 2 ); mesh ( z2 ); >> title (' Hm x - x 3 + y 2 + 1 '); 0 10 20 30 40 50 0 20 40 60 80 -1 -0.5 0 0.5 1 Hm

Ngày đăng: 10/07/2014, 20:21

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w