06 cwiczenie grafika1id 6272 ppt

background image

1

Grafika w programie

MATLAB

dr inż. Henryk Olszewski

background image

2

Funkcja quiver

Funkcja quiver wyświetla wektory prędkości w postaci strzałek, których długości i zwroty określają macierze składowych wektorów U i V zaś współrzędne punktów zaczepienia
macierze X i Y:

quiver(X,Y,U,V)

Macierze X, Y, U i V muszą mieć ten sam wymiar i zawierać odpowiadające sobie współrzędne położenia wektorów i składowe wektorów.

Program MATLAB generuje macierze współrzędnych X i Y na podstawie wektorów:

[X,Y] = meshgrid(X,Y)
quiver(X,Y,U,V)

W tym przypadku muszą być spełnione następujące zależności:

length(X) = n i length(Y) = m, gdzie [m,n] = size(U) = size(V)

Wektor X odpowiada kolumnom macierzy U i V, zaś wektor Y wierszom macierzy U i V.

background image

3

Funkcja quiver

Funkcja:

quiver(U,V)

wyświetla wektory U i V w równoodległych punktach na płaszczyźnie x-y.

Funkcja:

quiver(...,scale)

automatycznie przeskalowywuje strzałki wektorów dopasowywując je węzłów siatki, a następnie przemnaża długość wektorów przez zadany współczynnik skali. Jeżeli parametr scale = 2
długość wektorów zwiększa się dwukrotnie, jeżeli parametr scale = 0.5 długość wektorów zmniejsza się dwukrotnie. Jeżeli parametr scale = 0 wektory prędkości nie są automatycznie
przeskalowywane.

We funkcji:

quiver(...,LineSpec)

rodzaj linii, symbol markera oraz kolor linii są określone przez parametr LineSpec. Markery są rysowane w punktach początkowych wektorów.

background image

4

Funkcja quiver

Funkcja:

quiver(...,LineSpec,'filled')

wypełnia markery określone za pomocą parametru LineSpec.

Polecenie:

h = quiver(...)

wyświetla wektor cech rysowanych linii.

Przykład 1:

Wyświetlić pole gradientów funkcji:

2

2

y

x

e

x

z

background image

5

Funkcja quiver

[X,Y] = meshgrid(-2:.2:2);

Z = X.*exp(-X.^2 - Y.^2);

[DX,DY] = gradient(Z,.2,.2);

contour(X,Y,Z)

hold on

quiver(X,Y,DX,DY)

colormap hsv

grid off

hold off

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

background image

6

Funkcja quiver

Przykład 2:

Wyświetlić 10 linii konturowych funkcji peaks:

n = -2.0:.2:2.0;

[X,Y,Z] = peaks(n);

contour(X,Y,Z,10)

background image

7

Funkcja quiver

Przykład 2:

Przy pomocy funkcji gradient obliczyć składowe wektora przyrostów funkcji Z będące parametrami funkcji quiver:

[U,V] = gradient(Z,.2);

Na wyświetlony w oknie rysunkowym wykres nałożyć nowy wykres pola wektorowego:

hold on

quiver(X,Y,U,V)

hold off

background image

8

Funkcja quiver3

Funkcja quiver3 wyświetla trójwymiarowe wykresy wektorów o składowych (U, V, W) w
punktach o współrzędnych (X, Y, Z):

quiver(X,Y,Z,U,V,W)

Przykład 1:
Wyświetlić wektory normalnych do płaszczyzny określonej równaniem:

2

2

y

x

e

x

z

background image

9

Funkcja quiver3

[X,Y] = meshgrid(-2:0.25:2,-1:0.2:1);

Z = X.* exp(-X.^2 - Y.^2);

[U,V,W] = surfnorm(X,Y,Z);

quiver3(X,Y,Z,U,V,W,0.5);

hold on

surf(X,Y,Z);

colormap hsv

view(-35,45)

axis ([-2 2 -1 1 -.6 .6])

hold off

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

-1

-0.5

0

0.5

1

-0.4

-0.2

0

0.2

0.4

0.6

background image

10

Funkcja quiver3

Przykład 2:
Wyświetlić prędkość punktu, którego trajektoria jest opisana równaniem:

Określenie wartości stałych vz oraz a:

