Parametrické vyjádření přímky (a její části) v rovině

Následující aplet umožňuje lépe pochopit parametrické zadání přímky v rovině a sestavení parametrické rovnice přímky, polopřímky a úsečky. Přímka je zadána bodem a vektorem, který bodem nemusí procházet (souřadnice bodu, počátečního bodu vektoru a koncového bodu vektoru se při spuštění apletu volí náhodně).
Tažením myši (při stisknutém levém tlačítku myši) lze měnit polohu počátečního i koncového bodu "modrého" vektoru. Současně s ním se překreslují (jsou-li zobrazeny) směrový vektor přímky a směrový vektor posunutý do počátku kartézského systému souřadnic. Zároveň s tím se mění (jsou-li zobrazeny) tvary parametrické rovnice přímky a souřadnice bodu X, který je na přímce zobrazen.
Pomocí prvních dvou posuvníků lze měnit souřadnice bodu, kterým je přímka určena.
Pomocí posuvníku t lze měnit parametr vystupující v parametrickém vyjádření přímky (polopřímky, úsečky). S jeho změnou se mění i poloha zobrazeného bodu X na přímce. Tento bod se zobrazí pouze tehdy, jestliže na zvoleném útvaru (přímka, polopřímka, úsečka) skutečně leží.
Bod, vektory a přímka jsou popsány náhodně zvolenými písmeny z předem nadefinované skupiny písmen. Pokud požaduje uživatel speciální nastavení názvu bodu, vektoru či přímky, lze toto nastavení provést v proměnných nazevbodu, nazevvektoru a nazevprimky.

V apletu lze volitelně zobrazit:
	osy kartézského systému;
	směrový vektor přímky;
	vektor v nule - tj. směrový vektor posunutý do počátku kartézského systému souřadnic;
	koncový bod směrového vektoru zobrazené přímky;
	souřadnice - bodu a vektoru (resp. vektorů);
	typ útvaru - přímka, polopřímka, úsečka;
	parametrickou rovnici přímky (polopřímky, úsečky);
	výpočet souřadnice bodu X, kterým lze pomocí posuvníku t pohybovat po zobrazeném útvaru.

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="anal_primka_parametr_.jpg";
cesta=NotebookDirectory[];
pocetulozeni=0;

nazevbodu=RandomChoice[{"A","B","C","D","E","F","G","H","J","K","L","M"}];
nazevbodukonec=FromCharacterCode[ToCharacterCode[nazevbodu]+1];
nazevbodu2="X";
nazevvektoru=RandomChoice[{"s","u","v","w"}];
nazevprimky=RandomChoice[{"p","q","r"}];
seznamutvaru={StringJoin["přímka ",nazevprimky],StringJoin["polopřímka ",nazevbodu,nazevbodukonec],StringJoin["polopřímka ",nazevbodukonec,nazevbodu],StringJoin["úsečka ",nazevbodu,nazevbodukonec]};
defaultniutvar=seznamutvaru[[1]];
x1=-10;x2=-x1;
y1=-10;y2=-y1;
delta=0.02(x2-x1);
t0=0;tmin=-2;tmax=2;deltat=0.1;

bodx0=RandomInteger[{(x1/2),(x2/2)}];bodxmin=x1;bodxmax=x2;deltabodx=0.1;
body0=RandomInteger[{(y1/2),(y2/2)}];bodymin=y1;bodymax=y2;deltabody=0.1;

tloustka=0.005;
velikostbodu=0.015;
velikostsipky=0.035;
velikostpisma=18;

barva=Black;
barvat=Black;
barvabodu=Magenta;
barvabodukonec=Darker[barvabodu];
barvabodu2=Darker[Green,0.5];
barvaprimky=Black;
barvavektoru=Blue;
barvavektoruvnule=Red;
barvasmerovehovektoru=Orange;
barvasouradnic=Black;

