This shows you the differences between two versions of the page.
|
metapost [2012/06/17 11:39] sluka typo |
metapost [2012/11/24 11:22] (current) daveclucas |
||
|---|---|---|---|
| Line 218: | Line 218: | ||
| endcode | endcode | ||
| + | **Code to define a user point symbol for a stalagmite boss** Dave Clucas 2012\\ | ||
| + | {{:metapost:boss.jpg|}} | ||
| + | |||
| + | def p_u_boss (expr pos,theta,sc,al)= | ||
| + | T:=identity aligned al rotated theta scaled sc shifted pos; | ||
| + | pickup PenD; | ||
| + | p := (0.08u,0.25u)..(0,0.29u)..(-0.08u,0.25u); | ||
| + | q := (0.16u,0.5u)..(0u,0.58u)..(-0.16u,0.5u); | ||
| + | for i=0 upto 9: | ||
| + | thdraw p rotated 36i; | ||
| + | thdraw q rotated 36i; | ||
| + | endfor | ||
| + | p := fullcircle scaled 0.15u; | ||
| + | thdraw p; | ||
| + | enddef; | ||
| + | |||
| + | **Code to define a user point symbol for a single large irregular block** Dave Clucas 2012\\ | ||
| + | |||
| + | {{:metapost:block.jpg|}} | ||
| + | def p_u_block(expr pos,theta,sc,al) = | ||
| + | T:=identity aligned al rotated theta scaled sc shifted pos; | ||
| + | path p q; | ||
| + | p := (2.3u,0.9u)--(0.65u,1u)--(-0.9u,0.6u)--(-2.15u,-0.1u)--(-2.35u,-0.25u)--(-2.5u,-0.5u)--(-2u,-0.65u)--(-0.75u,-0.65u)--(0.6u,-0.7u)--(1.1u,-0.5u)--(2.1u,-0.15u)--cycle; | ||
| + | pickup PenB; | ||
| + | thdraw p; | ||
| + | % The following line uses the code from Colour Dependant Visualization of Symbols by Bruce Mutton | ||
| + | if known colour_block_bg: thfill p withcolor colour_block_bg; else: thfill p withcolor (0.75,0.75,0.75); fi; | ||
| + | q := (-2.5u,-0.5u)--(-2u,-0.65u)--(-0.75u,-0.65u)--(0.6u,-0.7u)--(1.1u,-0.5u)--(2.1u,-0.15u)--(2.3u,0.9u)--(2.5u,0.7u)--(2.5u,0.5u)--(2.25u,-0.9u)--(1.1u,-1.3u)--(0.5u,-1.5u)--(-0.75u,-1.4u)--(-2u,-1.15u)--(-2.35u,-0.65u)--cycle; | ||
| + | thdraw q; | ||
| + | thfill q withcolor(0.6,0.6,0.6); | ||
| + | pickup PenD; | ||
| + | path p; | ||
| + | p := (-2u,-0.65u)--(-1.9u,-1u); | ||
| + | thdraw p; | ||
| + | path p; | ||
| + | p := (0.6u,-0.7u)--(0.5u,-1.3u); | ||
| + | thdraw p; | ||
| + | path p; | ||
| + | p := (2.1u,-0.15u)--(2.3u,-0.4u); | ||
| + | thdraw p; | ||
| + | enddef; | ||
| + | initsymbol("p_u_block"); | ||
| ---- | ---- | ||
| Line 921: | Line 963: | ||
| + | |||
| + | ---- | ||
| + | ---- | ||
| + | |||
| + | ===== Area blocks with colored rock-borders only (not filled) ===== | ||
| + | |||
| + | in case you use similar command: | ||
| + | symbol-colour area blocks [67 31 4] | ||
| + | |||
| + | code metapost | ||
| + | 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 2uu until xpart urcorner q: | ||
| + | for j = ypart llcorner q step 2uu 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: | ||
| + | thdraw qq; | ||
| + | fi; | ||
| + | endfor; | ||
| + | endfor; | ||
| + | ); | ||
| + | clip tmp_pic to p; | ||
| + | draw tmp_pic; | ||
| + | enddef; | ||
| + | This is modified a_blocks_SKBB definition with "thclean qq;" statement removed. Stacho Mudrák | ||
| + | |||
| + | == Another solution == | ||
| + | Another solution is to leave "thclean qq" on its original position and change | ||
| + | |||
| + | clip tmp_pic to p; | ||
| + | draw tmp_pic; | ||
| + | |||
| + | to | ||
| + | |||
| + | clip tmp_pic to p; | ||
| + | drawoptions(); | ||
| + | draw tmp_pic; | ||
| + | |||
| + | at the end of the macro definition. This approach preserves filling the blocks with a background colour. Martin Budaj | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | ---- | ||
| + | |||
| + | ===== Transparent area ===== | ||
| + | |||
| + | Q: Is there an additionally possibility to make this definition so that the area will be a bit transparent? | ||
| + | |||
| + | A: Try this code: | ||
| + | |||
| + | def_transparent_rgb(tr_lgrey, 0.73, 0.71, 0.75); | ||
| + | |||
| + | def a_u_lgrey(expr P) = | ||
| + | T:=identity; | ||
| + | thfill P withtransparentcolor tr_lgrey; | ||
| + | enddef; | ||
| + | |||
| + | There are a few predefined transparent colors, the most interesting of them is tr_bg (current scrap background). Standard opacity value (defined in the layout section) is applied. M. Budaj | ||
| ---- | ---- | ||
| ---- | ---- | ||