vz = 10;

% Velocity

a = -32;

% Acceleration

Obliczenia funkcji z, jeżeli czas zmienia się od 0 do 1 z krokiem 0.1:

t = 0:.1:1;
z = vz*t + 1/2*a*t.^2;

Obliczenia składowych położenia x i y:

vx = 2;
x = vx*t;
vy = 3;
y = vy*t;

 

2

2

t

a

t

v

t

z

z

background image

11

Funkcja quiver3

Przykład 2:
Obliczenia składowych wektorów prędkości i wyświetlenie wektorów w przestrzeni trójwymiarowej:

u = gradient(x);
v = gradient(y);
w = gradient(z);
scale = 0;
quiver3(x,y,z,u,v,w,scale)
view([70 18])

background image

12

Funkcja coneplot

Funkcja coneplot wyświetla wektory prędkości postaci w stożków w przestrzeni 3D.

Funkcja:

coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz)

wyświetla wektory prędkości w postaci stożków, których osie symetrii są zgodne z kierunkami wektorów prędkości zaś wysokość jest
proporcjonalna do długości wektora.

Macierze X, Y i Z zawierają składowe współrzędnych pola wektorów.
Macierze U, V i W zawierają składowe wektorów. Powyższe macierze muszą mieć te same wymiary, muszą być monotoniczne i
3-D (o takiej samej postaci, co macierze wygenerowane przez funkcję meshgrid).
Macierze Cx, Cy i Cz zawierają położenia stożków w polu prędkości.

background image

13

Funkcja coneplot

W przypadku funkcji:

coneplot(U,V,W,Cx,Cy,Cz)

(macierze X, Y i Z są pominięte) przyjmuje się, że:

[X,Y,Z] = meshgrid(1:n,1:m,1:p) gdzie: [m,n,p]= size(U).

W przypadku wywołania funkcji:

coneplot(...,s)

funkcja MATLAB automatycznie przeskalowywuje stożki wykresu do rozmiarów okna graficznego a następnie zmienia ich wysokości przemnażając je współczynnik skali
s. Jeśli współczynnik skali s nie jest określony program MATLAB przyjmuje wartość domyślną s = 1. Jeżeli s = 0 stożki są wyświetlane bez automatycznego
przeskalowania.

background image

14

Funkcja coneplot

Funkcja:

coneplot(...,color)

interpoluje macierzą kolorów pole wektorów i następnie wyświetla stożki w kolorach odpowiadających interpolowanym wartościom. Wymiary macierzy
color muszą być te same, co wymiary macierzy U, V i W. Powyższa opcja działa tylko w przypadku stożków (nie współpracuje z opcją quiver).

Funkcja:

coneplot(...,'quiver')

wyświetla strzałki zamiast stożków (działa podobnie jak funkcja quiver3).

background image

15

Funkcja coneplot

W przypadku funkcji:

coneplot(...,'method')

istnieje możliwość wyboru metody interpolacji:

‘linear’

- kawałkami liniowa – funkcją łamaną (domyślna),

‘cubic’

- kawałkami sześcienna – wielomianami trzeciego

stopnia,

‘nearest’

- najmniejszych odległości

Funkcja:

coneplot(X,Y,Z,U,V,W,'nointerp')

nie interpoluje położenia stożków w zadanej objętości. Stożki są rysowane w położeniach zdefiniowanych przez macierze X, Y i Z, zaś ich orientację określają macierze U, V i W. Macierze X, Y, Z, U,
V, W muszą mieć te same wymiary.

background image

16

Funkcja coneplot

Polecenie:

h = coneplot(...)

wyświetla cechy obiektów użytych do narysowania stożków

Funkcja coneplot automatycznie przeskalowywuje wymiary stożków, tak by maksymalnie wypełniały one obszar
wykresu przy równoczesnym zachowaniu proporcji względem wektorów prędkości.W większości przypadków należy
określić współczynniki skali osi wykresu przed użyciem funkcji coneplot za pomocą funkcji daspect:

daspect([1,1,1])

background image

17

Funkcja coneplot

Przykład 1:
Narysować stożkowe wektory prędkości przedstawiające ruch powietrza w prostopadłościennej
przestrzeni. Wykres ma obejmować:

stożki określające amplitudę oraz kierunek prędkości wiatru,

