Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Breve seminario per gli alunni del corso Modeli fisci per la realt virtuale Fabio Scotti Universit degli studi di Milano
Dipartimento di Tecnologie per linformazione
Sommario
Introduzione allambiente Matlab mediante esempi applicativi Matlab per fare che cosa ? In che modo meglio procedere ? Tecniche di visualizzazione Esempi ed applicazioni con codice commentato Alcune applicazioni famose Toolbox Matlab per la realt virtuale
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
Qualche esempio
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
Matlab per
Acquisire dati (da sensori, telecamere, file, ) Elaborare dati Visualizzare dati e risultati Scrivere e verificare modelli (matematici, fisici, statici, dinamici) Risolvere equazioni (integrazione numerica e simbolica) Molte volte Matlab aiuta a pensare, verificare, simulare e CAPIRE !
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti 4
Un esempio spaziale
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
2. 3. 4. 5.
6.
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
Modi a n t ra u il di b iv a r enoiz di nu carc ru a lo con nu ep. os La gifa ru a n u p e us r c if ei cr tina reg enoiz ta vor t . i Soto is ta vor a eqlu noiz
a corda attaccata da a nu a p tre ad nu alta p o ra l tne e dala l tl a r ad a nu eata allineando onu accanto allatlro i a v ri cammni di e sa u ta ena l tniega r enoiz (mted o o tohsg) ni
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
10
Teniche di visualizzazione
Punti in 1-2-3D e nel tempo, superfici, vettori, flussi, volumi, animazioni
0.5
1.5
2.5
3.5
4.5
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
12
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
13
4 x
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
14
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
15
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
16
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
17
surf(Z);
hold on; plot3( xmax, ymax, Zmax, 'hg', 'Markersize', 15 ); hold off;
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
18
[u,v,w] = surfnorm(x,y,z);
6 4 2
0 -2 -4 -6 -8 4 2 3 0 0 -2 -4 -3 -4 -2 -1 2 1 4
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
19
0.5
-0.5 2 1 0 -1 -2 -2 -1 1 0 2
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
20
0.5
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
21
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
23
24
surf(z) lim=axis ; % registro gli assi for n=1 :50 % registra le immagini surf(sin(2*pi*n/50).*z) % abbellimenti grafici shading interp; colormap jet; savtoner save; axis(lim) F = getframe(gca); mov = addframe(mov,F); end mov = close(mov);
-5
-10 60 40 20 10 0 0 30 20 50 40
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
26
Un primo esempio
Decollo di un jet
Decollo di un jet
Vogliamo visualizzare la traiettoria del jet essendo note tutte le equazioni
Equazioni
t t roll(t) pitch(t) yaw(t) x(t) y(t) z(t)
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
28
Decollo di un jet
Costanti
ax = 6 ; % accelerazione in avanti del jet [m/s2]; az = 5 ; % accelerazione verso l'alto del jet [m/s2]; vx0 = 0; % parte da fermo % ricordiamo le formule da usare % velocita(t) = velocita'iniziale + accelerazione * t % spazio(t) = velocita'iniziale * t + 0.5 * accelerazione * t^2 X = []; Y = []; Z = [];
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
29
Decollo di un jet
for t = [0:0.05:10] % analizziamo 10 secondi con uno step di 0.05 secondi x = vx0 * t + 0.5 * ax * t^2 ; Vx = vx0 + ax * t ; if Vx<50 % sotto i 50 m/s non decolla z = 0; tempoDecollo = t; else % decolla z = 0.5 * az * (t-tempoDecollo)^2 ; end X = [ X x ]; Y = [ Y 0 ]; % non si muove mai lungo l'asse Y Z = [ Z z ]; end % approssiamo che il jet non ruoti lungo i suoi gli assi (!) % al massimo tranne che per il pitch (impennata) pitch = zeros(size(X)); % anche pitch = -1*X./max(X)*0.15*pi; roll = zeros(size(X)); yaw = zeros(size(X));
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
30
Decollo di un jet
subplot(1,4,[1 3])
plot3(X,Y,Z, '.');
grid on; xlabel('x [m]');ylabel('y [m]'); zlabel('z [m]'); subplot(1,4,4) trajectory2(0,0,0,0 , 0,0, 1,0,'tomcat') figure;
Visualizzazione
Decollo di un jet
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
32
Decollo di un jet
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
33
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
34
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
36
x = sin(b*y)+c*sin(b*x); y = sin(a*x)+d*sin(a*y);
X = [X x]; Y = [Y y]; if (~mod(i,10000) & i>0) plot(X,Y, 'k.', 'MarkerSize' , 1); title ( [ 'numero punti =' num2str(i)] ); drawnow; hold on; i end end
Lanca i a gr o p m a
pickover2.m
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
37
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
38
Le lettere dalla A alla Y stanno ai coefficienti quadratici dalla forma quadratica da -1.2 a 1.2 con passo 0.1
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti 39
sphere; axis equal; axis( [-5 5 -5 5 -5 5 ]); savtoner save; xlabel('x');ylabel('y'); zlabel('z');
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti 40
Attrattore di Lorentz
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti 41
solver
(ordinary differential equation )
X, Y, Z asse tempi
x, y, z Derivata di x,y,x
modello
a4 547.671
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
42
modello
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
43
File
integrazione.m
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
44
20
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
45
Superfici frattali
function a=plasma(n)
% Elegant, fast, non-recursive way to create a plasma % fractal PLASMA(n) takes one argument n , where % 2^(2+n) is the size of the square plasma matrix. % The default value of n is 6, which gives a % 256 x 256 matrix % % Arjun Viswanathan 1999 randn('state',sum(clock*100)); t=cputime; a=rand(4); if nargin<1 n=6; end for i=1:n; r=size(a,1);c=size(a,2); xi=[1:(r-1)/(2*r-1):r]; yi=[1:(c-1)/(2*c-1):c]; a=interp2(a,xi,yi','cubic'); step=2^(-i); dev=rand(size(a)).*step-2*step; a=a+dev; end
creaplasma.m
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
46
Superfici frattali
a = plasma(7); % cerca di NON superare 7.. la procedura e' ricorsiva! close all;
surfl(a);
shading flat; colormap winter; axis square; grid off; axis on; savtoner save figure;
pcolor(a);
creaplasma.m colormap
47
Composizioni frattali
Partendo sempre dalle matrici di plasma si combinano surf e plot per ottenere montagne e nubi. Eventualmente si aumenta il realismo calcolando la deformazione prospettica della matrice E possible calcolare le ombre e proiettarle
Top spin
Immaginiamo di dover simulare il moto di una pallina da tennis durante un servizio con top spin per un videogioco
Top spin = 2400 RPM (palla colpita in alto) Massa palla = 58 gr Diametro = 6 cm
(Dati Federazione Italiana Tennis)
Effetto Magnus
Leffetto della rotazione in volo di una sfera provoca una forza perpendicolare sia allasse di rotazione, sia allavanzamento: leffetto Magnus
FLift = 2 v r
Bourg, "Physics for game developers"
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
50
modello
y v x
% Forza di Magnus C = pi * RHO * RHO * radius^3 * omega; % inizializzo l'incremento a zero dy = zeros(2,1); % scrivo le equazioni della palla NOTA: dy(1)= dx ; dy(2)= dy dy(1) = vx + C / m * t * dy(2) % vx + contributo sull'asse x che nasce da vy dy(2) = vy + C / m * t * dy(1) - g * t; % vy + contributo sull'asse y che nasce da vx - accelerazione terrestre
File
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
modello.m
51
Prova a migliorare la visualizzazione, confrontando le traiettorie al variare dei parametri. Se vuoi disegnare pi curve sullo stesso grafico usa il comando: >> hold on
File
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
integrazione.m
52
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
53
http://www.mathworks.com/products/virtualreality/description1.html
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
54
Ricordiamoci per che ... .tutto parte da una buona idea ed un buon modello!
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
55
Esempi in Matlab
Bouncing ball >>vrbounce
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
56
Esempi in Matlab
Control inverted pendulum >>vrpend
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
57
Esempi in Matlab
Solar system >>vrplanets
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
58
Esempi in Matlab
Skoda Octavia Simulation >> vr_ocatvia
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
59
Esempi in rete
http://mehr.sharif.ir/~colahi/Projects/Project27.html
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
60
Esempi in rete
http://mehr.sharif.ir/~colahi/Projects/Project48.html
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
61
Riferimenti
1. 2. 3. 4. 5. 6. 7. 8. 9. www.mathworks.com Chaos and Fractals, a short trip in fractional dimensions. CSE L.Cavin, 2003, 2004 M_Map: A mapping package for Matlab Help in linea di Matlab, ver R14 http://www.fractal-landscapes.co.uk/photos.html http://mathworld.wolfram.com/StrangeAttractor.html http://media.ps2.gamespy.com Smash Court Tennis Pro Tournament 2 (PlayStation 2) http://it.wikipedia.org/wiki/Tennis D.M. Bourg, "Physics for game developers", O'Reilly, 2002
Matlab, modelli e realt virtuale Universit degli studi di Milano Fabio Scotti
62