osax={
Arrowheads[{0,0.8velikostsipky}],
Arrow[{{x1,0.5(y1+y2)},{x2,0.5(y1+y2)}}]};
osay={
Arrowheads[{0,0.8velikostsipky}],
Arrow[{{0.5(x1+x2),y1},{0.5(x1+x2),y2}}]};

PrimkaParametricky2D=Manipulate[Deploy[
(*Obecná rovnice přímky*)
If[utvar==seznamutvaru[[1]],
{If[vektor[[2,2]]-vektor[[1,2]]≥0,
{koefx=vektor[[2,2]]-vektor[[1,2]],
koefy=-(vektor[[2,1]]-vektor[[1,1]])},
{koefx=-(vektor[[2,2]]-vektor[[1,2]]),
koefy=vektor[[2,1]]-vektor[[1,1]]}];
obrce[x_,y_]:=koefx x+koefy y+absclen1;
reseni=Solve[obrce[bodx,body]==0,absclen1];
absclen=absclen1/.reseni[[1]];
obecnarce[x_,y_]:=obrce[x,y]/.absclen1->absclen},
""];
(*Hledání sourařadnic, na které se má vypsat název přímky*)
If[utvar==seznamutvaru[[1]],
{reseni=Solve[obecnarce[x2,ypom]==0,ypom];
If[reseni≠{}∧reseni≠{{}},
{pomprusecik=ypom/.reseni[[1]],
If[pomprusecik≥y1+2delta&&pomprusecik≤y2-2delta,
{souradnicenazvuprimkyx=x2-2delta,
souradnicenazvuprimkyy=pomprusecik-delta,
OKprusecik=True},
OKprusecik=False]},
OKprusecik=False];
If[OKprusecik==False,
{reseni=Solve[obecnarce[xpom,y2]==0,xpom];
If[reseni≠{}∧reseni≠{{}},
{pomprusecik=xpom/.reseni[[1]],
If[pomprusecik≥x1+2delta&&pomprusecik≤x2-2delta,
{souradnicenazvuprimkyx=pomprusecik-delta,
souradnicenazvuprimkyy=y2-2delta,
OKprusecik=True},
OKprusecik=False]},
OKprusecik=False]},
""];
If[OKprusecik==False,
{reseni=Solve[obecnarce[xpom,y1]==0,xpom];
If[reseni≠{}∧reseni≠{{}},
{pomprusecik=xpom/.reseni[[1]],
If[pomprusecik≥x1+2delta&&pomprusecik≤x2-2delta,
{souradnicenazvuprimkyx=pomprusecik-delta,
souradnicenazvuprimkyy=y1+2delta,
OKprusecik=True},
OKprusecik=False]},
OKprusecik=False]},
""]},
""];

vektor=PadRight[vektor,2,RandomReal[{0.5x1,0.5x2},{2,2}]];
vektorprokresleni={
Arrowheads[{0,velikostsipky}],
Arrow[{{vektor[[1,1]],vektor[[1,2]]},{vektor[[2,1]],vektor[[2,2]]}}]};
smerovyvektor={
Arrowheads[{0,velikostsipky}],
Arrow[{{bodx,body},{bodx+vektor[[2,1]]-vektor[[1,1]],body+vektor[[2,2]]-vektor[[1,2]]}}]};
vektorvnule={
Arrowheads[{0,velikostsipky}],
Arrow[{{0,0},{vektor[[2,1]]-vektor[[1,1]],vektor[[2,2]]-vektor[[1,2]]}}]};

If[zobrazitsouradnice,
{If[zobrazitsmerovyvektor==False,
If[zobrazitvektorvnule==False,
pissouradnice=StringJoin[ToString[Style[Overscript[nazevvektoru,"→"],barvavektoru,Italic],StandardForm],ToString[Style[" = (",barva],StandardForm],ToString[Style[ToString[Round[vektor[[2,1]]-vektor[[1,1]],0.1]],barvavektoru],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[ToString[Round[vektor[[2,2]]-vektor[[1,2]],0.1]],barvavektoru],StandardForm],ToString[Style[")",barva],StandardForm]],
pissouradnice=StringJoin[ToString[Style[Overscript[nazevvektoru,"→"],barvavektoru,Italic],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[Overscript[nazevvektoru,"→"],barvavektoruvnule,Italic],StandardForm],ToString[Style[" = (",barva],StandardForm],ToString[Style[ToString[Round[vektor[[2,1]]-vektor[[1,1]],0.1]],barvavektoruvnule],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[ToString[Round[vektor[[2,2]]-vektor[[1,2]],0.1]],barvavektoruvnule],StandardForm],ToString[Style[")",barva],StandardForm]]],
If[zobrazitvektorvnule==False,
pissouradnice=StringJoin[ToString[Style[Overscript[nazevvektoru,"→"],barvavektoru,Italic],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[Overscript[nazevvektoru,"→"],barvasmerovehovektoru,Italic],StandardForm],ToString[Style[" = (",barva],StandardForm],ToString[Style[ToString[Round[vektor[[2,1]]-vektor[[1,1]],0.1]],barvasmerovehovektoru],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[ToString[Round[vektor[[2,2]]-vektor[[1,2]],0.1]],barvasmerovehovektoru],StandardForm],ToString[Style[")",barva],StandardForm]],
pissouradnice=StringJoin[ToString[Style[Overscript[nazevvektoru,"→"],barvavektoru,Italic],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[Overscript[nazevvektoru,"→"],barvasmerovehovektoru,Italic],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[Overscript[nazevvektoru,"→"],barvavektoruvnule,Italic],StandardForm],ToString[Style[" = (",barva],StandardForm],ToString[Style[ToString[Round[vektor[[2,1]]-vektor[[1,1]],0.1]],barvasmerovehovektoru],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[ToString[Round[vektor[[2,2]]-vektor[[1,2]],0.1]],barvasmerovehovektoru],StandardForm],ToString[Style[")",barva],StandardForm]]]],
{pissouradnicebodu=StringJoin[ToString[Style[nazevbodu,barvabodu],StandardForm],ToString[Style[" = [",barva],StandardForm],ToString[Style[ToString[Round[bodx,0.1]],barvabodu],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[ToString[Round[body,0.1]],barvabodu],StandardForm],ToString[Style["]",barva],StandardForm]],
pissouradnicebodu2=StringJoin[ToString[Style[nazevbodu2,barvabodu],StandardForm],ToString[Style[" = [",barva],StandardForm],ToString[Style[ToString[Round[bodx+parametrt(vektor[[2,1]]-vektor[[1,1]]),0.1]],barvabodu2],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[ToString[Round[body+parametrt(vektor[[2,2]]-vektor[[1,2]]),0.1]],barvabodu2],StandardForm],ToString[Style["]",barva],StandardForm]]}},
""];
If[utvar==seznamutvaru[[1]],
{tminprovykresleni=((x1-bodx)/(vektor[[2,1]]-vektor[[1,1]]+0.001)),
tmaxprovykresleni=((x2-bodx)/(vektor[[2,1]]-vektor[[1,1]]+0.001)),
pisintervalt="t; t ∈ ℝ",
nazevutvaru=StringJoin["    ",nazevprimky,"  "]},
If[utvar==seznamutvaru[[2]],
{If[vektor[[2,1]]-vektor[[1,1]]≥0,
{tminprovykresleni=0,
tmaxprovykresleni=((x2-bodx)/(vektor[[2,1]]-vektor[[1,1]]+0.001))},
{tminprovykresleni=((x1-bodx)/(vektor[[2,1]]-vektor[[1,1]]+0.001)),
tmaxprovykresleni=0}],
pisintervalt="t; t ∈ ⟨0; ∞)",
nazevutvaru=StringJoin["→",nazevbodu,nazevbodukonec]},
If[utvar==seznamutvaru[[3]],
{If[vektor[[2,1]]-vektor[[1,1]]≥0,
{tminprovykresleni=((x1-bodx)/(vektor[[2,1]]-vektor[[1,1]]+0.001)),
tmaxprovykresleni=1},
{tminprovykresleni=1,
tmaxprovykresleni=((x2-bodx)/(vektor[[2,1]]-vektor[[1,1]]+0.001))}],
pisintervalt="t; t ∈ (-∞; 1⟩",
nazevutvaru=StringJoin["→",nazevbodukonec,nazevbodu]},
If[utvar==seznamutvaru[[4]],
{tminprovykresleni=0,
tmaxprovykresleni=1,
pisintervalt="t; t ∈ ⟨0; 1⟩",
nazevutvaru=StringJoin["   ",nazevbodu,nazevbodukonec]},
""]]]];
If[zobrazitparamrovniciprimky,
{If[vektor[[2,1]]-vektor[[1,1]]≥0,
znamenko=" + ",
znamenko=" - "],
pisrovniciprimky2=StringJoin[ToString[Style[nazevutvaru,barvaprimky,Italic],StandardForm],ToString[Style[": x = ",barva],StandardForm],ToString[Style[ToString[Round[bodx,0.01]],barvabodu],StandardForm],ToString[Style[znamenko,barva],StandardForm],ToString[Style[ToString[Round[Abs[vektor[[2,1]]-vektor[[1,1]]],0.1]],barvasmerovehovektoru],StandardForm],ToString[Style["t",barva],StandardForm]],
If[vektor[[2,2]]-vektor[[1,2]]≥0,
znamenko=" + ",
znamenko=" - "],
pisrovniciprimky3=StringJoin[ToString[Style["         y = ",barva],StandardForm],ToString[Style[ToString[Round[body,0.01]],barvabodu],StandardForm],ToString[Style[znamenko,barva],StandardForm],ToString[Style[ToString[Round[Abs[vektor[[2,2]]-vektor[[1,2]]],0.1]],barvasmerovehovektoru],StandardForm],ToString[Style[pisintervalt,barva],StandardForm]]},
""];
If[zobrazitrovnicibodu,
{If[(vektor[[2,1]]-vektor[[1,1]])parametrt≥0,
znamenko=" + ",
znamenko=" - "],
pisrovnicibodu1=StringJoin[
ToString[Style[ToString[Subscript["x",ToString[Style[nazevbodu2,barvabodu2],StandardForm]],StandardForm],barva],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[bodx,0.01]],barvabodu],StandardForm],ToString[Style[znamenko,barva],StandardForm],ToString[Style[ToString[Round[Abs[vektor[[2,1]]-vektor[[1,1]]],0.1]],barvasmerovehovektoru],StandardForm],ToString[Style["*",barva],StandardForm],ToString[Style[NumberForm[Abs[parametrt],2],barvat],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[bodx+(vektor[[2,1]]-vektor[[1,1]])parametrt,0.1]],barva],StandardForm]],
If[(vektor[[2,2]]-vektor[[1,2]])parametrt≥0,
znamenko=" + ",
znamenko=" - "],
pisrovnicibodu2=StringJoin[
ToString[Style[ToString[Subscript["y",ToString[Style[nazevbodu2,barvabodu2],StandardForm]],StandardForm],barva],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[body,0.01]],barvabodu],StandardForm],ToString[Style[znamenko,barva],StandardForm],ToString[Style[ToString[Round[Abs[vektor[[2,2]]-vektor[[1,2]]],0.1]],barvasmerovehovektoru],StandardForm],ToString[Style["*",barva],StandardForm],ToString[Style[NumberForm[Abs[parametrt],2],barvat],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[body+(vektor[[2,2]]-vektor[[1,2]])parametrt,0.1]],barva],StandardForm]]},
""];

