Síly působící na těleso na nakloněné rovině

Následující aplet umožňuje názorně prozkoumat síly, které působí na těleso položené na nakloněné rovině. Pomocí posuvníků lze nastavit libovolnou kombinaci fyzikálních veličin m, f a α, které ovlivňují velikost a směr sil.Předdefinované rozsahy koeficientů může uživatel znalý Mathematicy měnit.
Tlačítkem Ulož obrázek se uloží právě zobrazený obrázek 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, 2008

Příprava pro vykreslení obrázku

jmenosouboru="nakl_rovina_.jpg";
cesta=NotebookDirectory[];
pocetulozeni=0;

x1=-1; x2=10; deltax=1;deltay=0.8;
y1=-9.5;y2=12;

barva=Black;
alfabarva=Orange;
barvaroviny=Brown;
barvatelesa=Black;
barvafg=Red;
barvafn=Lighter[Blue];
barvafp=Darker[Green];
barvaft=Magenta;
barvafr=Darker[Blue];
barvazrychleni=Black;
atelesa=2; btelesa=1.2;
ralfa=((x1+x2)/4);
tloustkasipky=0.05;
g=9.8065;


NaklonenaRovina=
Manipulate[
xteziste=((x1+x2-btelesa Sin[alfa Degree])/2);yteziste=0.5*(Tan[alfa Degree]*(((x1+x2)/2)+((atelesa Cos[alfa Degree])/2)-x1)+Tan[alfa Degree]*(((x1+x2)/2)-((atelesa Cos[alfa Degree])/2)-x1)+btelesa Cos[alfa Degree]);
fp=m*g*Sin[alfa Degree];
fn=m*g*Cos[alfa Degree];
ft=fn*f;
If[fp>ft,
zrychleni=Round[((fp-ft)/m),0.01],
zrychleni=0];
teleso=Polygon[{{((x1+x2)/2)-((atelesa Cos[alfa Degree])/2),Tan[alfa Degree]*(((x1+x2)/2)-((atelesa Cos[alfa Degree])/2)-x1)},{((x1+x2)/2)+((atelesa Cos[alfa Degree])/2),Tan[alfa Degree]*(((x1+x2)/2)+((atelesa Cos[alfa Degree])/2)-x1)},{((x1+x2)/2)+((atelesa Cos[alfa Degree])/2)-btelesa Sin[alfa Degree],Tan[alfa Degree]*(((x1+x2)/2)+((atelesa Cos[alfa Degree])/2)-x1)+btelesa Cos[alfa Degree]},{((x1+x2)/2)-((atelesa Cos[alfa Degree])/2)-btelesa Sin[alfa Degree],Tan[alfa Degree]*(((x1+x2)/2)-((atelesa Cos[alfa Degree])/2)-x1)+btelesa Cos[alfa Degree]},{((x1+x2)/2)-((atelesa Cos[alfa Degree])/2),Tan[alfa Degree]*(((x1+x2)/2)-((atelesa Cos[alfa Degree])/2)-x1)}}];
teziste=Disk[{xteziste,yteziste},0.2];
silatihova={Arrowheads[{-0,tloustkasipky}],Arrow[{{xteziste,yteziste},{xteziste,yteziste-m*g}}]};
silanormalova={Arrowheads[{-0,tloustkasipky}],Arrow[{{xteziste,yteziste},{xteziste+fn*Sin[alfa Degree],yteziste-fn*Cos[alfa Degree]}}]};
silareakcni={Arrowheads[{-0,tloustkasipky}],Arrow[{{xteziste,yteziste},{xteziste-fn*Sin[alfa Degree],yteziste+fn*Cos[alfa Degree]}}]};
silapohybova={Arrowheads[{-0,tloustkasipky}],Arrow[{{xteziste,yteziste},{xteziste-fp*Cos[alfa Degree],yteziste-fp*Sin[alfa Degree]}}]};
silatreci={Arrowheads[{-0,tloustkasipky}],Arrow[{{xteziste,yteziste},{xteziste+ft*Cos[alfa Degree],yteziste+ft*Sin[alfa Degree]}}]};rovnobezkapohybova=Line[{{xteziste+fn*Sin[alfa Degree],yteziste-fn*Cos[alfa Degree]},{xteziste,yteziste-m*g}}];
rovnobezkanormalova=Line[{{xteziste-fp*Cos[alfa Degree],yteziste-fp*Sin[alfa Degree]},{xteziste,yteziste-m*g}}];
rovnobezkareakcni=Line[{{xteziste-fp*Cos[alfa Degree],yteziste-fp*Sin[alfa Degree]},{xteziste-fn*Sin[alfa Degree],yteziste+fn*Cos[alfa Degree]}}];
rovnobezkatihova=Line[{{xteziste-fp*Cos[alfa Degree],yteziste-fp*Sin[alfa Degree]},{xteziste,yteziste-m*g}}];

grafik=Deploy[Show[
Graphics
[{
{barvatelesa,teleso},
{alfabarva,Circle[{x1,0},ralfa,{0,alfa Degree}]},
If[alfa≠0,
{If[zobrazitFg,
{{Thickness[0.007],barvafg,silatihova},
Text[Style["(Overscript[(Subscript[F, G]), ⟶])",20,barvafg,FontFamily->Times,Bold],{xteziste+(atelesa/3),yteziste-((m*g)/2)}],
Text[Style[StringJoin["(Subscript[F, G]) = ",ToString[Round[m*g,0.01]]," N"],18,barvafg,FontFamily->Times,Bold],{0.7 (x1+x2),y1+6 deltay},{Left,Center}]},
Text[""]],
If[zobrazitFr,
{{Thickness[0.007],barvafr,silareakcni},
Text[Style["(Overscript[(Subscript[F, R]), ⟶])",20,barvafr,FontFamily->Times,Bold],{xteziste-1.2 fn*Sin[alfa Degree],yteziste+1.2 fn*Cos[alfa Degree]}],
Text[Style[StringJoin["(Subscript[F, R]) = ",ToString[Round[fn,0.01]]," N"],18,barvafr,FontFamily->Times,Bold],{0.7 (x1+x2),y1+5 deltay},{Left,Center}]},
Text[""]],
If[zobrazitFn,
{{Thickness[0.007],barvafn,silanormalova},
Text[Style["(Overscript[(Subscript[F, n]), ⟶])",20,barvafn,FontFamily->Times,Bold],{xteziste+1.1 fn*Sin[alfa Degree],yteziste-1.1 fn*Cos[alfa Degree]}],
Text[Style[StringJoin["(Subscript[F, n]) = ",ToString[Round[fn,0.01]]," N"],18,barvafn,FontFamily->Times,Bold],{0.7 (x1+x2),y1+4 deltay},{Left,Center}]},
Text[""]],
If[zobrazitFp,
{{Thickness[0.007],barvafp,silapohybova},
Text[Style["(Overscript[(Subscript[F, p]), ⟶])",20,barvafp,FontFamily->Times,Bold],{xteziste-1.2 fp*Cos[alfa Degree],yteziste-1.2 fp*Sin[alfa Degree]}],
Text[Style[StringJoin["(Subscript[F, p]) = ",ToString[Round[fp,0.01]]," N"],18,barvafp,FontFamily->Times,Bold],{0.7 (x1+x2),y1+3 deltay},{Left,Center}]},
Text[""]],
If[zobrazitFt&&f≠0,
{{Thickness[0.007],barvaft,silatreci},
Text[Style["(Overscript[(Subscript[F, t]), ⟶])",20,barvaft,FontFamily->Times,Bold],{xteziste+1.3 ft*Cos[alfa Degree],yteziste+1.3ft*Sin[alfa Degree]}],
Text[Style[StringJoin["(Subscript[F, t]) = ",ToString[Round[ft,0.01]]," N"],18,barvaft,FontFamily->Times,Bold],{0.7 (x1+x2),y1+2 deltay},{Left,Center}]},
Text[""]],
If[kreslitrovnobeznik=="(Overscript[(Subscript[F, p]), ⟶]) a (Overscript[(Subscript[F, n]), ⟶])"&&zobrazitFp&&zobrazitFn,
{{Dashed,Thickness[0.005],barvafn,rovnobezkanormalova},
{Dashed,Thickness[0.005],barvafp,rovnobezkapohybova}},
If[kreslitrovnobeznik=="(Overscript[(Subscript[F, G]), ⟶]) a (Overscript[(Subscript[F, R]), ⟶])"&&zobrazitFg&&zobrazitFr,
{{Dashed,Thickness[0.005],barvafg,rovnobezkareakcni},
{Dashed,Thickness[0.005],barvafr,rovnobezkatihova}},
Text[""]]]},
Text[""]],

{barvafg,teziste},

Text[Style["α",Round[25*Sin[alfa Degree]],18,alfabarva,FontFamily->Times,Bold],{x1+0.7 ralfa Cos[((alfa Degree)/2)],0.7 ralfa Sin[((alfa Degree)/2)]}],
Text[Style[StringJoin["m = ",ToString[m]," kg"],18,barvafg,FontFamily->Times,Bold],{x1,y1+6 deltay},{Left,Center}],
Text[Style[StringJoin["α = ",ToString[alfa],"\!\(\*SuperscriptBox[\(\\ \), \(o\)]\)"],18,alfabarva,FontFamily->Times,Bold],{x1,y1+5 deltay},{Left,Center}],
Text[Style[StringJoin["f = ",ToString[f]],18,barvaft,FontFamily->Times,Bold],{x1,y1+4 deltay},{Left,Center}],
Text[Style[StringJoin["a = ",ToString[zrychleni]," m.(s^(-2))"],18,barvazrychleni,FontFamily->Times,Bold],{0.7 (x1+x2),y1+deltay},{Left,Center}]
}],
Plot[{0,Tan[alfa Degree]*(x-x1)},{x,x1,x2},PlotStyle->{{RGBColor[0,0,0],Thickness[0.003]},{barvaroviny,Thickness[0.008]}}],
FormatType->StandardForm,
AxesOrigin->{0,0},Axes->False,PlotRange->{{x1-deltax,x2+deltax},{y1,y2}},ImageSize->320
]],

{{m,0.5,Style["m",20,barvafg,FontFamily->Times,Italic]},0.25,1,0.05},
{{alfa,30,Style["α",20,alfabarva,FontFamily->Times,Italic]},0,89,1},
{{f,0.4,Style["f",20,barvaft,FontFamily->Times,Italic]},0,1,0.01},
Delimiter,
Item[Style["Zobrazit:",15,barva,FontFamily->Times,Bold],Alignment->Left],
{{zobrazitFg,True,Style["sílu (Overscript[(Subscript[F, G]), ⟶])",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitFr,True,Style["sílu (Overscript[(Subscript[F, R]), ⟶])",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitFn,True,Style["sílu (Overscript[(Subscript[F, n]), ⟶])",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitFp,True,Style["sílu (Overscript[(Subscript[F, p]), ⟶])",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitFt,True,Style["sílu (Overscript[(Subscript[F, t]), ⟶])",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{kreslitrovnobeznik,"žádný",Style["rovnoběžník sil",15,barva,FontFamily->Times]},{"žádný","(Overscript[(Subscript[F, p]), ⟶]) a (Overscript[(Subscript[F, n]), ⟶])","(Overscript[(Subscript[F, G]), ⟶]) a (Overscript[(Subscript[F, R]), ⟶])"},ControlType->RadioButton},
Delimiter,
Dynamic[Grid[{
{If[zobrazitFg,
Item[Style["(Overscript[(Subscript[F, G]), ⟶]) - tíhová síla",15,barvafg,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitFr,
Item[Style["(Overscript[(Subscript[F, R]), ⟶]) - reakční síla podložky",15,barvafr,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitFn,
Item[Style["(Overscript[(Subscript[F, n]), ⟶]) - normálová síla",15,barvafn,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitFp,
Item[Style["(Overscript[(Subscript[F, p]), ⟶]) - pohybová síla",15,barvafp,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitFt,
Item[Style["(Overscript[(Subscript[F, t]), ⟶]) - třecí síla",15,barvaft,FontFamily->Times],Alignment->Left],
""]}}]],
Delimiter,
Button[" Ulož obrázek ",{pocetulozeni=pocetulozeni+1,Export[StringInsert[StringJoin[cesta,jmenosouboru],ToString[pocetulozeni],-5],grafik]},ImageSize->{100,Automatic}],
FrameLabel->{Style["© Jaroslav Reichl, 2008",10,Black,FontFamily->Times],"",Style["Těleso na nakloněné rovině",25,Black,FontFamily->Times],""},
ControlPlacement->Left];

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

NaklonenaRovina