Pohyb hmotného bodu po kružnici

Následující aplet umožňuje názorně zobrazit vektory rychlosti a zrychlení pohybujícícího se hmotného bodu po kružnici. Současně umožňuje pochopit směr dostředivého (normálového) zrychlení, které je dáno rozdílem rychlostí ve dvou různých časových okamžicích. Čím je rozdíl těchto dvou časů menší, tím spíše se shoduje směr zkonstruovaného zrychlení se zrychlením teoreticky odvozeným.
Pomocí posuvníků lze nastavit:
	poloměr r kružnice, po níž se hmotný bod pohybuje;
	periodu T s níž hmotný bod kružnici obíhá. Pozor: Situace je zobrazovaná staticky - pohyb bodu po kružnici je nutné simulovat pomocí posuvníku φ!
	úhel φ , který svírá průvodič hmotného bodu s kladnou částí osy x (není v apletu pojmenována), přičemž se tento úhel mění v intervalu <0; 4π>;
	časový interval Δt, který se projeví pouze tehdy, je-li zaškrnuta volba zobrazit (Overscript[(Subscript[v, xxx]), ⟶]) v čase Δt;

Dále je možné zobrazit:
	hodnoty fyzikálních veličin poloměr, perioda, velikost okamžité rychlosti a velikost okamžitého zrychlení;
	popis - popis poloh hmotného bodu, vektorů, ...;
	bod - vyznačení polohy hmotného bodu na kružnici;
	průvodič;
	vektor rychlosti v daném bodě na kružnici (čas t);
	vektor rychlosti v čase o Δt větším;
	tentýž vektor posunutý do bodu v čase t;
	rozdíl vektorů rychlostí v čase t a t + Δt;
	vektor zrychlení, který je sestrojen na základě rozdílů vektorů rychlostí;
	vektor zrychlení, který je spočítán teoreticky (tj. přesně).
	
Název bodu, který se přiřadí hmotnému bodu, se po spuštění apletu volí náhodně. Pokud by chtěl uživatel tyto hodnoty změnit, jsou uloženy v proměnných nazevbodu1 a nazevbodu2.

Tlačítkem Ulož obrázek se uloží právě zobrazené "bílé" okno do aktuální složky (složka, v níž je uložen tento notebook) pod jménem, které je uloženo v proměnné jmenosouboru. K tomuto jménu souboru je při opakovaném ukládání grafu přidáváno pořadové číslo.
Pozor! Při každém spuštění tohoto apletu se začínají soubory číslovat opět od jedné! Tak může dojít k přepsání minule uložených obrázků.

© Jaroslav Reichl, 2009

Příprava pro vykreslení grafu

ClearAll["Global`*"];
jmenosouboru="pohyb_kce_.jpg";
cesta=NotebookDirectory[];
pocetulozeni=0;

nazevbodu1=FromCharacterCode[RandomInteger[{65,89}]];
nazevbodu2=FromCharacterCode[ToCharacterCode[nazevbodu1]+1];

x1=-10;x2=-x1;
y1=-10;y2=-y1;
stredx=((x1+x2)/2);stredy=((y1+y2)/2);

r0=0.7x2;rmin=0.1x2;rmax=0.8x2;deltar=0.1;
fi0=(π/3);fimin=0;fimax=4π;deltafi=(π/24);
T0=1;Tmin=0.5;Tmax=5;deltaT=0.5;
deltat0=0;deltatmin=0;deltatmax=Tmin;deltadeltat=0.05deltaT;

tloustka=0.005;
velikostbodu=0.02;
sipka=0.035;
velikostpisma=15;

barva=Black;
barvakce=Blue;
barvapruvodic=Darker[barvakce];
barvabod=barvapruvodic;
barvarychlost=Red;
barvarychlost2=Darker[barvarychlost];
barvazrychleni=Magenta;
barvazrychleniskutecne=Darker[Green];

osax=Line[{{x1,stredy},{x2,stredy}}];
osay=Line[{{stredx,y1},{stredx,y2}}];