grafik=Show[
ParametricPlot[{bodx+t (vektor[[2,1]]-vektor[[1,1]]),body+t (vektor[[2,2]]-vektor[[1,2]])},{t,tminprovykresleni,tmaxprovykresleni},PlotStyle->{barvaprimky,Thickness[1.25tloustka]},Axes->False],
Graphics[{
If[zobrazitosy,
{{barva,Thickness[0.7tloustka],osax},
{barva,Thickness[0.7tloustka],osay},
Text[Style["x",15,barva,FontFamily->Times,Italic],{x2,0.5(x1+x2)},{Right,Top}],
Text[Style["y",15,barva,FontFamily->Times,Italic],{0.05x1,y2},{Center,Top}]},
Text[""]],
{barvavektoru,Thickness[tloustka],vektorprokresleni},
If[utvar==seznamutvaru[[1]],
Text[Style[nazevprimky,20,barvaprimky,FontFamily->Times,Bold,Italic],{souradnicenazvuprimkyx,souradnicenazvuprimkyy},{Center,Center}],
Text[""]],
If[zobrazitsmerovyvektor,
{{barvasmerovehovektoru,Thickness[0.8tloustka],smerovyvektor},
Text[Style[Overscript[nazevvektoru,"→"],20,barvasmerovehovektoru,FontFamily->Times,Italic,Bold],{1.1(bodx+vektor[[2,1]]-vektor[[1,1]]),1.1(body+vektor[[2,2]]-vektor[[1,2]])},{Center,Center}]},
Text[""]],
If[zobrazitvektorvnule,
{{barvavektoruvnule,Thickness[tloustka],vektorvnule},
Text[Style[Overscript[nazevvektoru,"→"],20,barvavektoruvnule,FontFamily->Times,Italic,Bold],{1.1(vektor[[2,1]]-vektor[[1,1]]),1.1(vektor[[2,2]]-vektor[[1,2]])},{Center,Center}],
If[zobrazitsouradnice,
{barvavektoruvnule,Thickness[0.2tloustka],Dashed,Line[{{vektor[[2,1]]-vektor[[1,1]],0},{vektor[[2,1]]-vektor[[1,1]],vektor[[2,2]]-vektor[[1,2]]},{0,vektor[[2,2]]-vektor[[1,2]]}}]},
Text[""]]},
Text[""]],
If[zobrazitsouradnice,
{barvabodu,Thickness[0.2tloustka],Dashed,Line[{{bodx,0},{bodx,body},{0,body}}]},
Text[""]],
If[utvar==seznamutvaru[[1]],
{{barvabodu2,PointSize[velikostbodu],Point[{bodx+parametrt(vektor[[2,1]]-vektor[[1,1]]),body+parametrt(vektor[[2,2]]-vektor[[1,2]])}]},
Text[Style[nazevbodu2,20,barvabodu2,FontFamily->Times,Bold],{bodx+parametrt(vektor[[2,1]]-vektor[[1,1]])+delta,body+parametrt(vektor[[2,2]]-vektor[[1,2]])-delta},{Center,Center}]},
If[utvar==seznamutvaru[[2]]∧parametrt≥0,
{{barvabodu2,PointSize[velikostbodu],Point[{bodx+parametrt(vektor[[2,1]]-vektor[[1,1]]),body+parametrt(vektor[[2,2]]-vektor[[1,2]])}]},
Text[Style[nazevbodu2,20,barvabodu2,FontFamily->Times,Bold],{bodx+parametrt(vektor[[2,1]]-vektor[[1,1]])+delta,body+parametrt(vektor[[2,2]]-vektor[[1,2]])-delta},{Center,Center}]},
If[utvar==seznamutvaru[[3]]∧parametrt≤1,
{{barvabodu2,PointSize[velikostbodu],Point[{bodx+parametrt(vektor[[2,1]]-vektor[[1,1]]),body+parametrt(vektor[[2,2]]-vektor[[1,2]])}]},
Text[Style[nazevbodu2,20,barvabodu2,FontFamily->Times,Bold],{bodx+parametrt(vektor[[2,1]]-vektor[[1,1]])+delta,body+parametrt(vektor[[2,2]]-vektor[[1,2]])-delta},{Center,Center}]},
If[utvar==seznamutvaru[[4]]∧parametrt≥0∧parametrt≤1,
{{barvabodu2,PointSize[velikostbodu],Point[{bodx+parametrt(vektor[[2,1]]-vektor[[1,1]]),body+parametrt(vektor[[2,2]]-vektor[[1,2]])}]},
Text[Style[nazevbodu2,20,barvabodu2,FontFamily->Times,Bold],{bodx+parametrt(vektor[[2,1]]-vektor[[1,1]])+delta,body+parametrt(vektor[[2,2]]-vektor[[1,2]])-delta},{Center,Center}]},
Text[Style[StringJoin["Bod neleží na vybraném útvaru (",utvar,")!"],22,Red,FontFamily->Times,Bold],{0.5(x1+x2),y1-delta},{Center,Bottom}]]]]],
{barvabodu,PointSize[velikostbodu],Point[{bodx,body}]},
Text[Style[nazevbodu,20,barvabodu,FontFamily->Times,Bold],{bodx-delta,body+1.1delta},{Center,Center}],
If[zobrazitkoncovybodvektoru,
{{barvabodukonec,PointSize[velikostbodu],Point[{bodx+vektor[[2,1]]-vektor[[1,1]],body+vektor[[2,2]]-vektor[[1,2]]}]},
Text[Style[nazevbodukonec,20,barvabodukonec,FontFamily->Times,Bold],{bodx+vektor[[2,1]]-vektor[[1,1]]-delta,body+vektor[[2,2]]-vektor[[1,2]]+1.1delta},{Center,Center}]},
Text[""]]}],
FormatType->StandardForm,AspectRatio->Automatic,PlotRange->{{x1,x2},{y1,y2}},ImageSize->490
]],

