[Therion] Symbol for fixed ladder

Martin Sluka martinsluka at mac.com
Wed Jan 25 08:24:57 CET 2017


;) it is in normal distribution 









code metapost

def l_u_steps (expr P) =
 if known ATTR_c: c := scantokens ATTR_c; else: c := 2; fi;
 if ATTR__elevation:
   if (c < 2):
     thwarning("Invalid stairs definition (c<2)");
     pickup PenA;
     draw P withcolor red;
   else:
     path PP;
     if (ypart point 0 of P) < (ypart point length P of P):
       PP := P;
     else:
       PP := reverse P;
     fi;
     path p;     
     for j:=0 upto ((length PP) - 1):
       p := (point j of PP) -- (point (j + 1) of PP);
       c := ceiling(abs((ypart point 0 of p) - (ypart point length p of p)) / (0.2 / Scale * 72 / 2.54));  % 20 cm height
       if (c < 2): c:=2 fi;
       pair cp;
       cp = point length p of p - point 0 of p;
       dx := (xpart cp) / c;
       dy := (ypart cp) / c;
       cp := point 0 of p;
       for i:= 0 upto c - 1:
         l_border_visible(cp -- cp + (0,dy) -- cp + (dx,dy));
         cp := cp + (dx, dy);
       endfor;
       %draw P;
     endfor;
   fi;
 else: 
   if known ATTR_l: l := scantokens ATTR_l; else: l := (length(P)-2)/2; fi;
   if ((length(P) < 4) or (c < 2)) or ((odd length P) and (not known ATTR_l)):
     thwarning("Invalid stairs definition (l) " if c<2: &" (c<2)" fi);
     pickup PenA;
     draw P withcolor red;
   else:
     thclean P -- cycle;
     path p, q;
     p = subpath (1, 1+l) of P;
     q = reverse subpath (l+2, length(P)) of P;
     lp := arclength(p);
     lq := arclength(q);
     for i=1 upto c:
       l_border_visible(point(arctime ((i-1)/(c-1)*lp) of p) of p --
point(arctime ((i-1)/(c-1)*lq) of q) of q);
     endfor;
     l_border_visible(p);
     l_border_visible(q);
     drawoptions(withcolor 0.3*white);
     %p_label(decimal c, point 0.5 of P, 0, 6);
     drawoptions();
   fi;
 fi;
enddef;

endcode

m.

> 24. 1. 2017 v 23:51, Benedikt Hallinger via Therion <therion at speleo.sk>:
> 
> Hello,
> i get gray hair with metapost while i want to make a line symbol for ladders, so i can nicely draw them in my maps as the cave have alot of them.
> 
> The basic idea i had was, t define a symbol of one "rung" segment (rung and a little of either sides, like the letter "H") as a symbol picture. Then i wanted to apply this image seamlessly over the length of the given path (straight lines)
> What i have for now is the following, however it does not show at all (still shows a red line with symbol set AUT in effect), so i have no clue how to even debug this.
> 
> I tried to start with the example from thbook salted a little with peeks to the internal metapost codes.
> 
> Can someone assist please?
> 
> Thank you very much!
> 
> 
> # Symbol for fixed ladder
>    def l_fixedladder_SKBB (expr P) =
>      T:=identity;
>      cas := 0;
>      dlzka := arclength P;
>      mojkrok:=adjust_step(dlzka, 1.0u);
> 
>      pickup PenC;
>      sideL := (-.20u,0)--(-.20u,0.20u);
>      sideR := (.20u,0)--(.20u,0.20u);
>      rung  := (-.20u,0.10u)--(.20u,0.10u);
> 
>      picture symbol,test_symbol;
>      symbol:= image (
>                 thdraw sideL;
>                 thdraw sideR;
>                 thdraw rung;
>                 );
> 
>      forever:
>            t := arctime cas of P;
>            thdraw symbol shifted (point t of P) withcolor black;
>            cas := cas + mojkrok;
>            exitif cas > dlzka + (mojkrok / 3); % for rounding errors
>      endfor;
> 
>    enddef;
> 
> _______________________________________________
> Therion mailing list
> Therion at speleo.sk
> https://mailman.speleo.sk/listinfo/therion

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.speleo.sk/pipermail/therion/attachments/20170125/fd51a5ae/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Sni?mek obrazovky 2017-01-25 v?8.15.34.png
Type: image/png
Size: 23893 bytes
Desc: not available
URL: <http://mailman.speleo.sk/pipermail/therion/attachments/20170125/fd51a5ae/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Sni?mek obrazovky 2017-01-25 v?8.14.24.png
Type: image/png
Size: 21132 bytes
Desc: not available
URL: <http://mailman.speleo.sk/pipermail/therion/attachments/20170125/fd51a5ae/attachment-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Sni?mek obrazovky 2017-01-25 v?7.51.52.png
Type: image/png
Size: 58047 bytes
Desc: not available
URL: <http://mailman.speleo.sk/pipermail/therion/attachments/20170125/fd51a5ae/attachment-0002.png>


More information about the Therion mailing list