08 cwiczenie obiekty

background image

1

Obiektowy system graficzny

dr inż. Henryk Olszewski

background image

2

Ćwiczenia:
Przywrócić standardowe wartości obiektu root:

»

reset(0)

Wyświetlenie bieżącego ustawienia cechy ScreenSize obiektu
root:

»

get(0,’ScreenSize’)

Uaktywnienie układu współrzędnych o identyfikatorze id:

»

axes(id)

Operacje na obiektach graficznych -

ćwiczenia

background image

3

Przykład przypisania zmiennej hh2 wartości identyfikatora:

»

x=0:pi/15:6*pi;

»

hh2=plot(x,cos(2.*x)./sqrt(x+1),’:’,x,sin(x.*2));

Zmienna hh2 jest wektorem dwuelementowym i reprezentuje
wykonanie wykresu:

»

hh2

hh2=

3.0010

102.0009

Do każdego można się odwołać (poprzez nazwę zmiennej
zawierającej identyfikator obiektu), oczytać – funkcja get lub
zmienić jego właściwości – funkcja set. Nie zaleca się stosowanie
identyfikatorów w postaci liczb.

Operacje na obiektach graficznych -

ćwiczenia

background image

4

Operacje na obiektach graficznych -

ćwiczenia

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

background image

5

Każdy obiekt graficzny posiada własną bazę danych, której pola
zwierają informacje o cechach (argumentach) tego obiektu.
Nazwy i ilość pól zależą od typu obiektu. Wartości pól
(argumenty obiektów) są określane w momencie tworzenia
obiektów.

Pobranie informacji o aktywnym oknie:

»

get(gcf)

Pobranie informacji o aktywnym układzie współrzędnych:

»

get(gca)

Pobranie informacji o aktywnym obiekcie:

»

get(gco)

Dla innych obiektów pierwszym argumentem funkcji get i set
jest identyfikator (handle).

Cechy obiektów graficznych -

ćwiczenia

background image

6

Rezultat działania funkcji get:

»

get(hh2(1))

Color = [0 0 1]
EraseMode = normal
LineStyle = :
LineWidth = [0.5]
Marker = none
MarkerSize = [6]
MarkerEdgeColor = auto
MarkerFaceColor = none
XData = [ (1 by 91) double array]
YData = [ (1 by 91) double array]
ZData = []

Cechy obiektów graficznych -

ćwiczenia

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

background image

7

Rezultat działania funkcji get:

BeingDeleted = off

ButtonDownFcn =

Children = []

Clipping = on

CreateFcn =

DeleteFcn =

BusyAction = queue

HandleVisibility = on

HitTest = on

Interruptible = on

Parent = [101.001]

Cechy obiektów graficznych -

ćwiczenia

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

background image

8

Rezultat działania funkcji get:

Selected = off

SelectionHighlight = on

Tag =

Type = line

UIContextMenu = []

UserData = []

Visible = on

Cechy obiektów graficznych -

ćwiczenia

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

background image

9

Informacje o przodku obiektu:

»

hp=get(hh2(1),’Parent’);get(hp)

Funkcja set(handle) umożliwia wyświetlenie listę wariantów

wartości cech obiektów. Bieżące wartości cech (atrybuty) są

umieszczone w nawiasach okrągłych:

»

set(hh2(1))

Color
EraseMode: [ {normal} | background | xor | none ]
LineStyle: [ {-} | -- | : | -. | none ]
LineWidth
Marker: [ + | o | * | . | x | square | diamond | v |

^

]| > | < | pentagram | hexagram | {none} ]

MarkerSize
MarkerEdgeColor: [ none | {auto} ] -or- a ColorSpec.

Cechy obiektów graficznych -

ćwiczenia

background image

10

XData
YData
ZData

ButtonDownFcn: string -or- function handle -or- cell

array

Children
Clipping: [ {on} | off ]
CreateFcn: string -or- function handle -or- cell array
DeleteFcn: string -or- function handle -or- cell array
BusyAction: [ {queue} | cancel ]
HandleVisibility: [ {on} | callback | off ]
HitTest: [ {on} | off ]

Cechy obiektów graficznych -

ćwiczenia

background image

11

Interruptible: [ {on} | off ]

Parent

Selected: [ on | off ]

SelectionHighlight: [ {on} | off ]

Tag

UIContextMenu

UserData

Visible: [ {on} | off ]

Cechy obiektów graficznych -

ćwiczenia

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

