Ugrás a tartalomhoz

Impulzív jelenségek modelljei

Karsai János

Typotex

1.3. Mozgás pályájának megjelenítése

1.3. Mozgás pályájának megjelenítése

Most néhány alapvető vizualizációs módszerrel ismerkedünk meg. Tudjuk, hogy egy térbeli (síkbeli) mozgás pályáját paraméteres görbe írja le, ahol a paraméter a t idő. Ez az ábrázolás azonban csak a koordináták egymáshoz viszonyított változását mutatja, az időbeli változást a hagyományos módon nem tudjuk követni. Ehhez a mozgás magasabb dimenzióban ábrázolható grafikonjára lenne szükség. A számítógépes ábrázolás azonban lehetővé teszi, hogy az újabb dimenziót – az időt – is megjeleníthessük a pályát tartalmazó 3D ábrán. Ennek néhány egyszerű módja:

  • a sebességvektorok ábrázolása,

  • a paraméteres görbe színezése,

  • a mozgó pont idő szerinti animációja a pálya mentén,

  • az animáció kockáit együtt tartalmazó úgynevezett stroboszkópikus ábra.

Az alább vázolt sémák bonyolultabb esetekre is alkalmazhatók, hiszen a pályát leíró paraméteres görbe nem csak explicit képlettel, hanem például egy differenciálegyenlet megoldásaként is megadható. Az alábbiakban lépésenként vázoljuk az eljárást.

Az ábrázolás lépései

  • A pályagörbe megadása

Legyen pcurve[t] a pályát leíró függvény, t0 és t1 a kezdeti és végső időpontok:

pcurve[t_]:={Cos[t],Sin[t],Cos[3t]};

pcurve [ t_ ] := { Cos [ t ] , Sin [ t ] , Cos [ 3 ? t ] } ;

t0=0; t1=2?; dt=(?/6);

t0 = 0 ; t1 = 2 ? ? ; dt = ? 6 ;

  • Ábrázolás színezéssel, sebességvektorok

A pálya színe lineárisan változik az idő haladtával. A színekkel kapcsolatosan részletes információk a Mathematica Help-ben találhatók (Hue

Hue , ...).

color[t_]:=Hue[(t–t0/t1–t0)];

color [ t_ ] := Hue [ t - t0 t1 - t0 ] ;

plt=ParametricPlot3D[Evaluate[Append[pcurve[t],color[t]]],{t,t0,t1},AspectRatio›Automatic];

plt = ParametricPlot3D [ Evaluate [ Append [ pcurve [ t ] , color [ t ] ] ] , { t , t0 , t1 } , AspectRatio Automatic ] ;

Valamely t pillanatban a sebességvektor a pálya idő szerinti deriváltja. A vektorokat egy idősorozat elemeiben számoljuk ki és a ListPlotVectorField3D utasítással (Graphics`PlotField3D` programcsomag) ábrázoljuk.

tanvec=Table[{pcurve[t],(pcurve^'[t]/3)},{t,t0,t1,dt}];

tanvec = Table [ { pcurve [ t ] , pcurve ' [ t ] 3 } , { t , t0 , t1 , dt } ] ;

pltvec=ListPlotVectorField3D[tanvec];

pltvec = ListPlotVectorField3D [ tanvec ] ;

Show[plt,pltvec];

Show [ plt , pltvec ] ;

  • Mozgásanimáció E

    E

Hasonlóan a sebességvektorokhoz, a pálya mentén mozgó pontot egy lista elemeiben tároljuk. Ugyanazt a színezést használjuk, mint a görbe ábrázolásánál.

pts=Table[{PointSize[0.05],color[t],Point[pcurve[t]]},{t,t0,t1,dt}];

pts = Table [ { PointSize [ 0.05 ] , color [ t ] , Point [ pcurve [ t ] ] } , { t , t0 , t1 , dt } ] ;

ani=Table[Show[plt,Graphics3D[pts[[i]]]],{i,1,Length[pts]}];

ani = Table [ Show [ plt , Graphics3D [ pts [ i ] ] ] , { i , 1 , Length [ pts ] } ] ;

  • Stroboszkópikus ábra: a képkockák együtt

Show[ani];

Show [ ani ] ;

A pontok helyzetéből következtethetünk a változási sebességre. Ebben az esetben az elhelyezkedés egyenletes változási sebességre utal.

A 2D eset

Síkbeli ábrázolásnál a lépések hasonlóak. Probléma azonban, hogy a ParametricPlot utasításban nem adhatunk meg színkoordinátát. Ezért készítettük el a ParametricPlotColor függvényt.

  • A pályagörbe megadása

pcurve2D[t_]:=({Cos[t],Sin[t]}/t+3); t0=1;t1=6?; dt=(?/4);

pcurve2D [ t_ ] := { Cos [ t ] , Sin [ t ] } t + 3 ; t0 = 1 ; t1 = 6 ? ? ; dt = ? 4 ;

  • Ábrázolás színezéssel, sebességvektorok

color[t_]:=Hue[(t–t0/t1–t0)];

color [ t_ ] := Hue [ t - t0 t1 - t0 ] ;

plt=ParametricPlotColor[Evaluate[Flatten[{pcurve2D[t],color[t]}]], {t,t0,t1},AspectRatio›Automatic,PlotPoints›100,PlotRange›All];

plt = ParametricPlotColor [ Evaluate [ Flatten [ { pcurve2D [ t ] , color [ t ] } ] ] , { t , t0 , t1 } , AspectRatio Automatic , PlotPoints 100 , PlotRange All ] ;

Az érintővektorokat a ListPlotVectorField utasítással ábrázolhatjuk (Graphics`PlotField` programcsomag).

tanvec=Table[{pcurve2D[t],(pcurve2D^'[t]/2)},{t,t0,t1,dt}];

tanvec = Table [ { pcurve2D [ t ] , pcurve2D ' [ t ] 2 } , { t , t0 , t1 , dt } ] ;

pltvec=ListPlotVectorField[tanvec];

pltvec = ListPlotVectorField [ tanvec ] ;

Show[plt,pltvec];

Show [ plt , pltvec ] ;

  • Mozgásanimáció E

    E

pts=Table[{PointSize[0.1],color[t],Point[pcurve2D[t]]},{t,t0,t1,dt}];

pts = Table [ { PointSize [ 0.1 ] , color [ t ] , Point [ pcurve2D [ t ] ] } , { t , t0 , t1 , dt } ] ;

ani=Table[Show[plt,Graphics[pts[[i]]]],{i,1,Length[pts]}];

ani = Table [ Show [ plt , Graphics [ pts [ i ] ] ] , { i , 1 , Length [ pts ] } ] ;

  • Stroboszkópikus ábra: a képkockák együtt

Show[ani];

Show [ ani ] ;

1.3.1. Kísérlet.

Készítsünk olyan animációt, ami a mozgó pontok helyett a sebességvektorok változását mutatja.