powłokę brzeg wykresu,

kierunkowe oświetlenie ułatwiające określenie orientacji stożków.

background image

18

Funkcja coneplot

Wczytanie danych
Plik danych dotyczących wiatru wind zawiera sześć 3-D macierzy: u, v i w określających składowe prędkości w każdym punkcie przestrzeni o współrzędnych x, y i z. Po
wczytaniu danych pomocne jest ustalenie zakresów wczytanych danych, które zostaną wykorzystane przy rysowaniu powłoki oraz stożków prędkości:

load wind
xmin = min(x(:));
xmax = max(x(:));
ymin = min(y(:));
ymax = max(y(:));
zmin = min(z(:));
zmax = max(z(:));

background image

19

Funkcja coneplot

Utworzenie wykresu stożkowego

Określić zakresu wykresu stożkowego – przyjąć pełen zakres x i y z ośmioma krokami w przedziale od 3 do 15 oraz z czterema krokami z zakresie z (funkcje linspace i meshgrid).
Użyć funkcję daspect w celu określenia współczynników skali osi przed wydaniem polecenia coneplot – program MATLAB przyjmie właściwe wymiary stożków.
Wygenerować stożki przyjmując współczynnik skali równy 5 – stożki będą pięciokrotnie większe.
Określić sposób kolorowania każdego stożka (funkcje FaceColor, EdgeColor).

daspect([2,2,1])
xrange = linspace(xmin,xmax,8);
yrange = linspace(ymin,ymax,8);
zrange = 3:4:15;
[cx cy cz] = meshgrid(xrange,yrange,zrange);
hcones = coneplot(x,y,z,u,v,w,cx,cy,cz,5);
set(hcones,'FaceColor','red','EdgeColor','none')

background image

20

Funkcja coneplot

Utworzenie powłoki tworzącej brzeg rysunku

Obliczyć długości wektorów pola prędkości (które reprezentują prędkości wiatru) będące danymi funkcji slice.
Wygenerować powłokę brzegową, dla której współrzędna x zmienia się od xmin do xmax, y zmienia się od ymin do ymax, z zmienia się od zmin do zmax.
Określić zinterpolowane kolory siatki elementów trójkątnych powłoki ograniczającej przestrzenny wykres prędkości wiatru. Kolory siatki zależeć mają od prędkości
wiatru. Krawędzie elementów nie mają być rysowane (funkcje hold, slice, FaceColor, EdgeColor).

hold on
wind_speed = sqrt(u.^2 + v.^2 + w.^2);
hsurfaces=slice(x,y,z,wind_speed,[xmin,xmax],ymax,zmin);
set(hsurfaces,'FaceColor','interp','EdgeColor','none')
hold off

background image

21

Funkcja coneplot

Zdefiniować widok

Za pomocą funkcji axis określić granice osi wykresu równe zakresom danych.
Przyjąć widok o azymucie równym 30 i elewacji równej 40 (ustalenie najlepszego widoku jest możliwe przy pomocy funkcji rotate3d).
Przyjąć widok perspektywiczny pozwalający uzyskać bardziej realistyczny widok wykresu (funkcja camproj).
Powiększyć scenę wykresu tak, by wykres był możliwie jak największy (funkcja camzoom).

axis tight;
view(30,40); axis off
camproj perspective;
camzoom(1.5)

background image

22

Funkcja coneplot

Dodać oświetlenie do sceny
Dodane do sceny źródła światła oświetlają zarówno powłokę (brzeg wykresu), jak i stożki (linie prądu wiatru). Dla każdego z powyższych obiektów wykresu można
określić różne charakterystyki odbicie i pochłaniania światła.

Dodać źródło światła na prawo od kamery, użyć oświetlenie Phong, w którym stożki i powłoki brzegu łagodnie wyłaniają się z trójwymiarowego wykresu
(funkcje camlight, lighting).
Zwiększyć wartość cechy AmbientStrength ( światło otoczenia) dla każdej powłoki w celu zwiększenia nasycenia ciemno-niebieskiego koloru (istnieje również
możliwość określenia różnych map kolorów – funkcja colormap dla poszczególnych powłok brzegu strumienia wiatru).
Zwiększyć wartość cechy DiffuseStrength (rozproszenie światła) dla stożków w celu rozjaśnienia stożków nie odbijających bezpośrednio strumień światła.