background image

12

Zmiana wartości cechy dotyczącej kolorowi w obiekcie o
identyfikatorze hh2(1):

set(hh2(1),’Color’,’r’)

powoduje zmianę koloru pierwszej linii na kolor czerwony.

Cechy obiektów graficznych -

ćwiczenia

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

background image

13

Dopuszczalna jest zmiana grupy (nieograniczonej) cech obiektów
w jednym poleceniu set:

set(hh2(1),’Color’,’b’,’LineWidth’,2)

Cechy obiektów graficznych -

ćwiczenia

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

background image

14

Zmiana rodzaju linii na linię ciągłą, pogrubioną:

set(hh2(1),’LineStyle’,’-’,’LineWidth’,2)

Cechy obiektów mogą być określone w momencie tworzenia
obiektów. Dalsze zmiany obiektów wymagają znajomości ich
identyfikatorów.

Cechy obiektów graficznych -

ćwiczenia

0

2

4

6

8

10

12

14

16

18

20

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

background image

15

W programie MATLAB można ustawić domyślne wartości cech
obiektów graficznych:

set(hh2(1),’DefaultLineStyle’,’-’,...

’ DefaultLineWidth’,2.0)

Powyższe polecenia można zapisać w plikach konfiguracyjnych
matlabrc.m lub startup.m.

Cechy obiektów graficznych –

ćwiczenia

background image

16

Cechy obiektów graficznych

background image

17

Cechy obiektów graficznych

background image

18

Funkcje dotyczące odbicia i źródła światła:

źródło światła, współrzędne kamery:

camlight

Ćwiczenie 1:

t=2/3:1/6:.7*pi;

y=sin(t)

[a,b,c]=cylinder(y);

%dane do narysowania bryły

subplot(1,2,1),

h1=surf(a,b,c),

title(‘dzban’)

set(h1,’facecolor’,’y’)

%nadanie bryle koloru żółtego

subplot(1,2,2),

h2=surf(a,b,c)

%druga bryła (prawa)

set(h2, ‘facelighting’,’phong’,’backfacelight’,’lit’)

%odblaski

Cechy obiektów graficznych – źródła

światła

background image

19

set(h2,’facecolor’,’y’) %nadanie koloru żółtego

light(‘position’,[-2,-3,6])

%utworzenie obiektu

%źródła światła

title(‘dzban odbijający światło’)

Cechy obiektów graficznych – źródła

światła

background image

20

Cechy obiektów graficznych – źródła

światła

background image

21

Tekstura – nakładanie płaskiego rysunku na zakrzywioną

powierzchnię trójwymiarową

%kontynuacja poprzedniego ćwiczenia

load mandrill

%wczytanie ilustracji, tablice X, map

x=[X X];

%dwukrotne powtórzenie ilustracji

x=flipud(x);

%odbicie lustrzane ilustracji:

%góra/dół

set(h1,’CData’,x,’FaceColor’,’texturemap’)

%nałożenie

%tekstury

colormap(map)

%paleta barw

set(h1,’facelighting’,’phong’,’backfacelight’,’lit’)

%odbicie światła

light(‘position’,[-2,-3,.6])

%utworzenie obiektu

%źródło światła

Cechy obiektów graficznych – tekstury

background image

22

brighten(0.05)

%rozjaśnienie rysunku

W rysunku wykorzystano plik z grafiką:

matlab\toolbox\matlab\demos\mandrill.mat

Funkcję findobj użyto w celu znalezienia identyfikatora
powierzchni narysowanej bryły. Nałożenie tekstury na obiekt
graficzny wymaga przypisania odpowiednich wartości polom tego
obiektu:

texturemap

do pola:

FaceColor

x=[X,X]

do pola:

CData

Cechy obiektów graficznych – tekstury

background image

23

Cechy obiektów graficznych – tekstury

background image

24

Ćwiczenie 2:

Narysować trójwymiarowy wykres funkcji: z(x,y)=sin(x)
+cos(2*y)
w przedziale: x,y

<-2

,2

>.

Zmienić cechy obiektu axis: typ linii pomocniczych na linie
ciągłe, położenia oznaczeń na osiach x i y określone są zaś
wektorem [-2

, -

, 0,

, 2

].

Cechy obiektów graficznych

-6.2832

-3.1416

0

3.1416

6.2832

-6.2832

-3.1416

0

3.1416

6.2832

-2

-1

0

1

2

background image

25