PohybPoKci=Manipulate[Deploy[
fi2=fi+ ((2π deltat)/perioda);
koeficient=0.08(rmin/Tmax)((2π polomer)/perioda);
bodx=polomer Cos[fi];
body=polomer Sin[fi];
v1x=polomer Cos[fi]-koeficient(polomer Sin[fi]-stredy);
v1y=polomer Sin[fi]+koeficient(polomer Cos[fi]-stredx);
v2x=polomer Cos[fi2]-koeficient(polomer Sin[fi2]-stredy);
v2y=polomer Sin[fi2]+koeficient(polomer Cos[fi2]-stredx);
v2xposun=polomer Cos[fi]-koeficient(polomer Sin[fi2]-stredy);
v2yposun=polomer Sin[fi]+koeficient(polomer Cos[fi2]-stredx);
If[deltat>0,
{ax=polomer Cos[fi]-0.15((koeficient polomer(Sin[fi2]-Sin[fi]))/deltat),
ay=polomer Sin[fi]+0.15((koeficient polomer(Cos[fi2]-Cos[fi]))/deltat)},
""];
axskutecne=polomer Cos[fi]-0.02(((((2π)/perioda)))^2) polomer (Cos[fi]-stredx);
ayskutecne=polomer Sin[fi]-0.02(((((2π)/perioda)))^2)polomer (Sin[fi]-stredy);
vektorrychlosti={
Arrowheads[{0,sipka}],
Arrow[{{bodx,body},{v1x,v1y}}]};
vektorrychlosti2={
Arrowheads[{0,sipka}],
Arrow[{{polomer Cos[fi2],polomer Sin[fi2]},{v2x,v2y}}]};
vektorrychlostiposunuty={
Arrowheads[{0,sipka}],
Arrow[{{bodx,body},{v2xposun,v2yposun}}]};
vektordeltav={
Arrowheads[{0,sipka}],
Arrow[{{v1x,v1y},{v2xposun,v2yposun}}]};
vektorzrychleni={
Arrowheads[{0,sipka}],
Arrow[{{bodx,body},{ax,ay}}]};
vektorzrychleniskutecny={
Arrowheads[{0,sipka}],
Arrow[{{bodx,body},{axskutecne,ayskutecne}}]};

pispolomer=StringJoin["r = ",ToString[polomer]," m"];
pisperiodu=StringJoin["T = ",ToString[perioda]," s"];
pisrychlost=StringJoin[ToString[Style[Subscript["v",nazevbodu1],barvarychlost],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[Subscript["v",nazevbodu2],barvarychlost2],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[((2π polomer)/perioda),0.1]],barva],StandardForm],ToString[Style[" m.(s^(-1))",barva],StandardForm]];
piszrychleni=StringJoin[ToString[Style["a",barvazrychleni],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[(((((2π)/perioda)))^2)polomer,0.1]],barva],StandardForm],ToString[Style[" m.(s^(-2))",barva],StandardForm]];

grafik=Show[
Graphics[{
{barva,Thickness[0.3tloustka],Dotted,osax},
{barva,Thickness[0.3tloustka],Dotted,osay},
{barvakce,Thickness[tloustka],Circle[{stredx,stredy},polomer]},
If[zobrazitpruvodic,
{{barvapruvodic,Thickness[0.5tloustka],Dashed,Line[{{stredx,stredy},{polomer Cos[fi],polomer Sin[fi]}}]},
{barvapruvodic,Thickness[0.4tloustka],Dashed,Circle[{stredx,stredy},0.5polomer,{0,Mod[fi,2π]}]},
If[zobrazitpopis,
Text[Style["φ",15,barvabod,FontFamily->Times],{0.35polomer Cos[0.5Mod[fi,2π]],0.35polomer Sin[0.5Mod[fi,2π]]},{Center,Center}],
Text[""]]},
Text[""]],
If[zobrazitbod,
{{barvabod,PointSize[velikostbodu],Point[{polomer Cos[fi],polomer Sin[fi]}]},
If[zobrazitpopis,
Text[Style[nazevbodu1,15,barvabod,FontFamily->Times],{1.1polomer Cos[fi],1.1polomer Sin[fi]},{Center,Center}],
Text[""]]},
Text[""]],
If[zobrazitrychlost,
{If[zobrazitrychlost2∧deltat>0,
{If[zobrazitbod,
{{barvabod,Thickness[0.4tloustka],Circle[{polomer Cos[fi2],polomer Sin[fi2]},9velikostbodu]},
If[zobrazitpopis,
Text[Style[nazevbodu2,15,barvabod,FontFamily->Times],{1.1polomer Cos[fi2],1.1polomer Sin[fi2]},{Center,Center}],
Text[""]]},
Text[""]],
{barvarychlost2,Thickness[tloustka],vektorrychlosti2},
If[zobrazitpopis,
Text[Style[ToString[Overscript[Subscript["v",nazevbodu2],"⟶"],StandardForm],15,barvarychlost2,FontFamily->Times,Bold],{1.05v2x,1.05v2y},{Center,Center}],
Text[""]],
If[zobrazitrychlostposunutou∧deltat>0,
{{barvarychlost2,Thickness[tloustka],Dashed,vektorrychlostiposunuty},
If[zobrazitpopis,
Text[Style[ToString[Overscript[Subscript["v'",nazevbodu2],"⟶"],StandardForm],15,barvarychlost2,FontFamily->Times,Bold],{1.15v2xposun,0.85v2yposun},{Center,Center}],
Text[""]]},
Text[""]],
If[zobrazitdeltav∧deltat>0,
{{barvazrychleni,Thickness[tloustka],Dashed,vektordeltav},
If[zobrazitpopis,
Text[Style[ToString[Overscript["Δv","⟶"],StandardForm],15,barvazrychleni,FontFamily->Times,Bold],{1.35v2xposun,1.15v2yposun},{Center,Center}],
Text[""]]},
Text[""]],
If[zobrazitvektorzrychleni∧deltat>0,
{{barvazrychleni,Thickness[tloustka],vektorzrychleni},
If[zobrazitpopis,
Text[Style["(Overscript[(Subscript[a, n]), ⟶])",15,barvazrychleni,FontFamily->Times,Bold],{1.25ax,1.25ay},{Center,Center}],
Text[""]]},
Text[""]]},
Text[""]],
{{barvarychlost,Thickness[tloustka],vektorrychlosti},
If[zobrazitpopis,
Text[Style[ToString[Overscript[Subscript["v",nazevbodu1],"⟶"],StandardForm],15,barvarychlost,FontFamily->Times,Bold],{1.05v1x,1.05v1y},{Center,Center}],
Text[""]]},
If[zobrazitskutecnyvektorzrychleni,
{{barvazrychleniskutecne,Thickness[tloustka],vektorzrychleniskutecny},
If[zobrazitpopis,
Text[Style["(Overscript[(Subscript[a, n]), ⟶])",15,barvazrychleniskutecne,FontFamily->Times,Bold],{2.75axskutecne,2ayskutecne},{Center,Center}],
Text[""]]},
Text[""]]},
Text[""]]

}],
FormatType->StandardForm,AspectRatio->Automatic,PlotRange->{{x1,x2},{y1,y2}},ImageSize->500
]],

