Konstrukce grafu funkce y = sin x

Následující aplet umožňuje názorně pochopit konstrukci grafu funkce y = sin x. Pomocí posuvníku lze měnit zobrazovaný úhel, na základě kterého se bude postupně vykreslovat graf funkce.
Úhel φ se mění v intervalu <-4π; 4π>, úhel (Subscript[φ, 0]) v intervalu <0; 2π).

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, 2008

Příprava pro vykreslení grafu

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

r=4;
fimin=-4π ;fimax=4π;fi0=(π/6);deltafi=(π/12);

x1=-3r-Abs[fimin];x2=1.1fimax;
y1=-3r;y2=-y1;
pocatekx=0;pocateky=0;
stredkcex=-1.5r-Abs[fimin];stredkcey=pocateky;

tloustka=0.005;
velikostbodu=0.015;

barva=Black;
barvakce=Blue;
barvafi=Red;
barvagraf=Orange;
barvafinula=Brown;
barvasouradnice=Darker[Green,0.2];

osyxy={
Line[{{fimin-0.03Abs[fimin],stredkcey},{1.03fimax,stredkcey}}],
Line[{{pocatekx,y1},{pocatekx,y2}}]};
osovykrizkce={
Line[{{stredkcex,y1},{stredkcex,y2}}],
Line[{{stredkcex-1.2r,stredkcey},{stredkcex+1.2r,stredkcey}}]};
kruznice=Circle[{stredkcex,stredkcey},r];

KonstrukceTangens=Manipulate[Deploy[
If[fi<0,
{pocatecniuhel=2π+fi,
koncovyuhel=2π,
pocatecnifinula=2π-Mod[Abs[fi],2π],
koncovyfinula=koncovyuhel},
{pocatecniuhel=0,
koncovyuhel=fi,
pocatecnifinula=pocatecniuhel,
koncovyfinula=Mod[Abs[fi],2π]}];
uhel=Circle[{stredkcex,stredkcey},0.6r,{pocatecniuhel,koncovyuhel}];
uhelfinula=Circle[{stredkcex,stredkcey},0.4r,{pocatecnifinula,koncovyfinula}];

pruvodic=Line[{{stredkcex,stredkcey},{r Cos[fi]+stredkcex,r Sin[fi]+stredkcey}}];
pruvodicpom=Line[{{stredkcex,stredkcey},{r+stredkcex,r Tan[fi]+stredkcey}}];

spojnice=Line[{{r+stredkcex,r Tan[fi]+stredkcey},{fi,r Tan[fi]+stredkcey}}];
souradnicevgrafu=Line[{{fi,stredkcey},{fi,r Tan[fi]+stredkcey}}];
souradnicevkruznici=Line[{{r+stredkcex,r Tan[fi]+stredkcey},{r+stredkcex,stredkcey}}];
bodvgrafu=Point[{fi,stredkcey}];
If[zobrazithodnoty,
If[OddQ[(fi/(π/2))]==False,
vypis=StringJoin["tg (",ToString[fi,StandardForm],") = ",ToString[Tan[fi],StandardForm]," = ",ToString[Round[Sin[fi],0.00001]]],
vypis=StringJoin["tg (",ToString[fi,StandardForm],") není definován"]],
vypis=""];
grafik=Show[
Plot[r Tan[x],{x,0.0001,fi},Exclusions->{Cos[x]==0},PlotStyle->{Thickness[tloustka],barvagraf},AxesOrigin->{pocatekx,pocateky},PlotRange->{{pocatekx,x2},{1.5y1,1.5y2}},AspectRatio->Automatic,Ticks->None,Axes->False],
Graphics[{
{barva,Thickness[0.5tloustka],osyxy},
Text[Style["x",15,barva,FontFamily->Times],{1.08fimax,stredkcey},{Center,Center}],
Text[Style["y",15,barva,FontFamily->Times],{pocatekx,1.15y2},{Center,Center}],
{barva,Thickness[0.7tloustka],osovykrizkce},
{barvakce,Thickness[0.9tloustka],kruznice},
{barvafi,Thickness[0.6tloustka],uhel},
If[fi>0,
Table[{barva,Dotted,Thickness[0.3tloustka],Line[{{(π/2) i,1.5y1},{(π/2) i,1.5y2}}]},{i,1,(fi/(π/2)),2}],
Table[{barva,Dotted,Thickness[0.3tloustka],Line[{{-(π/2) i,1.5y1},{-(π/2) i,1.5y2}}]},{i,1,((-fi)/(π/2)),2}]],
If[OddQ[(fi/(π/2))]==False,
{If[zobrazitsouradnice,
{barva,Dotted,Thickness[0.2tloustka],pruvodicpom},
Text[""]],
{barvafi,Thickness[0.6tloustka],pruvodic}},
Text[""]],
Text[Style["φ",15,barvafi,FontFamily->Times],{0.75r Cos[((pocatecniuhel+koncovyuhel)/2)]+stredkcex,0.75r Sin[((pocatecniuhel+koncovyuhel)/2)]+stredkcey},{Center,Center}],
If[zobrazitfinula,
{{barvafinula,Thickness[0.6tloustka],uhelfinula},
Text[Style["(Subscript[φ, 0])",15,barvafinula,FontFamily->Times],{0.25r Cos[((pocatecnifinula+koncovyfinula)/2)]+stredkcex,0.25r Sin[((pocatecnifinula+koncovyfinula)/2)]+stredkcey},{Center,Center}]},
Text[""]],
If[zobrazitsouradnice,
{If[OddQ[(fi/(π/2))]==False,
{{barva,Dashed,Thickness[0.4tloustka],spojnice},
{barvasouradnice,Thickness[0.6tloustka],souradnicevkruznici},
{barvasouradnice,Thickness[0.6tloustka],souradnicevgrafu}},
Text[""]],
{barvafi,PointSize[velikostbodu],bodvgrafu},
Text[Style[ToString[fi,StandardForm],15,barvafi,FontFamily->Times],{fi,stredkcey-0.1y2},{Center,Top}]},
Text[""]]
}],
FormatType->StandardForm,PlotRange->{{x1,x2},{1.2y1,1.2y2}},AxesLabel->{"x","y"},ImageSize->500
]],

{{fi,fi0,Style["φ",20,barvafi,Italic]},fimin,fimax,deltafi},
Delimiter,
{{zobrazitfinula,True,Style["zobrazit (Subscript[φ, 0])",15,barvafinula,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitsouradnice,True,Style["zobrazit souřadnice",15,barvasouradnice,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazithodnoty,False,Style["zobrazit hodnoty",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Dynamic[
Grid[{
{Item[Style[vypis,20,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, 2008",10,Black,FontFamily->Times],"",Style["Konstrukce grafu funkce y = tg x",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.

KonstrukceTangens