Ćwiczenie 2:
Polecenia skryptu osie.m:

clf

%czyszczenie aktywnego okna rysunkowego

[x,y]=meshgrid(-2*pi:0.2:2*pi);
z=sin(x)+cos(2*y);
mesh(x,y,z)
grid on;

%dodanie do rysunku siatki

axis=([-2*pi 2*pi -2*pi 2*pi])

%ustawienie zakresu osi

xt=-2*pi:pi:2*pi;
yt=-2*pi:pi:2*pi;
set(gca,'GridLineStyle','-')

%zmiana cechy obiektu

set(gca,'XTick',xt)

%określonego przez funkcję gca

set(gca,'YTick',yt)

Cechy obiektów graficznych

background image

26

-6.2832

-3.1416

0

3.1416

6.2832

-6.2832

-3.1416

0

3.1416

6.2832

-2

-1

0

1

2

Ćwiczenie 2:

Cechy obiektów graficznych

background image

27

Animacja – przykłady (3)

Wizualizacja ruchu cząsteczek powietrza
Wizualizacja ruchu cząsteczek powietrza jest pomocna przy analizie
kierunku przepływu powietrza i badaniu pola prędkości. Cząsteczki
powietrza (przedstawione za pomocą markerów) przesuwają się
wzdłuż linii prądu powietrza, Prędkość każdej cząstki jest
proporcjonalna do amplitudy (wartości bezwzględnej) pola prędkości
w każdym jego punkcie znajdującym się na linii prądu.

1. Warunki początkowe i zakres obliczeń
Analiza objętość powietrza na początku obliczeń obejmuje:

load wind

[sx sy sz] = meshgrid(100,20:2:50,5);

background image

28

Animacja – przykłady (3)

2. Wykres linii przepływu cząsteczek powietrza
W przykładzie użyto funkcje rysujące linie przepływu stream3,
streamline wizualizujące ruch cząsteczek powietrza. Parametrami
funkcji stream3 są: x, y, u – współrzędne pola prędkości, u, v, w
wartości pola prędkości, sx,sy, sz – początkowe położenie linii prądu.

Funkcja view definiuje punkt, z którego oglądamy wykres. Funkcja
view(2) ustala widok dwuwymiarowy. Funkcja view(3) ustala widok
trójwymiarowy izoparametryczny.

verts = stream3(x,y,z,u,v,w,sx,sy,sz);
sl = streamline(verts);
view(3)

background image

29

Animacja – przykłady (3)

100

110

120

130

20

30

40

50

3.5

4

4.5

5

background image

30

Animacja – przykłady (3)

3. Defincja widoku
Wszystkie linie prądu rozpoczynają się z płaszczyzny z = 5, niektóre linie prądu
spadają spiralnie w dół. Kształt linii prądu określa miejsce, z którego będzie
oglądana animacja (tak by linie prądu znające się w pobliżu płaszczyzny z = 5 i
linie spiralne były widoczne) – funkcja view.

Przyjęto współczynniki perspektywy [2 2 0.125] (polecenie daspect), co
pozwala na uzyskanie największej rozdzielczości w kierunku osi z układu
współrzędnych dzięki czemu wyeksponowane są spiralne linie prądu.

Przy pomocy polecenia axis tight zamrożono osie wykresu (odpowiednik
polecenie axis manual). Wykres 3D rysowany objęty jest krawędziami
prostopadłościanu – polecenie box on.

view(-10.5,18)

daspect([2 2 0.125])
axis tight; box on

background image

31

Animacja – przykłady (3)

100

105

110

115

120

125

130

20

30

40

50

3.4

3.6

3.8

4

4.2

4.4

4.6

4.8

5

background image

32

Animacja – przykłady (3)

4. Wizualizacja prędkości cząsteczek powietrza
W pierwszym etapie określane są prędkości wzdłuż linii prądu w
miejscach, w których rysowane są cząsteczki powietrza (za pomocą
markerów). Funkcja interpstreamspeed oblicza powyższe parametry
w oparciu o wartości współrzędnych linii prądu oraz prędkości
cząsteczek. Przyjęto współczynnik scali 0,05 w celu zwiększenia
liczby interpolowanych wartości prędkości.

W celu zwiększenia szybkości animacji ustalono dla osi wykresu
właściwość DrawMode=fast (set(gca,'drawmode','fast').

Funkcja streamparticles pozwala na ustalenie następujących
właściwości:
1) animacja zostanie uruchomiona 10 razy (właściwość Animate),
2) ruch wszystkich cząsteczek powietrza rozpocznie się równocześnie
(właściwość ParticleAlignment),

