Vykreslování
Předcházející | Kapitola 11. Seznam funkcí GEL | Další

## Vykreslování

ExportPlot

      ExportPlot (soubor,typ)

      ExportPlot (soubor)

  Exportovat obsah okna s grafem do souboru. Typ je řetězec, který určuje typ souboru, který se má použít – „png“, „eps“ nebo „ps“. Když typ souboru není zadán, určí se podle přípony, která by v takovém případě mela být „.png“, „.eps“ nebo „.ps“.

  Upozorňujeme, že soubory se přepisují bez dotazu.

  Při úspěšném exportu je vrácena hodnota pravda. Jinak je vypsána chyba a vyvolána výjimka.

  Příklady:

      genius> ExportPlot("soubor.png")
      genius> ExportPlot("/složka/soubor","eps")

  Verze 1.0.16 a novější.

LinePlot

      LinePlot (fce1,fce2,fce3,...)

      LinePlot (fce1,fce2,fce3,x1,x2)

      LinePlot (fce1,fce2,fce3,x1,x2,y1,y2)

      LinePlot (fce1,fce2,fce3,[x1,x2])

      LinePlot (fce1,fce2,fce3,[x1,x2,y1,y2])

  Vykreslí funkci (nebo několik funkcí) v podobě čárového grafu. Prvních (až 10) argumentů jsou funkce, volitelně můžete zadat meze vykreslovaného okna jako souřadnice `x1`, `x2`, `y1`, `y2`. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz `LinePlotWindow`). Pokud nejsou zadány jen meze v ose y, funkce se propočítají a vezme se jejich minimum a maximu.

  Parametr `LinePlotDrawLegends` ovládá vykreslování legendy.

  Příklady:

      genius> LinePlot(sin,cos)
      genius> LinePlot(`(x)=x^2,-1,1,0,1)

LinePlotClear

      LinePlotClear ()

  Zobrazí okno pro vykreslování čar a vymaže funkce a ostatní čáry, které jsou v něm vykresleny.

LinePlotCParametric

      LinePlotCParametric (fce,...)

      LinePlotCParametric (fce,t1,t2,tprirust)

      LinePlotCParametric (fce,t1,t2,tprirust,x1,x2,y1,y2)

  Vykreslit parametrickou funkci komplexní hodnoty v podobě čárového grafu. Jako první se předává funkce, která vrací `x+iy`, následovaná volitelnými omezeními `t1,t2,tprirust` pro `t` a pak mezemi v podobě `x1,x2,y1,y2`.

  Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz `LinePlotWindow`). Místo mezí x a y je možné zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.

  Parametr `LinePlotDrawLegends` ovládá vykreslování legendy.

LinePlotDrawLine

      LinePlotDrawLine (x1,y1,x2,y2,...)

      LinePlotDrawLine (v,...)

  Vykreslit čáru z `x1`,`y1` do `x2`,`y2`. `x1`,`y1`, `x2`,`y2` může být pro delší lomené čáry nahrazeno maticí `n` krát 2. Připadně vektor `v` může být sloupcový vektor komplexních čísel, což je matice `n` krát 1 a jednotlivá komplexní čísla jsou pak považována za body v rovině.

  Mohou být přidány dodatečné parametry, které určují barvu, tloušťku a šipky čáry a vykreslení okna nebo legendy. Stačí přidat argument v podobě řetězce `"color"`, `"thickness"`, `"window"`, `"arrow"` nebo `"legend"` a za ním určit barvu, tloušťku, okno jako 4prvkový vektor, typ šipky nebo legendu. (Šipka a okno jsou podporovány od verze 1.0.6.)

  Pokud je čára považovaná za vyplněný mnohoúhelník, vyplněný danou barvou, můžete zadat argument `"filled"`. K dispozici od verze 1.0.22.

  Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná GTK, jako `"red"`, `"blue"`, `"yellow"`, apod. Nebo druhou možností je zadat barvu ve formátu RGB jako `"#rgb"`, `"#rrggbb"` nebo `"#rrrrggggbbbb"`, kde r, g a b jsou číslice šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností, od verze 1.0.18, je také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1, např. `[1.0,0.5,0.1]`.

  Okno by mělo být zadáno buď obvyklým způsobem jako `[x1,x2,y1,y2]` nebo alternativně může být použit řetězec `"fit"`, v kterémž to případě bude rozsah x určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.

  Specifikace šipky by měla být `"origin"` (počátek), `"end"` (konec), `"both"` (obojí) nebo `"none"` (nic).

  A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda tiskne.

  Příklady:

      genius> LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)
      genius> LinePlotDrawLine([0,0;1,-1;-1,-1])
      genius> LinePlotDrawLine([0,0;1,1],"arrow","end")
      genius> LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Řešení")
      genius> for r=0.0 to 1.0 by 0.1 do LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])
      genius> LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")

  Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli je předán sloupcový nebo řádkový vektor, při zadávání bodů v podobě vektoru komplexních čísel je kvůli možným nejednoznačnostem nutné vždy zadat sloupcový vektor.

  Zadávání `v` jako sloupcového vektoru komplexních čísel je implementováno od verze 1.0.22.

LinePlotDrawPoints

      LinePlotDrawPoints (x,y,...)

      LinePlotDrawPoints (v,...)

  Vykreslit bod v `x`, `y`. Vstupem může být matice `n` krát 2 pro `n` různých bodů. Tato funkce má v podstatě stejné vstupní údaje jako LinePlotDrawLine. Případně vektor `v` může být sloupcový vektor komplexních čísel, což je matice `n` krát 1 a jednotlivá komplexní čísla jsou považována za body v rovině.

  Mohou být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna nebo legendy. Stačí přidat argument v podobě řetězce `"color"`, `"thickness"`, `"window"` nebo `"legend"` a za ním určit barvu, tloušťku, okno jako 4prvkový vektor nebo legendu.

  Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná GTK, jako `"red"`, `"blue"`, `"yellow"`, apod. Nebo druhou možností je zadat barvu ve formátu RGB jako `"#rgb"`, `"#rrggbb"` nebo `"#rrrrggggbbbb"`, kde r, g a b jsou číslice šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností je také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1.

  Okno by mělo být zadáno buď obvyklým způsobem jako `[x1,x2,y1,y2]` nebo alternativně může být použit řetězec `"fit"`, v kterémž to případě bude rozsah x určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.

  A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda tiskne.

  Examples:

      genius> LinePlotDrawPoints(0,0,"color","blue","thickness",3)
      genius> LinePlotDrawPoints([0,0;1,-1;-1,-1])
      genius> LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Řešení")
      genius> LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)
      genius> LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","Sedmá odmocnina z jednotky")

  Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli jim předáte sloupcový nebo řádkový vektor, může u předávání bodu v podobě vektoru komplexních čísel docházet k nejednoznačnostem. Proto musíte vždy předat sloupcový vektor. Všimněte si v posledním příkladu transpozice vektoru `0:6`, aby se z něj stal sloupcový vektor.

  Dostupné od verze 1.0.18. Zadávání `v` v podobě sloupcového vektoru komplexních čísel je implementováno od verze 1.0.22.

LinePlotMouseLocation

      LinePlotMouseLocation ()

  Vrátit řádkový vektor v kreslení odpovídající aktuální pozici myši. Pokud kreslení není viditelné, vypíše se chyba a vrátí `null`. V takovém případě byste měli spustit `LinePlot` nebo `LinePlotClear`, abyste přepnuli okno s grafem do režimu kreslení. Viz také `LinePlotWaitForClick`.

LinePlotParametric

      LinePlotParametric (xfce,yfce,...)

      LinePlotParametric (xfce,yfce,t1,t2,tprirust)

      LinePlotParametric (xfce,yfce,t1,t2,tprirust,x1,x2,y1,y2)

      LinePlotParametric (xfce,yfce,t1,t2,tprirust,[x1,x2,y1,y2])

      LinePlotParametric (xfce,yfce,t1,t2,tprirust, "fit")

  Vykreslit parametrickou funkci v podobě čárového grafu. Jako první se zadávají funkce pro `x` a `y`, následované volitelnými omezeními `t1,t2,tprirust` pro `t` a pak mezemi v podobě `x1,x2,y1,y2`.

  Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz `LinePlotWindow`). Místo mezí x a y je možné zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.

  Parametr `LinePlotDrawLegends` ovládá vykreslování legendy.

LinePlotWaitForClick

      LinePlotWaitForClick ()

  Pokud je v režimu kreslení, čeká na kliknutí v kreslícím okně a následně vrátí pozici kliknutí v podobě řádkového vektoru. Pokud je okno zavřené, vrátí se funkce okamžitě s hodnotou `null`. Pokud okno není v režimu kreslení, přepne jej do něj a, pokud není zobrazené, zobrazí jej. Viz také `LinePlotMouseLocation`.

PlotCanvasFreeze

      PlotCanvasFreeze ()

  Dočasně zmrazí vykreslování grafu na plátno. To se hodí, když kreslíte spoustu prvků a chcete to pozdržet, aby se fyzicky vykreslilo až všechno naráz a předešlo se tím blikání. Až máte veškeré kreslení hotovo, měli byste zavolat funkci `PlotCanvasThaw`.

  Na konci jakéhokoliv provádění je plátno automaticky rozmrazeno, takže by se nemělo stát, že zůstane zmrazené. Kupříkladu ve chvíli, kdy se zobrazí nový příkazový řádek, dojde k automatickému rozmrazení. Také si všimněte, že volání zmrazení a rozmrazení mohou být zanořená.

  Verze 1.0.18 a novější.

PlotCanvasThaw

      PlotCanvasThaw ()

  Rozmrazí plátno pro vykreslování grafu zmrazené pomocí `PlotCanvasFreeze` a ihned jej překreslí. Platno je také rozmrazeno vždy po skončení provádění libovolného programu.

  Verze 1.0.18 a novější.

PlotWindowPresent

      PlotWindowPresent ()

  Zobrazí a přenese do popředí vykreslovací okno, případně jej vytvoří, pokud je třeba. Normálně je okno vytvořeno, když je zavolána některá z kreslících funkcí, ale nemusí být vždy přeneseno do popředí, když je schováno za jinými okny. Proto je dobré volat tento kript, když bylo vykreslovací okno vytvořeno již dříve a nyní je schováno za konzolí nebo jinými okny.

  Verze 1.0.19 a novější.

SlopefieldClearSolutions

      SlopefieldClearSolutions ()

  Vymazat řešení vykreslená funkcí `SlopefieldDrawSolution`.

SlopefieldDrawSolution

      SlopefieldDrawSolution (x, y, dx)

  Když je aktivní vykreslování směrového pole, vykreslí řešení se zadanou počáteční podmínkou. Použita je standardní Rungeho-Kuttova metoda s přírůstkem `dx`. Řešení v grafu zůstanou, dokud není zobrazen jiný graf nebo není zavolána funkce `SlopefieldClearSolutions`. Pro vykreslení řešení můžete použít i grafické rozhraní a počáteční podmínky zadat pomocí myši.

SlopefieldPlot

      SlopefieldPlot (fce)

      SlopefieldPlot (fce,x1,x2,y1,y2)

  Vykreslit směrové pole. Funkce `fce` by měla přebírat dvě reálná čísla `x` a `y` nebo jedno komplexní číslo. Volitelně můžete zadat meze vykreslovacího okna jako souřadnice `x1`, `x2`, `y1`, `y2`. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavení mezí (viz `LinePlotWindow`).

  Parametr `LinePlotDrawLegends` ovládá vykreslování legendy.

  Příklady:

      genius> SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)

SurfacePlot

      SurfacePlot (fce)

      SurfacePlot (fce,x1,x2,y1,y2,z1,z2)

      SurfacePlot (fce,x1,x2,y1,y2)

      SurfacePlot (fce,[x1,x2,y1,y2,z1,z2])

      SurfacePlot (fce,[x1,x2,y1,y2])

  Vykreslit funkci plochy, která přebírá buď dva argumenty nebo komplexní číslo. Jako první se předává funkce, pak následují meze `x1`, `x2`, `y1`, `y2`, `z1`, `z2`. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz `SurfacePlotWindow`). V současnosti umí Genius vykreslovat jen funkci jedné plochy.

  Když nejsou meze zadány, použije se pro ně minimum a maximum funkce.

  Příklady:

      genius> SurfacePlot(|sin|,-1,1,-1,1,0,1.5)
      genius> SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)
      genius> SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)

SurfacePlotClear

      SurfacePlotClear ()

  Zobrazí okno pro vykreslování povrchů a vymaže funkce a ostatní čáry, které jsou v něm vykresleny.

  Dostupné ve verzi 1.0.19 a novějších.

SurfacePlotData

      SurfacePlotData (data)

      SurfacePlotData (data,popisek)

      SurfacePlotData (data,x1,x2,y1,y2,z1,z2)

      SurfacePlotData (data,popisek,x1,x2,y1,y2,z1,z2)

      SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])

      SurfacePlotData (data,popisek,[x1,x2,y1,y2,z1,z2])

  Vykreslit povrch podle dat. Data jsou matice n × 3, jejíž řádky jsou souřadnice x, y a z. Případně data mohou být vektor, jehož délka je dělitelná 3 a který obsahuje trojice x, y, z. Data by měla obsahovat nejméně 3 body.

  Volitelně je možné předat popisek a také volitelné meze. Když meze nejsou uvedeny, vypočtou se z dat, ale nepoužívá se funkce `SurfacePlotWindow`, pokud ji chcete použít, musíte to provést explicitně. Když není předán popisek, použije se prázdný.

  Příklady:

      genius> SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])
      genius> SurfacePlotData(data,"Moje data")
      genius> SurfacePlotData(data,-1,1,-1,1,0,10)
      genius> SurfacePlotData(data,SurfacePlotWindow)

  Zde je příklad, jak vykreslit graf v polárních souřadnicích a především jak vykreslit funkci `-r^2 * θ`:

      genius> d:=null; for r=0 to 1 by 0.1 do for theta=0 to 2*pi by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];
      genius> SurfacePlotData(d)

  Verze 1.0.16 a novější.

SurfacePlotDataGrid

      SurfacePlotDataGrid (data,[x1,x2,y1,y2])

      SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])

      SurfacePlotDataGrid (data,[x1,x2,y1,y2],popisek)

      SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],popisek)

  Vykreslit plochu podle pravidelných obdélníkových dat. Data jsou dána v matici n krát m, kde řádky jsou souřadnice x a sloupce souřadnice y. Souřadnice x je rozdělena do stejnoměrných n-1 intervalů a souřadnice y do stejnoměrných m-1 intervalů. Meze `x1` a `x2` udávájí rozsah na ose x, který se má použit a obdobně meze `y1` a `y2` udávají rozsah na ose y. Pokud nejsou uvedeny meze `z1` a `z2`, jsou vypočteny z dat (budou to extrémní hodnoty v datech).

  Volitelně se může zadat popisek, pokud zadán není, použije se prázdný.

  Příklady:

      genius> SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])
      genius> SurfacePlotDataGrid(data,[-1,1,-1,1],"Moje data")
      genius> d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) = (0.1*i-1)^2-(0.1*j)^2;
      genius> SurfacePlotDataGrid(d,[-1,1,0,1],"poloviční sedlo")

  Verze 1.0.16 a novější.

SurfacePlotDrawLine

      SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)

      SurfacePlotDrawLine (v,...)

  Vykreslit čáru z `x1`,`y1`,`z1` do `x2`,`y2`,`z2`. `x1`, `y1`, `z1`, `x2`, `y2`, `z2` může být pro delší lomené čáry nahrazeno maticí `n` krát 3.

  Mohou být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna nebo legendy. Stačí přidat argument v podobě řetězce `"color"`, `"thickness"`, `"window"` nebo `"legend"` a za ním určit barvu, tloušťku, okno jako 6prvkový vektor nebo legendu.

  Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná GTK, jako `"red"`, `"blue"`, `"yellow"`, apod. Nebo druhou možností je zadat barvu ve formátu RGB jako `"#rgb"`, `"#rrggbb"` nebo `"#rrrrggggbbbb"`, kde r, g a b jsou číslice šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností, od verze 1.0.18, je také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1, např. `[1.0,0.5,0.1]`.

  Okno by mělo být zadáno buď obvyklým způsobem jako `[x1,x2,y1,y2,z1,z2]` nebo alternativně může být použit řetězec `"fit"`, v kterémž to případě bude rozsah x určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.

  A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda tiskne.

  Příklady:

      genius> SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)
      genius> SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])

  Dostupné ve verzi 1.0.19 a novějších.

SurfacePlotDrawPoints

      SurfacePlotDrawPoints (x,y,z,...)

      SurfacePlotDrawPoints (v,...)

  Vykreslit bod v `x`,`y`,`z`. Vstupem může být matice `n` krát 3 pro `n` různých bodů. Tato funkce má v podstatě stejné vstupní údaje jako SurfacePlotDrawLine.

  Mohou být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna nebo legendy. Stačí přidat argument v podobě řetězce `"color"`, `"thickness"`, `"window"` nebo `"legend"` a za ním určit barvu, tloušťku, okno jako 6prvkový vektor nebo legendu.

  Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná GTK, jako `"red"`, `"blue"`, `"yellow"`, apod. Nebo druhou možností je zadat barvu ve formátu RGB jako `"#rgb"`, `"#rrggbb"` nebo `"#rrrrggggbbbb"`, kde r, g a b jsou číslice šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností je také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1.

  Okno by mělo být zadáno buď obvyklým způsobem jako `[x1,x2,y1,y2,z1,z2]` nebo alternativně může být použit řetězec `"fit"`, v kterémž to případě bude rozsah x určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.

  A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda tiskne.

  Příklady:

      genius> SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)
      genius> SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])

  Dostupné ve verzi 1.0.19 a novějších.

VectorfieldClearSolutions

      VectorfieldClearSolutions ()

  Vymazat řešení vykreslené funkcí `VectorfieldDrawSolution`.

  Verze 1.0.6 a novější.

VectorfieldDrawSolution

      VectorfieldDrawSolution (x, y, dt, tdelka)

  Když je aktivní vykreslování vektorového pole, vykreslí řešení se zadanou počáteční podmínkou. Použita je standardní Rungeho-Kuttova metoda s přírůstkem `dt` pro interval délky `tdelka`. Řešení v grafu zůstanou, dokud není zobrazen jiný graf nebo není zavolána funkce `VectorfieldClearSolutions`. Pro vykreslení řešení můžete použít i grafické rozhraní a počáteční podmínky zadat pomocí myši.

  Verze 1.0.6 a novější.

VectorfieldPlot

      VectorfieldPlot (fcex, fcey)

      VectorfieldPlot (fcex, fcey, x1, x2, y1, y2)

  Vykreslit dvourozměrné vektorové pole. Funkce `fcex` by měla být dx/dt vektorového pole a funkce `fcey` by měla být dy/dt vektorového pole. Funkce by měly přebírat dvě reálná čísla `x` a `y` nebo jedno komplexní číslo. Pokud je parametr `VectorfieldNormalized` nastaven na `true`, pak je velikost vektorů normalizována. To znamená, že je zobrazen jen směr a velikost ne.

  Volitelně můžete zadat meze vykreslovaného okna jako souřadnice `x1`, `x2`, `y1`, `y2`. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz `LinePlotWindow`).

  Parametr `LinePlotDrawLegends` ovládá vykreslování legendy.

  Příklady:

      genius> VectorfieldPlot(`(x,y)=x^2-y, `(x,y)=y^2-x, -1, 1, -1, 1)

Předcházející | Nahoru | Další
Symbolické operace | Domů | Kapitola 12. Příklad programů v jazyce GEL