==== 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 {{:czsk:mmj:bez_layout.jpg|:czsk:mmj:bez_layout.jpg}} a pokud nastavíme layout {{:czsk:mmj:layout.jpg|:czsk:mmj:layout.jpg}} **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 [[http://therion.speleo.sk/download.php|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ě. --- //[[fenrir@profisit.cz|Jan Balcařík]] 23/11/2006 10:25//