background image

33

Animacja – przykłady (3)

3) krawędzie markerów cząsteczek powietrza nie są rysowane
(właściwość MarkerEdgeColor), co zazwyczaj zwiększa szybkość
animacji,
4) kolor markerów ustalona na czerwony (właściwość
MarkerFaceColor),
5) markery są rysowane w postaci kółek (właściwość Marker).

iverts = interpstreamspeed(x,y,z,u,v,w,verts,0.05);
set(gca,'drawmode','fast');
streamparticles(iverts,15,...
'Animate',10,...
'ParticleAlignment','on',...
'MarkerEdgeColor','none',...
'MarkerFaceColor','red',...
'Marker','o');

background image

34

Animacja – przykłady (4)

W przykładzie tym kamera przemieszcza się w trójwymiarowej przestrzeni rysunku wiru powietrza. W
programie MATLAB istnieje możliwość przesuwania kamery przez poszczególne regiony sceny
wykresu
(ostrość kamery jest na bieżąco dostrajana na obserwowane obiekty) lub poruszania kamery
stale skierowanej na określony punkt wykresu
(ostrość kamery jest ustawiona na ten punkt).

W celu osiągnięcia powyższych efektów przesuwamy krokowo kamerę wzdłuż zadanej osi x. Efekt

lotu kamery uzyskamy równocześnie przesuwając położenie kamery i zmieniając punkt, na który
skierowana jest kamera

W przykładzie tym zamodelowano ruch kamery wewnątrz izopowietrzni wiru powietrza

(powierzchni, na której cząstki powietrza mają stałą prędkość) wybranej z przestrzennego modelu pola
prędkości cząstek powietrza tornada zaobserwowanego w 1998 r. w stanie Teksas, USA.

background image

35

Animacja – przykłady (4)

W przykładzie zastosowano:
izopowierzchnie i wykresy, w których punkty zaznaczane są markerami w postaci stożków, w celu

ilustracji przepływu powietrza w zadanej objętości powietrza,

źródła światła w oświetlenia izopowierzchni i stożków w zadanej objętości powietrza,
linie prądu w celu zdefiniowania trajektorii ruchu kamery,
równoczesną zmianę położenia kamery, punktu na który skierowana jest kamera oraz źródeł światła.

1. Wczytanie danych i ich wizualizacja

W pierwszy etapie animacji wczytano dane wykresu z pliku wind.mat i na ich postawie wykonano rysunek
przepływu powietrza przy pomocy funkcji coneplot.

load wind
wind_speed = sqrt(u.^2 + v.^2 + w.^2);

background image

36

Animacja – przykłady (4)

W programie MATLAB funkcja patch tworzy wypełnione wielokąty zwane płatami (ang. patches).

id=patch(x,y,c)
id=patch(x,y,z,c)
id=patch(x,y,c,nazwa_cechy1, wartość1,...
nazwa_cechy2, wartość2,...)
id=patch(x,y,z,c,nazwa_cechy1, wartość1,...
nazwa_cechy2, wartość2,...)

Wektory x, y, z określają współrzędne wierzchołków wielokąta, zaś c określa jego kolor. Kolor jest określony przez

podanie indeksu koloru w powiązanej z aktualnym układem mapie kolorów. Argument c może być:
1) skalarem – płat będzie jednokolorowy,
2) jednoznakowym ciągiem – płat będzie jednokolorowy, oznaczenia
kolorów są takie same jak w przypadku funkcji plot,

background image

37

Animacja – przykłady (4)

3) wektorem o takim samym wymiarze jak wektory x, y, z elementy
wektora określają kolory w odpowiednich wierzchołkach, kolory
poszczególnych punktów wielokąta będą miały kolory pośrednie,
płynnie zmieniające się w zależności od położenia punktu, kolor
każdego punktu będzie wynikiem interpolacji dwuliniowej kolorów
wierzchołków.

Argumenty x, y, z mogą być macierzami o identycznych wymiarach. Utworzony zostanie jeden płat dla każdej
kolumny macierzy. W tym przypadku argument c będzie wektorem wierszowym dla płatów jednokolorowych i macierzą
dla płatów o kolorach interpolowanych.