{{vektor,RandomReal[{0.8x1,0.8x2},{2,2}]},Locator,Appearance->""},
{{bodx,bodx0,Style[Subscript["x",nazevbodu],15,barvabodu]},bodxmin,bodxmax,deltabodx},
{{body,body0,Style[Subscript["y",nazevbodu],15,barvabodu]},bodymin,bodymax,deltabody},
{{parametrt,t0,Style["t",15,barvat]},tmin,tmax,deltat},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitosy,True,Style["- osy",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitsmerovyvektor,True,Style["- směrový vektor",15,barvasmerovehovektoru,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitvektorvnule,False,Style["- vektor v nule",15,barvavektoruvnule,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitkoncovybodvektoru,False,Style["- koncový bod",15,barvabodukonec,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitsouradnice,False,Style["- souřadnice",15,barvasouradnic,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{utvar,defaultniutvar,Style["útvar",15,barva,FontFamily->Times]},seznamutvaru,ControlType->PopupMenu},
Delimiter,
Item[Style["Zobrazit rovnici",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitparamrovniciprimky,False,Style["- útvaru",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitrovnicibodu,False,Style["- bodu",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazitsouradnice&&zobrazitosy,
Item[Style[pissouradnice,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitsouradnice&&zobrazitosy,
Item[Style[pissouradnicebodu,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{Item[Style[" ",0.4velikostpisma,barva,FontFamily->Times],Alignment->Left]},
{If[zobrazitparamrovniciprimky&&zobrazitsouradnice,
Item[Style[StringJoin@@Table["-",{20}],velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{Item[Style[" ",0.4velikostpisma,barva,FontFamily->Times],Alignment->Left]},
{If[zobrazitparamrovniciprimky,
Item[Style[pisrovniciprimky2,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitparamrovniciprimky,
Item[Style[pisrovniciprimky3,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{Item[Style[" ",0.5velikostpisma,barva,FontFamily->Times],Alignment->Left]},
{If[zobrazitrovnicibodu,
Item[Style[pisrovnicibodu1,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitrovnicibodu,
Item[Style[pisrovnicibodu2,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["Parametrické vyjádření přímky (a její části) v rovině",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.

PrimkaParametricky2D