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