Funkcja patch zwraca kolumnowy wektor identyfikatorów obiektów typu patch. Za każdą trójką parametrów x, y, z
może wystąpić zestaw par: nazwa cechy, wartość cechy określającej dodatkowe cechy poszczególnych płatów.

background image

38

Animacja – przykłady (4)

Funkcja isosurface:

fv = isosurface(X,Y,Z,V,isovalue)

oblicza współrzędne izopowierzchni dla danych zdefiniowanych w zadanej objętości V, dla określonej wartości
parametru isovalue (wszystkie punkty izopowierzchni mają tę wartość parametru isovalue). Macierze X, Y i Z
określają dane analizowanej objętości, w której wyznaczana jest izopowierzchnia. W rezultacie otrzymujemy zmienną
fx zawierającą parametry siatki wielokątów i współrzędne wierzchołków izopowierzchni, które mogą być bezpośrednio
użyte jako dane funkcji patch.

hpatch = patch(isosurface(x,y,z,wind_speed,35));

Funkcja isonormals:

n = isonormals(X,Y,Z,V,vertices)

background image

39

Animacja – przykłady (4)

oblicza wektory normalne do izopowierzchni w jej wierzchołkach vertices dla gradientu danej objętości V.
Macierze X, Y i Z zawierają współrzędne objętości V. Obliczone normalne są zapamiętane w zmiennej n.

isonormals(x,y,z,wind_speed,hpatch)
set(hpatch,'FaceColor','red','EdgeColor','none');

Funkcja reducepatch:

reducepatch(p,r)

redukuje liczbę wypełnionych wielokątów zwanych płatami (ang. patches) zadanego obiektu p przy
zachowaniu ogólnego kształtu wyjściowego obiektu. Jeżeli r jest mniejsze niż 1, liczba wielokątów ulega
redukcji, np. dla r=0.2 liczba wielokątów (płatów) ulega zredukowaniu o 20%. Jeżeli r jest większe lub równe 1,
to r jest docelową liczbą wielokątów, np. dla r=400 liczba wielokąt zostaje zredukowana do 400.

background image

40

Animacja – przykłady (4)

[f vt] = reducepatch(isosurface(x,y,z,wind_speed,45),0.05);

Funkcja daspect umożliwia określenie współczynników skali dla osi x, y i z układu współrzędnych. Przyjęcie współczynników skali
[1,1,1] przed rysowaniem markerów - stożków pozwala na właściwe przeliczenie wymiarów markerów dla końcowego widoku:

daspect([1,1,1]);

Funkcja coneplot:
coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz)
wyświetla wektory prędkości w postaci stożków
rysowanych w punktach pola prędkości, których osie są zgodne z kierunkami
wektorów prędkości, o długościach proporcjonalnych do długości wektorów prędkości.
X, Y, Z – współrzędne punktów pola prędkości,
U, V, W – składowe wektorów prędkości, macierze te muszą mięć te
same wymiary, monotoniczne (podobnie jak dane generowane przez
funkcję meshgrid),
Cx, Cy, Cz – położenie markerów – stożków w polu prędkości.

background image

41

Animacja – przykłady (4)

hcone = coneplot(x,y,z,u,v,w,vt(:,1),vt(:,2),vt(:,3),2);
set(hcone,'FaceColor','blue','EdgeColor','none');

2. Parametry widoku
Kolejnym etapem animacji jest ustalenie parametrów widoku. Przyjęcie perspektywy umożliwia uzyskanie efektu głębi podczas
ruchu kamery wewnątrz izopowierzchni (funkcja camproj). Przypisanie kątowi widoku kamery stałej wartości zabezpiecza przed
automatyczną regulacją kąta tak, by wszystkie obiekty znajdowały się w obserwowanej scenie (również i powiększenie przyjmuje
zadaną wielkość – funkcja camva).

camproj perspective
camva(25)

3. Źródła światła
Ustawienie źródła światła w miejscu ustawienia kamery oraz zmiana współczynników odbicia światła izopowierzchni i stożków
poprawia realizm sceny.

background image

42

Animacja – przykłady (4)

Ustawienie źródła światła w miejscu ustawienia kamery pozwala na podświetlanie (efekt reflektora) filmowanej
sceny podczas przesuwania kamery wewnątrz izopowierzchni (funkcja camlight). Określenie współczynników
odbicia izopowierzchni umożliwia uzyskanie efektu ciemnego pomieszczenia (własność AmbientStrength =
0.1
). Dodatkowo przyjęto wysoki współczynnik odbicia materiału (własność SpecularStrength = 1 oraz
DiffuseStrength = 1). Przyjęcie w przypadku stożków cechy SpecularStrength = 1 pozwala na uzyskanie
wysokiego odbicia światła:

