Vladimír Lukeš: METAFONT - Jak kreslit obrázky
Predchozi (Obsah) Dalsi

5. Křivky

Křivky jsou v METAFONTu tvořeny jako Beziérovy křivky třetího řádu (1) , které se matematicky popisují pomocí jistých polynomů třetího stupně (Bernsteinovy polynomy). Použití Beziérových křivek má mnoho výhod, zaprvé je snadné a rychlé tyto křivky vyrastrovat, neboť existuje velmi efektivní rekurzivní algoritmus, k jejich popisu stačí pouze čtyři body v rovině a není problémem více křivek plynule navázat, mají-li společný koncový bod.

Popisovat každou křivku čtyřmi body, přičemž dva prostřední jsou pouze řídicí a leží mimo ni, by bylo nepraktické, proto možností jak křivku konstruovat je více. METAFONT si pak polohy řídicích bodů dopočítá sám ze zadaných parametrů. Těmito parametry může být například napětí křivky nebo směr její tečny v určitém bodě.

Nejjednodušší křivkou je rovná čára, tu získáme snadno následujícím způsobem.


draw z1--z2;

obrazek 4


Příkaz draw zajistí vyrastrování křivky. Jestliže nahradíme výraz z1--z2 výrazem z1..z2..z3, dostaneme křivku, která je volným spojením uvedených bodů.


draw z1..z2..z3;

obrazek 5


Křivku lze zkonstruovat také pomocí jednoho nebo více kontrolních bodů.


draw z1..controls z2 and z3..z4;

obrazek 6


Výsledný tvar křivky může uživatel ovlivnit též tím, že definuje směr její tečny v daném bodě




obrazek 7


nebo napětí (tuhost) křivky


draw z1{dir90}..tension 3..z2;

obrazek 8


Zvláštním případem křivky je křivka uzavřená, která začíná a končí v témže bodě. Tu vytvoříme příkazem cycle. Můžeme ji pak jednoduše vykreslit příkazem draw, vyplnit příkazem fill, nebo vyplnit a vykreslit pomocí filldraw.


filldraw z1..z2..z3..z4..cycle;

obrazek 9




Predchozi
Converted by Selathco 0.85 on 19.06.1999 11:53
Dalsi