Hi Andrew - Thanks! It will take me some time to absorb this. The only question I have right now is how are the tile lines aligned with the cave? Are they north-south? On the centerline? Do they take an "orientation" parameter?
I looked over the symbols actually in Therion. I found a suitable handrail symbol. It is, in fact, exactly the symbol that is in "On Station". There are also both line and point symbols for stairs. The line symbol won't work. I need to check the point symbol to see how it works. The stairs in Stark Caverns go around several curves. I might wind up using visible borders, or perhaps repurposing the rock edge symbol, and then just drawing the steps individually. The electric light symbol should be pretty easy to create. I have created other point symbols. I found references to a boardwalk symbol in the Wiki, but I don't think it will be useful. It looks like the symbol width is always the same regardless of how wide the actual feature is. -- Bill Gee On Thursday, January 3, 2019 9:07:42 AM CST Andrew Atkinson via Therion wrote: > > On 03/01/2019 02:20, Bill Gee via Therion wrote: > > I was at the cave a few days ago. I think I will need symbols for the > > following items: > > > > Tiled floor > > You can use the blocks code I have been working on > > https://therion.speleo.sk/wiki/metapost#customisable_area_blocks_with_different_number_of_sides > > For squares use > > symbol_distance:=0.85; % Distance between the blocks as set out in a > rectangular grid > block_randomisation:=0; % Max each point of the base block can be moved. > Too big and they can intersect themselves > base_rotation:= 45; % Rotation from 0 of base block, can be used to set > all blocks to the same angle > random_rotation:= 0; % Rotation either side of base rotation eg 20 will > be plus or minus 10 each side > min_scale_factor:=1; % Minimum multiplier used for the base shape > add_scale_factor:= 0; % Added to the minimum multiplier to get the > maximum scale > block_rectangle:=1; % How much longer the block is than it is wide, > before randomising > shift_randomisation:=0; % Max random amount block can be moved from the > original grid > %Now set the proportions of different sided block > b_tri:=0; > b_quad:=1; > b_pent:=0; > b_hex:=0; > > If you do not want the grouting (gaps) use symbol_distance:=0.707; > > This misses out all the ones on the edge > > To improve this a bit change > > exitif xpart (p intersectiontimes qq) < 0; > > to > > exitif xpart (p intersectiontimes qq) < 10; > > This does not fix if fully to do that you will need to comment out, or > remove 2 more lines > > %if pointinside((i,j),p,outside): % Cleans lines on border, > assumably ones outside with just an edge touching > thclean qq; > thclean qq; > thclean qq; > thclean qq; > thdraw qq; > %fi; > > I really wish I knew exactly what this line did, but I just copied it > from another area blocks. > > Hexagons also tessellate giving a nice effect, but need code > modification to align > > These settings > > symbol_distance:=0.95; % Distance between the blocks as set out in a > rectangular grid > block_randomisation:=0; % Max each point of the base block can be moved. > Too big and they can intersect themselves > base_rotation:= 0; % Rotation from 0 of base block, can be used to set > all blocks to the same angle > random_rotation:= 0; % Rotation either side of base rotation eg 20 will > be plus or minus 10 each side > min_scale_factor:=1; % Minimum multiplier used for the base shape > add_scale_factor:= 0; % Added to the minimum multiplier to get the > maximum scale > block_rectangle:=1; % How much longer the block is than it is wide, > before randomising > shift_randomisation:=0; % Max random amount block can be moved from the > original grid > %Now set the proportions of different sided block > b_tri:=0; > b_quad:=0; > b_pent:=0; > b_hex:=1; > > and put this bit of code in the appropriate place (first and last 2 > lines not modified > > iu := uu * block_rectangle; > blocks := b_tri+b_quad + b_pent + b_hex; > k:=0; > tmp_pic := image( > for i = xpart llcorner q step (symbol_distance * block_rectangle * > uu) until xpart urcorner q: > k:=k+1; > for j = ypart llcorner q step (symbol_distance*uu) until ypart > urcorner q: > m:= j- (k mod 2) * 0.5 * uu * symbol_distance; > pick_sides := uniformdeviate(blocks); > if pick_sides < b_tri: > > Plus 16 lines later on change (j to an m) > > shifted ((i ,j) randomized (shift_randomisation * uu)); > > to > > shifted ((i ,m) randomized (shift_randomisation * uu)); > > > > > > Hand rails > > https://therion.speleo.sk/wiki/metapost#line_-_hand_rail > > I've been meaning to put this one up for a while, so thanks for the prod > > Good luck > > Andrew > _______________________________________________ > Therion mailing list > [email protected] > https://mailman.speleo.sk/listinfo/therion > _______________________________________________ Therion mailing list [email protected] https://mailman.speleo.sk/listinfo/therion