hlight = camlight('headlight');
set(hpatch,'AmbientStrength',.1,...
'SpecularStrength',1,...
'DiffuseStrength',1);
set(hcone,'SpecularStrength',1);
set(gcf,'Color','k')

background image

43

Animacja – przykłady (4)

4. Cieniowanie sceny
W przykładzie ustalono źródła światła, stąd konieczne jest wykonanie cieniowania sceny.

lighting gouraud

set(gcf,'Renderer','OpenGL')

lub:

lighting phong
set(gcf,'Renderer','zbuffer')

5. Definiowanie trajektorii kamery i linii prądu
Linie prądu obrazują kierunek przepływu w polu prędkości. W przykładzie użyto współrzędne x, y i z danych pojedynczej
linii prądu do zdefiniowania trajektorii przebiegającej przez zadaną objętość. Po trajektorii tej przemieszcza się kamera.

background image

44

Animacja – przykłady (4)

Wygenerowano linię prądu rozpoczynające się w punkcie o współrzędnych: x = 80, y = 30, z = 11. Przy
pomocy funkcji get pobrano współrzędne x, y, z linii prądu, następnie usunięto linię prądu (w programie
MATLAB istnieje również możliwość użycia funkcji stream3 do obliczeń parametrów linii prądu bez rysowania jej
w oknie rysunkowym).

hsline = streamline(x,y,z,u,v,w,80,30,11);

xd = get(hsline,'XData');
yd = get(hsline,'YData');
zd = get(hsline,'ZData');
delete(hsline)

6. Przelot kamery
W celu uzyskania przelotu kamery przez scenę zastosowano zmianę położenia kamery i punktu, na który
skierowana jest kamera wzdłuż tej samej trajektorii.

background image

45

Animacja – przykłady (4)

W przykładzie celem kamery jest pięć elementów znajdujących się przed kamerą wzdłuż osi x lokalnego układu współrzędnych
kamery. Dodanie niewielkiej wartości do położenia kamery w kierunku x lokalnego układu współrzędnych zabezpiecza przed
przypadkiem, w którym kamera i cel kamery znajdują się w jednym punkcie (co następuje, gdy spełniony jest warunek: xd(n) =
xd(n+5)
). Przelot kamery uzyskano:
1) zmieniając położenie kamery i celu kamery – obydwa obiekty poruszają
się wzdłuż zadanych współrzędnych linii prądu,
2) przesuwając źródło światła wraz z kamerą,
3) używając funkcję drawnow wyświetlającą wynik animacji

for i=1:length(xd)-50
campos([xd(i),yd(i),zd(i)])
camtarget([xd(i+5)+min(xd)/100,yd(i),zd(i)])
camlight(hlight,'headlight')
drawnow
end

background image

46

Animacja – przykłady (4)

background image

47

Animacja – przykłady (4)

background image

48

Animacja – przykłady (4)

background image

49

Dziękuję za uwagę


Document Outline


Wyszukiwarka

Podobne podstrony:
08, Cwiczenie 5 c, TARASIUK
08, Cwiczenie 5 a, SPRAWOZDANIE Z ?WICZENIA NR 12
2010 08 Ćwiczenie 4 Podsłuchiwac różnych sygnałów
08, Cwiczenie 08 b, Jacek Wilczyński
08, Cwiczenie 5 d, Krzysztof MICHALAK84092
2013 03 08, ćwiczenia
08. Cwiczenia bierne, Kinezyterapia
08 cwiczenie 8
Zadania na zaliczenie 12.01.08, Ćwiczenia Vistula
Pytania z Tematu nr 8 Ćwiczenia obiektowe Baza IVECO, Wiedza pożarnicza, Pytania i odpowiedziy do z
Drewno 2007 08 cwiczenia id 141878
Pytania z Tematu nr 8 Ćwiczenia obiektowe, Wiedza pożarnicza, Pytania i odpowiedziy do zajęć lekc
05.05.08, Ćwiczenia
Pytania z ćwiczeń obiektowych CH Plaza
08 cwiczenia renty
prezentacja z cwiczen 16 12 08
Harmonogram ćwiczeń s5 2014 TABL 03 (08 10 14 )

więcej podobnych podstron