Tải bản đầy đủ (.pdf) (11 trang)

Giao trinh matlab v5.2 P10 pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (388.51 KB, 11 trang )

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]

Chơng 5 - Đồ hoạ trong không gian ba chiều


Phần 1 - Cơ sở
99
b) Với giá trị X,Y,Z xác định nh ở phần a) với lệnh
>> surfnorm( X,Y,Z )
>>grid on

Hình 5.12 Cho ra mặt lới với đặc tính normal
[ X Y ] = meshgrid ( -3:1/8:3 );
Z = peaks( X,Y ).*sin ( X );
[ Nx Ny Nt ] = surfnorm ( Z );
S = [ -3 -3 2 ] % vị trí nguồn sáng
k
1
= [ 0, 1, 0, 0 ] % mức độ phản xạ
k
2
= [ 0, 0, 1, 1 ] % mức độ ánh sáng xung quanh




-10

-5
0
5
10
-10
-5
0
5
10
-0.5
0
0.5
1

×