{{polomer,r0,Style["r",15,barvakce,Italic]},rmin,rmax,deltar},
{{perioda,T0,Style["T",15,barva,Italic]},Tmin,Tmax,deltaT},
{{fi,fi0,Style["φ",15,barvapruvodic,Italic]},fimin,fimax,deltafi},
Delimiter,
{{deltat,deltat0,Style["Δt",15,barva,Italic]},deltatmin,deltatmax,deltadeltat},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazithodnoty,True,Style["- hodnoty",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitpopis,True,Style["- popis",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitbod,True,Style["- bod",15,barvabod,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitpruvodic,True,Style["- průvodič",15,barvapruvodic,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitrychlost,False,Style[StringJoin["- ",ToString[Overscript[Subscript["v",nazevbodu1],"⟶"],TraditionalForm]],15,barvarychlost,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitrychlost2,False,Style[StringJoin["- ",ToString[Overscript[Subscript["v",nazevbodu2],"⟶"],TraditionalForm]," v čase Δt"],15,barvarychlost2,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitrychlostposunutou,False,Style["- posunutý vektor",15,barvarychlost2,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitdeltav,False,Style[StringJoin[ToString[Style["- ",barva],StandardForm],ToString[Style["Δ(Overscript[v, ⟶])",barvazrychleni],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[Overscript[Subscript["v",nazevbodu2],"⟶"],barvarychlost2],TraditionalForm],ToString[Style["- ",barva],StandardForm],ToString[Style[Overscript[Subscript["v",nazevbodu1],"⟶"],barvarychlost],TraditionalForm]],15,barvazrychleni,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitvektorzrychleni,False,Style["- (Overscript[(Subscript[a, n]), ⟶]) sestrojené",15,barvazrychleni,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitskutecnyvektorzrychleni,False,Style["- (Overscript[(Subscript[a, n]), ⟶])",15,barvazrychleniskutecne,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazithodnoty,
Item[Style[pispolomer,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty,
Item[Style[pisperiodu,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty∧zobrazitrychlost,
Item[Style[pisrychlost,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty∧zobrazitrychlost∧(zobrazitvektorzrychleni∨zobrazitskutecnyvektorzrychleni),
Item[Style[piszrychleni,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]}
}]],
Delimiter,
Button[" Ulož obrázek ",{pocetulozeni=pocetulozeni+1,Export[StringInsert[StringJoin[cesta,jmenosouboru],ToString[pocetulozeni],-5],grafik]},ImageSize->{100,Automatic}],
ControlPlacement->Left,
FrameLabel->{Style["© Jaroslav Reichl, 2009",10,Black,FontFamily->Times],"",Style["Pohyb hmotného bodu po kružnici",25,Black,FontFamily->Times],""}];

Spuštění animace
Zpracujte běžným způsobem následující buňku a na dotaz, který se objeví, odpovězte ANO.

PohybPoKci