camlight right; lighting phong
set(hsurfaces,'AmbientStrength',.6)
set(hcones,'DiffuseStrength',.8)

background image

23

Funkcja coneplot

background image

24

Funkcja curl

Funkcja curl wyświetla rotacje wektorów oraz prędkości kątowe pola wektorów w przestrzeni trójwymiarowej.

Przykład 1:
Przy pomocy kolorowych powłok (slice planes) wykonać wykres prędkości kątowych zawirowania powietrza w określonych położeniach pola wektorów strumienia wiatru:

load wind
cav = curl(x,y,z,u,v,w);
slice(x,y,z,cav,[90 134],[59],[0]);
shading interp
daspect([1 1 1]); axis tight
colormap hot(16)
camlight

background image

25

Funkcja curl

background image

26

Funkcja curl

Przykład 2:
Wykonać wykres prędkości kątowych zawirowania powietrza na zadanej płaszczyźnie analizowanej objętości strumienia powietrza, na otrzymany wykres nanieść wektory prędkości (funkcja quiver)
w tej samej płaszczyźnie:

load wind
k = 4;
x=x(:,:,k); y=y(:,:,k); u=u(:,:,k); v=v(:,:,k);
cav = curl(x,y,u,v);
pcolor(x,y,cav); shading interp
hold on;
quiver(x,y,u,v,'y')
hold off
colormap copper

background image

27

Funkcja curl

background image

28

Funkcja streamribbon

Funkcja streamribbon wyświetla wstęgi linii prądu w przestrzeni 3D.

Funkcja:

streamribbon(X,Y,Z,U,V,W,startx,starty,startz)

wyświetla wstęgi prądu na podstawie zadanych macierzy danych U, V i W (macierze 3D). Macierze X, Y i Z zawierają współrzędne dla danych U, V i
W. Powyższe macierze muszą być monotoniczne i 3-D (macierze o postaci generowanej przez funkcję meshgrid). Parametry startx, starty i startz
określają położenia początkowe środków wstęg linii prądu.

Skręcenie wstęg linii prądu jest proporcjonalne do rotacji pola wektorowego. Grubość wstęg jest obliczana automatycznie. Zalecane jest określenie
współczynnika skali wyświetlanych danych DataAspectRatio (funkcja daspect) przed użyciem funkcji streamribbon.

background image

29

Funkcja streamribbon

W przypadku pominięcia macierzy współrzędnych X, Y i Z we funkcji:

streamribbon(U,V,W,startx,starty,startz)

macierze X, Y i Z są przyjmowane zgodnie z poleceniem:

[X,Y,Z] = meshgrid(1:n,1:m,1:p) gdzie [m,n,p] = size(U).

Funkcja:

streamribbon(vertices,X,Y,Z,cav,speed)

przyjmuje wcześniej przeliczone wierzchołki linii prądu, prędkość kątową rotacji i prędkość przepływu. Macierz vertices jest macierzą obiektową (cell array)
wektorów linii prądu (tak, jak w przypadku funkcji stream3). Macierze X, Y, Z, cav i speed są macierzami 3-D.

background image

30

Funkcja streamribbon

W przypadku funkcji:

streamribbon(vertices,cav,speed)

macierze współrzędnych X, Y i Z są przyjmowane zgodnie z poleceniem:

[X,Y,Z] = meshgrid(1:n,1:m,1:p) gdzie [m,n,p] = size(cav)

Funkcja:

streamribbon(vertices,twistangle)

wykorzystuje macierz obiektową (cell array) wektorów kąta skręcenia określającą skręcenie wstęg linii prądu (w radianach). Wymiary odpowiadających sobie elementów macierzy wierzchołków oraz kątów skręcenia
muszą być sobie równe.

W przypadku funkcji:

streamribbon(...,width)

istnieje możliwość określenia grubości wstęg linii prądu.

background image

31

Funkcja streamribbon

Przykład 1:
Przy pomocy wykresu wstęgowego linii prądu przedstawić strumień wiatru. Dane obejmują współrzędne prędkości strumienia wiatru, składowe wektorów prędkości i położenie początkowe wstęg linii
prądu.

