Změny značek - jak na to
Příklad 1 - změna výplně (array) typu debris
Do sekce code metapost kterou jsme vytvořily v předchozím kroku vložíme následující kód.
def a_debris (expr p) =
T:=identity;
% thclean p;
pickup PenC;
path q; q = bbox p;
picture tmp_pic;
tmp_pic := image(
for i = xpart llcorner q step 1u until xpart urcorner q:
for j = ypart llcorner q step 1u until ypart urcorner q:
draw ((-.2u,0)--(.2u,0))
rotated uniformdeviate(360)
shifted ((i,j) randomized 0.6u) withpen PenC;
endfor;
endfor;
);
clip tmp_pic to p;
draw tmp_pic;
enddef;
Jedná se o kód, který vygeneruje značku stejně jako když nic nenadefinujem. Musíme tedy udělat několik málo změn.
Změníme celkem 3 hodnoty a to na těchto řádkách
for i = xpart llcorner q step 1u until xpart urcorner q: for j = ypart llcorner q step 1u until ypart urcorner q: shifted ((i,j) randomized 0.6u) withpen PenC;
Hodnoty 1u a 06.u změníme takto
for i = xpart llcorner q step 0.7u until xpart urcorner q: for j = ypart llcorner q step 0.7u until ypart urcorner q: shifted ((i,j) randomized 0.4u) withpen PenC;
Co jsme vlastně touto změnou udělali? První dva řádky “řekly” compileru že značky se mají generovat víc u sebe, třetí řádek říká že se mají generovat ve více nahodilém pořadí.
Pro toho komu není jasné jak celou sekci vložit do layout v souboru thconfig přikládám kompletní thconfig.
source homolak
layout homolak
#rozlišení
scale 1 100
#barva pozadí mapy
color map-bg 85 # dle barvy [100 100 100]
# barva mapy dle výšky
#color map-fg altitude
transparency on
opacity 90
# dopíše k osobam kteří měřili délku změřených poligonú
statistics topo-length on
# V jakém jazyku bude mapa
language cz
#Zobrazovat legendu
legend on
map-header 8 100 e
# nastavuje typ použitých symbolu SKBB/UIS/ASF/CCNP
#symbol-set SKBB
#zobrazovat jmena měřičských bodu
debug station-names
# nastaveni mřižky
grid bottom
grid-size 10 10 10 m
#rotace mapy
#rotate 30
#symbol-assign point station UIS
#symbol-hide point station
#Zrušit generování bodu (všeho)
#symbol-hide group all
#symbol-hide point section
#symbol-show line wall
#symbol-show line survey
#symbol-hide line flowstone
code metapost
def a_debris (expr p) =
T:=identity;
% thclean p;
pickup PenC;
path q; q = bbox p;
picture tmp_pic;
tmp_pic := image(
for i = xpart llcorner q step 1u until xpart urcorner q:
for j = ypart llcorner q step 1u until ypart urcorner q:
draw ((-.2u,0)--(.2u,0))
rotated uniformdeviate(360)
shifted ((i,j) randomized 0.6u) withpen PenC;
endfor;
endfor;
);
clip tmp_pic to p;
draw tmp_pic;
enddef;
endcode
endlayout
export map -output output/homolak.pdf -layout homolak
Tak tedy jak to může vypadat na mapě
bez nastavení layout
a pokud nastavíme layout
Příklad 2 - změna výplně (array) typu blocks
Do sekce code metapost kterou jsme vytvořily v předchozím kroku vložíme následující kód.
def a_blocks (expr p) =
T:=identity;
pickup PenC;
path q, qq; q = bbox p;
picture tmp_pic;
uu := max(u, (xpart urcorner q - xpart llcorner q)/100, (ypart urcorner q - ypart llcorner q)/100);
tmp_pic := image(
for i = xpart llcorner q step 2.0uu until xpart urcorner q:
for j = ypart llcorner q step 2.0uu until ypart urcorner q:
qq := punked (((-.5uu,-.5uu)--(.5uu,-.5uu)--(.5uu,.5uu)--(-.5uu,.5uu)--cycle)
randomized (uu/2))
rotated uniformdeviate(360)
shifted ((i,j) randomized 1.6uu);
if xpart (p intersectiontimes qq) < 0:
thclean qq;
thdraw qq;
fi;
endfor;
endfor;
);
clip tmp_pic to p;
draw tmp_pic;
enddef;
Jedná se o kód, který vygeneruje značku stejně jako když nic nenadefinujem. Musíme tedy udělat několik málo změn.
Změníme opět celkem 3 hodnoty a to na těchto řádkách
for i = xpart llcorner q step 2.0uu until xpart urcorner q: for j = ypart llcorner q step 2.0uu until ypart urcorner q: shifted ((i,j) randomized 1.6uu);
Hodnoty 2.0uu a 1.6uu změníme takto
for i = xpart llcorner q step 1.0uu until xpart urcorner q: for j = ypart llcorner q step 1.0uu until ypart urcorner q: shifted ((i,j) randomized 1.0uu);
Co jsme vlastně touto změnou udělali? První dva řádky “řekly” compileru že značky se mají generovat víc u sebe a menší třetí řádek říká že se mají generovat ve více nahodilém pořadí.
Jak si můžete všimnout vždy použijeme originální definici značky a trošku poupravíme hodnoty. Je zde tedy otazka kde sehnat originální definice značek.
Kde sehnat originální definice všech značek
Na stránkách therion.speleo.sk/download.php je k dispozici zdrojový kód programu Therion (Source code).
Po stažení a rozbalení, “jděte” do adresáře therion / mpost.
V tomto adresáři naleznete soubory thArea, thLine, thPoint, atd. kde každý soubor v sobě specifikuje oblast definic určenou názvem (thArea - pole, thPoint - body).
Veškeré definice začínají klíčovým slovem def a končí slovem enddef; Pokud hledáme kupříkladu definici link (čára) typu slope (svah) nalezneme jej v souboru thLine pod jménem l_slope_SKBB kde první písmenko značí typ u nás tedy line další slovo značí o jaký typ značky se jedná tak tedy slope a poslední nás nezajíma jelikož pro naše potřeby jej odstraníme tak tedy značka se bude jmenovat l_slope. Překopírujeme tedy vše co je uvnitř bloku
def a_slope_SKBB (.....)
....
....
enddef
do thconfig, a přejmenujeme na a_slope a nyní již stačí změnit správné hodnoty nejlépe pokusným způsobem.
Upozornění
Pokud dojde k tomu že Vám Therion při kompilaci oznamí chybu buď jste špatně předefinovali značku a to buď na příliš malé hodnoty (upravte hodnoty a zkuste znovu generovat mapu), nebo jste nějak prapodivně změnili definici (Najdětě znovu definici v zdrojovem souboru a vložte ji do thconfig a změňte znovu co je potřeba).
Na závěr
Postupně jak budu upravovat nové značky budu je přidávat do sekce Změny značek, oblastí a čar a tudíž budete moci porovnat popřípadě zjistit jak jsem danou značku upravil já.
V případě nejasností neváhejte a napište do therion konference, popřípadě přímo mě.
— Jan Balcařík 23/11/2006 10:25