load wind
[sx sy sz] = meshgrid(80,20:10:50,0:5:15);
daspect([1 1 1])
streamribbon(x,y,z,u,v,w,sx,sy,sz);

%-----Deficja widoku i oświetlenia

axis tight
shading interp;
view(3);
camlight; lighting gouraud

background image

32

Funkcja streamribbon

background image

33

Funkcja streamribbon

Przykład 2:
Wykorzystać wcześniej wyznaczone wierzchołki linii prądu (funkcja stream3), prędkość kątową rotacji (curl) oraz prędkość:

Powyższe wielkości pozwalają zmodyfikować początkowo wczytane dane zwarte w pliku wind.mat. Prędkość wiatru zostaje zredukowana o 10 w porównaniu z prędkością wiatru z poprzedniego przypadku.

load wind
[sx sy sz] = meshgrid(80,20:10:50,0:5:15);
daspect([1 1 1])
verts = stream3(x,y,z,u,v,w,sx,sy,sz);
cav = curl(x,y,z,u,v,w);
spd = sqrt(u.^2 + v.^2 + w.^2).*.1;
streamribbon(verts,x,y,z,cav,spd);

2

2

2

w

v

u

background image

34

Funkcja streamribbon

%-----Definicja widoku i oświetlenia

axis tight
shading interp
view(3)
camlight; lighting gouraud

background image

35

Funkcja streamribbon

background image

36

Funkcja streamribbon

Przykład 3:
W przykładzie tym określony jest kąt skręcenia wstęgi przepływu:

t = 0:.15:15;
verts = {[cos(t)' sin(t)' (t/3)']};
twistangle = {cos(t)'};
daspect([1 1 1])
streamribbon(verts,twistangle);

%-----Definicja widoku i oświetlenia

axis tight
shading interp;
view(3);
camlight; lighting gouraud

background image

37

Funkcja streamribbon

background image

38

Funkcja streamribbon

Przykład 4:
Połączenie wykresu stożkowego (funkcja coneplot) i wstęg strumienia w jednym oknie rysunkowym:

%-----Definicja macierzy 3-D: x, y, z, u, v, w

xmin = -7; xmax = 7;
ymin = -7; ymax = 7;
zmin = -7; zmax = 7;
x = linspace(xmin,xmax,30);
y = linspace(ymin,ymax,20);
z = linspace(zmin,zmax,20);
[x y z] = meshgrid(x,y,z);
u = y; v = -x; w = 0*x+1;
daspect([1 1 1]);
[cx cy cz] = meshgrid(linspace(xmin,xmax,30),...
linspace(ymin,ymax,30),[-3 4]);

background image

39

Funkcja streamribbon

h = coneplot(x,y,z,u,v,w,cx,cy,cz,'quiver');
set(h,'color','k');

%-----Wykres dwóch zbiorów wstęg

[sx sy sz] = meshgrid([-1 0 1],[-1 0 1],-6);
streamribbon(x,y,z,u,v,w,sx,sy,sz);
[sx sy sz] = meshgrid([1:6],[0],-6);
streamribbon(x,y,z,u,v,w,sx,sy,sz);

%-----Definicja widoku i oświetlenia

shading interp
view(-30,10) ; axis off tight
camproj perspective; camva(66); camlookat;
camdolly(0,0,.5,'fixtarget')
camlight

background image

40

Funkcja streamribbon


Document Outline


Wyszukiwarka

Podobne podstrony:
06 Testy korelacjiid 6413 ppt
06 Napięcie powrotneid 6337 ppt
OPIS JAKO ĆWICZENIE W MÓWIENIU I PISANIU W ppt
2007 06 Praca z grafiką z linii komend [Grafika]
2008 06 Edytor grafiki wektorowej Inkscape [Grafika]
06 Opinie i orzeczeniaid 6347 ppt
06 kURS Wykł 06 Ruch drgającyid 6140 ppt
2 ĆWICZENIA ROZLUZNIAJĄCEid 19459 ppt
11 06 11 20id 12326 ppt
05 cwiczenie grafika
06 błąd kotwiczeniaid 6125 ppt
01 cwiczenie podstawyid 2794 ppt
03 cwiczenie3 macierze2id 4342 ppt

więcej podobnych podstron