Ahoj, v prílohe to máš, otvor v Notepade++ alebo Wordpade. Paľo
Dňa 2019-01-10 23:11 Matej Ševčík via Therion-cs napísal(a):
Ahojte Prosím vás nemá niekto definíciu pre symboly "area_debris_AUT", "area_blocks_AUT" a "area_pebbles_AUT", chcel by som ich modifikovať a viem nájsť len definíciu pre tieto symboly typu SKBB. Ďakujem M. Ševčík _______________________________________________ Therion-cs mailing list Therion-cs@speleo.sk https://mailman.speleo.sk/listinfo/therion-cs
% Austrian Symbol Set, author Georg Pacher % color (for Austrian symbol-set) color col_water_bg; col_water_bg :=(226/255,244/255,253/255); %%%%%%%%%%%%%%%%%%%%%%% %% areas % returns true if pair point lies within path q. % outside_point is any pair outside of path q (needed for reference). vardef pointinside(expr pt,q,outside_point)= T:=identity; path test; test:= outside_point--pt; %thdraw test; boolean isinside; isinside:=false; numintersections:=recgetnumintersections(test,q,0); if (numintersections <0): isinside:=true; elseif odd(numintersections): isinside:=true; else: isinside:=false; fi; isinside enddef; % get number of intersection between paths p (length 1!) and q % recnum is needed for limitation of recursions. % If the number of allowed recursions is reached, a negativ number of intersections is returned vardef recgetnumintersections(expr p,q,recnum)= pair inter; save preinter; save postinter; save numintersections; path preinter, postinter; inter:=p intersectiontimes q; %show recnum; if recnum >25: numintersections:=-100; else: if xpart(inter)>0 : %show (xpart inter); % split p into two paths and call yourself again preinter:=subpath (0,xpart(inter)-2eps) of p; postinter:=subpath (xpart(inter)+2eps,1) of p; numintersections:= recgetnumintersections(preinter,q,recnum+1) + recgetnumintersections(postinter,q,recnum+1) + 1; else: numintersections:=0; fi; fi; numintersections enddef; beginpattern(pattern_water_AUT); draw origin--10up withpen pensquare scaled (0.02u); patternxstep(.18u); patterntransform(identity rotated 90); endpattern; beginpattern(pattern_sump_AUT); draw origin--(0,.25u) withpen pensquare scaled (0.02u); draw origin--(.25u,0) withpen pensquare scaled (0.02u); endpattern; beginpattern(pattern_sand_AUT); pickup PenC; p:= origin -- (0.01u,0.01u); for i=0.0u step 0.2u until 2.4u: for j=0.0u step 0.2u until 2.4u: draw p rotated uniformdeviate(360) shifted ((i,j) randomized 0.09u); endfor; endfor; if BaseScale<=2.5: my_step:=2.4u; else: my_step:=2.6u; fi; patternstep(my_step,my_step); endpattern; beginpattern(pattern_pebbles_AUT); pickup PenC; path qq; for i=0.0u step 0.3u until 5.1u: for j=0.0u step 0.3u until 5.1u: qq := (superellipse((.1u,0),(0,.05u),(-.1u,0),(0,.-.05u),.75)) randomized (u/45) scaled (uniformdeviate(0.4)+.55) rotated uniformdeviate(360) shifted ((i,j) randomized 0.15u); draw qq; endfor; endfor; patternstep(5.1u,5.1u); endpattern; beginpattern(pattern_ice_AUT); pickup PenC; p:=(-.15u,.0u) -- (0.15u,.0u); draw p; draw p shifted (0.25u,.0u) rotated (90); draw p shifted (0.45u,0.25u); draw p shifted (0.0u,0.45u) rotated (90); patternxstep(.9u); patternystep(0.5u); endpattern; def a_water_AUT (expr Path) = T:=identity; thclean Path; pickup PenC; thfill Path withcolor col_water_bg; thfill Path withpattern pattern_water_AUT; thdraw Path; enddef; def a_sump_AUT (expr Path) = T:=identity; thclean Path; pickup PenC; thfill Path withcolor col_water_bg; thfill Path withpattern pattern_sump_AUT; thdraw Path; enddef; def a_sand_AUT (expr Path) = T:=identity; % thclean Path; thfill Path withpattern pattern_sand_AUT ; enddef; let a_clay_AUT = a_sand_AUT; def a_pebbles_AUT (expr p) = T:=identity; thfill p withpattern pattern_pebbles_AUT; enddef; def a_debris_AUT (expr p) = T:=identity; symbol_distance:=1.0; scale_factor:= 0.3; pickup PenC; path q, qq; q = bbox p; pair outside; outside:= ulcorner q + up; 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 symbol_distance*uu until xpart urcorner q: for j = ypart llcorner q step symbol_distance*uu until ypart urcorner q: qq := punked (((-.5uu,-.5uu)--(.5uu,-.5uu)--(1.05uu,0.01uu)--(.5uu,.5uu)--(-.5uu,.5uu)--cycle) randomized (uu/2)) scaled (uniformdeviate(0.4)+scale_factor ) rotated uniformdeviate(360) shifted ((i,j) randomized 0.5uu); if xpart (p intersectiontimes qq) < 0: if pointinside((i,j),p,outside): thclean qq; thdraw qq; fi; else: qq:= qq scaled (uniformdeviate(.2)+.5 ) if xpart (p intersectiontimes qq) < 0: if pointinside((i,j),p,outside): thclean qq; thdraw qq; fi; fi; fi; endfor; endfor; ); clip tmp_pic to p; drawoptions(); draw tmp_pic; enddef; def a_ice_AUT (expr p) = T:=identity; thclean p; thfill p withpattern pattern_ice_AUT; pickup PenC; thdraw p; enddef; def a_snow_AUT (expr P) = T:=identity; pickup PenC; path q; q = bbox P; picture tmp_pic, tmp_sn; pair z; tmp_sn := image( pickup PenC; p := origin--(0,.2*u); draw p; draw p rotated (60); draw p rotated (120); draw p rotated (180); draw p rotated (240); draw p rotated (300); p := ((0,.3u)--(0,0.2u)--(0.1u,0.2u)) rotatedaround ((0,0.2u),45); draw p; draw p rotated (60); draw p rotated (120); draw p rotated (180); draw p rotated (240); draw p rotated (300); ); tmp_pic := image( for i = xpart llcorner q step 1.0u until xpart urcorner q: for j = ypart llcorner q step 1.0u until ypart urcorner q: z:=((i,j) randomized 0.5u); if xpart (P intersectiontimes ((bbox tmp_sn) shifted z)) < 0: draw tmp_sn shifted z; fi; endfor; endfor; ); clip tmp_pic to P; draw tmp_pic; thdraw P; enddef; def a_blocks_AUT (expr p) = T:=identity; symbol_distance:=1.6; scale_factor:= 0.8; pickup PenC; path q, qq; q = bbox p; pair outside; outside:= ulcorner q + up; 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 symbol_distance*uu until xpart urcorner q: for j = ypart llcorner q step symbol_distance*uu until ypart urcorner q: qq := punked (((-.5uu,-.5uu)--(.5uu,-.5uu)--(1.05uu,0.01uu)--(.5uu,.5uu)--(-.5uu,.5uu)--cycle) randomized (uu/2)) scaled (uniformdeviate(0.7)+scale_factor ) rotated uniformdeviate(360) shifted ((i,j) randomized 0.75uu); if xpart (p intersectiontimes qq) < 0: if pointinside((i,j),p,outside): thclean qq; thdraw qq; fi; else: qq:= qq scaled (uniformdeviate(.2)+.5 ) if xpart (p intersectiontimes qq) < 0: if pointinside((i,j),p,outside): thclean qq; thdraw qq; fi; fi; fi; endfor; endfor; ); clip tmp_pic to p; drawoptions(); draw tmp_pic; enddef; %% lines def l_wall_pit_AUT (expr P) = T:=identity; % draw outer path pickup PenA; thdraw P; laenge:= arclength P; pair inner[],innerdir[], inter; pair test; samplingdistance:=max(0.15u,laenge/1500); path testcircle; % testcircle, used to test, whether the path makes a 'v'-like bend, % where normal sampling and offsetting gives poor results for the parallel line % size of testcircle= size PenA/2 + 2* (distance between outer and inner line) % + PenC (inner line) testcircle := halfcircle scaled (.5*u/10+2*.125u+.5*u/10) shifted (0,.5*u/10); cur:=samplingdistance/2; count:=0; forever: t:= arctime cur of P; inter:=P intersectiontimes (testcircle rotated (angle thdir(P,t)) shifted (point t of P)); %thdraw testcircle rotated (angle thdir(P,t)) shifted (point t of P) withpen (pencircle scaled 0.01u) ; if (xpart inter) >=0: % we are at a 'sharp bend', so set next point to intersectionpoint cur:=cur+samplingdistance; t := max( xpart inter, arctime cur of P); %thdraw point t of P withcolor 0.7*green; forever: t:= arctime cur of P; inter:=P intersectiontimes (testcircle rotated (angle thdir(P,t)) shifted (point t of P)); exitif (xpart inter <0); cur := cur + samplingdistance; exitif (cur >=laenge); endfor; if (cur <laenge): inner[count]:=(point t of P + .125u*unitvector(thdir(P,t) rotated 90) ); innerdir[count]:=unitvector(thdir(P,t)); count := count+1; fi; else: inner[count]:= (point t of P + .125u*unitvector(thdir(P,t) rotated 90) ); innerdir[count]:=unitvector(thdir(P,t)); %thdraw inner[count] withpen PenD withcolor 0.5*red; count:=count +1; cur:= cur+ samplingdistance; fi; exitif (cur >=laenge); endfor; if count>2: % draw inner path pickup PenC; path innerpath; innerpath = for i=0 upto count-2: inner[i]{(innerdir[i])} .. endfor if cycle P: cycle; else: inner[count-1]; fi; thdraw innerpath; % draw the triangles path draw_triangle; pair l_triangle; laenge:= arclength innerpath; symsize:= adjust_step(laenge,0.5u); triangle_width:=symsize/2; cur:=(symsize/2); t := arctime (cur) of innerpath; t1:= arctime (cur-triangle_width/2) of innerpath; t2:= arctime (cur+triangle_width/2) of innerpath; l_triangle := (point t of innerpath); if ATTR__height >= 10: thfill else: thdraw fi (subpath (t1,t2) of innerpath) -- ((point t of innerpath) + symsize/2 * unitvector(thdir(innerpath,t) rotated 90)) -- cycle; for cur=(symsize/2) step symsize until laenge: t := arctime (cur) of innerpath; test := (point t of innerpath); my_dist := length(test-l_triangle); if (abs(my_dist-symsize) < 0.05u) or (my_dist>symsize): t1:= arctime (cur-triangle_width/2) of innerpath; t2:= arctime (cur+triangle_width/2) of innerpath; draw_triangle:=(subpath (t1,t2) of innerpath) -- ((point t of innerpath) + symsize/2 * unitvector(thdir(innerpath,t) rotated 90)) -- cycle; if xpart (draw_triangle intersectiontimes P) < 0: if ATTR__height >= 10: thfill draw_triangle; else: thclean draw_triangle; thdraw draw_triangle; fi; l_triangle:= test; fi; fi; endfor; fi; enddef; def l_wall_sand_AUT (expr P) = T:=identity; cas := 0; dlzka := arclength P; mojkrok:=adjust_step(dlzka, 0.1u); pickup PenC; forever: t := arctime cas of P; thdraw (((0.01u,0.01u)--origin) rotated uniformdeviate(360) shifted ((point t of P) + (uniformdeviate 1) * .4u * unitvector(thdir(P,t) rotated -90))); cas := cas + mojkrok; exitif cas > dlzka + (mojkrok / 3); % for rounding errors endfor; pickup PenC; thdraw P; enddef; def l_wall_pebbles_AUT (expr P) = T:=identity; cas := 0; dlzka := arclength P; mojkrok:=adjust_step(dlzka, .18u); pickup PenC; q:=superellipse((.1u,0),(0,.05u),(-.1u,0),(0,.-.05u),.75); forever: t := arctime (cas + mojkrok/2) of P; thdraw q randomized (u/45) rotated (angle(thdir(P,t)) + (normaldeviate*40)) shifted point t of P; cas := cas + mojkrok; exitif cas > dlzka - (2*mojkrok/3); % for rounding errors endfor; enddef; let l_wall_clay_AUT = l_wall_sand_AUT; def l_wall_debris_AUT (expr P) = T:=identity; pickup PenC; laenge := arclength P; path block; path old_block; cur := 0; t:= arctime cur of P; % draw first block old_block := (((-.0u,-.0u)--(.25u,-.15u)--(.45u,0.01u)--(.2u,.25u)--(.05u,.15u)--cycle)); block_width := (xpart urcorner old_block - xpart ulcorner old_block); old_block:=old_block rotated angle(thdir(P,0)) shifted point t of P; thclean old_block; thdraw old_block; cur := cur + 0.9*block_width; t:= arctime cur of P; % proceed with path forever: % generate random block block := punked (((-.25u,-.25u)--(0.25.u,-.25u)--(0.50u,0.01u)--(0.25u,.25u)--(-.25u,.25u)--cycle) randomized (u/4)) scaled (uniformdeviate(0.3)+.4) rotated uniformdeviate(360); % check width of block block_width := (xpart urcorner block - xpart ulcorner block); exitif cur > (laenge- 2.5*block_width/2); % find next position where the block fits in without intersecting the previous one forever: exitif xpart ( (block rotated angle(-direction t of P) shifted point t of P) intersectiontimes old_block) < 0; cur:=cur+0.01u; t:= arctime cur of P; exitif cur > (laenge- 2.5*block_width/2); endfor; exitif cur > (laenge- 2.5*block_width/2); old_block:= block rotated angle(-direction t of P) shifted point t of P; thclean old_block; thdraw old_block; cur := cur + block_width/2; t:= arctime cur of P; endfor; t:= arctime laenge-eps of P; % generate last block block := (((-.0u,-.0u)--(.25u,-.15u)--(.45u,0.01u)--(.2u,.25u)--(.1u,.15u)--cycle)); block_width := (xpart urcorner block - xpart ulcorner block); % scale last block to fit in the remaining gap scale_factor:=1.5*(laenge-cur)/block_width; forever: exitif scale_factor < 0; % bruces stab at preventing endless loop at large scales exitif xpart ( (block rotated angle(-direction t of P) scaled scale_factor shifted (point t of P)) intersectiontimes old_block) < 0; scale_factor:=scale_factor-0.01; endfor; if scale_factor > 0: thclean block rotated angle(-direction t of P) scaled scale_factor shifted (point t of P); thdraw block rotated angle(-direction t of P) scaled scale_factor shifted (point t of P); fi; enddef; def l_wall_blocks_AUT (expr P) = T:=identity; pickup PenC; laenge := arclength P; path block; path old_block; cur := 0; t:= arctime cur of P; % draw first block old_block := ( (.7u,-.35u)--(.85u,0.01u)--(.4u,.5u)--(.1u,.3u)--(-.0u,-.0u) ); block_width := (xpart urcorner old_block - xpart ulcorner old_block); old_block:=old_block rotated angle( thdir(P,0) ) shifted point t of P; thclean (old_block--cycle); thdraw old_block; cur := cur + block_width/2; t:= arctime cur of P; forever: % generate random block block := punked ( ( (.8u,-.35u)--(.85u,0.01u)--(.6u,.4u)--(.1u,.1u)--(-.0u,-.3u) ) randomized (0.3u) ) scaled (uniformdeviate(0.3)+.65) rotated (uniformdeviate(45)-15); % check width of block block_width := (xpart urcorner block - xpart ulcorner block); exitif cur > (laenge- 3.5*block_width/2); % find next position where the block fits in without intersecting the previous one forever: exitif xpart ( ((block--cycle) rotated angle(direction t of P) shifted point t of P) intersectiontimes old_block) < 0; cur:=cur+0.01u; t:= arctime cur of P; exitif cur > (laenge- 3.5*block_width/2); endfor; exitif cur > (laenge- 3.5*block_width/2); old_block:= block rotated angle(direction t of P) shifted point t of P; thclean (old_block--cycle); thdraw old_block; cur := cur + block_width/2; t:= arctime cur of P; endfor; % generate last block t:= arctime laenge-eps of P; block := (( (-.15u,-.35u)--(.0u,.0u)--(-.45u,.5u)--(-.75u,.3u)--(-.85u,-.0u)) ); block_width := (xpart urcorner block - xpart ulcorner block); % scale last block to fit in the remaining gap scale_factor:=(laenge-cur)/block_width; forever: exitif scale_factor < 0; exitif xpart ( ( (block) rotated angle (direction t of P) scaled scale_factor shifted (point t of P) ) intersectiontimes old_block) < 0; scale_factor:=scale_factor-0.001; endfor; if scale_factor > 0: thclean (block--cycle) rotated angle (direction t of P) scaled scale_factor shifted (point t of P); thdraw (block) rotated angle (direction t of P) scaled scale_factor shifted (point t of P); fi; enddef; def l_wall_ice_AUT (expr P) = T:=identity; cas := 0; dlzka := arclength P; mojkrok:=adjust_step(dlzka, .6u); pickup PenC; p := (-.15u,0)--(.15u,0); q := p rotated 90 shifted (.25u,.0u); picture symbol,test_symbol; symbol:= image ( thdraw p; thdraw q; ); path bound,old_bound,test_bound; begingroup; interim bboxmargin:=0; bound := bbox (symbol); endgroup; t := arctime (cas + mojkrok/2) of P; thdraw symbol rotated angle(thdir(P,t)) shifted (point t of P + .25u * unitvector(thdir(P,t) rotated -90)); old_bound:=bound rotated angle(thdir(P,t)) shifted (point t of P + .25u * unitvector(thdir(P,t) rotated -90)); forever: t := arctime (cas + mojkrok/2) of P; test_bound:= bound rotated angle(thdir(P,t)) shifted (point t of P + .25u * unitvector(thdir(P,t) rotated -90)); if xpart ((old_bound) intersectiontimes (test_bound))<0: if xpart (P intersectiontimes (test_bound))<0: thdraw symbol rotated angle(thdir(P,t)) shifted (point t of P + .25u * unitvector(thdir(P,t) rotated -90)); old_bound:=bound rotated angle(thdir(P,t)) shifted (point t of P + .25u * unitvector(thdir(P,t) rotated -90)); fi; fi; cas := cas + mojkrok; exitif cas > dlzka - (2*mojkrok/3); % for rounding errors endfor; thdraw P; enddef; def l_wall_underlying_AUT (expr P) = T:=identity; pickup PenA; laenge:= arclength P; t1 := arctime (0.5u) of P; t2 := arctime (laenge-.5u) of P; thdraw (subpath (t1,t2) of P) dashed evenly scaled optical_zoom; enddef; def l_wall_overlying_AUT (expr P) = T:=identity; laenge:= arclength P; t1 := arctime (0.25u) of P; t2 := arctime (laenge-.25u) of P; t3 :=arctime (laenge) of P; pickup pensquare scaled (3.5*u/10); thdraw (subpath (t1,t2) of P) withcolor background; pickup PenA; thdraw subpath(0,t1) of P; thdraw subpath(t2,t3) of P; thdraw (subpath (t1,t2) of P) dashed dashpattern(on 2bp off 2bp on .5bp off 2bp on 2bp) scaled optical_zoom; enddef; def l_wall_moonmilk_AUT (expr P) = T:=identity; laenge:= arclength P; symsize:=adjust_step(laenge,0.8u); circle_width:=symsize/2; cur:=(symsize-circle_width)/2; pickup PenC; forever: t1 := arctime (cur) of P; t2 := arctime (cur + circle_width) of P; thdraw (point t1 of P){dir (angle(thdir(P,t1)) + 90)} .. {dir (angle(thdir(P,t2)) - 90)}(point t2 of P); cur := cur + symsize; exitif cur > laenge + (symsize / 3); % for rounding errors endfor; pickup PenA; thdraw P; enddef; def l_wall_flowstone_AUT (expr P) = T:=identity; laenge:= arclength P; symsize:=adjust_step(laenge,0.8u); circle_width:=symsize/2; cur:=(symsize-circle_width)/2; pickup PenC; forever: t1 := arctime (cur) of P; t2 := arctime (cur + circle_width) of P; thdraw (point t1 of P){dir (angle(thdir(P,t1)) + 90)} .. {dir (angle(thdir(P,t2)) - 90)}(point t2 of P); thfill (point t1 of P){dir (angle(thdir(P,t1)) + 90)} .. {dir (angle(thdir(P,t2)) - 90)}(point t2 of P) -- (point t1 of P)--cycle; cur := cur + symsize; exitif cur > laenge + (symsize / 3); % for rounding errors endfor; pickup PenA; thdraw P; enddef; def l_pit_AUT (expr P) = T:=identity; laenge:= arclength P; symsize:=adjust_step(laenge,0.5u); triangle_width:=symsize/2; cur:=(symsize-triangle_width)/2; pickup PenC; forever: t1 := arctime (cur) of P; t := arctime (cur + triangle_width/2) of P; t2 := arctime (cur + triangle_width) of P; if ATTR__height >= 10: thfill (subpath (t1,t2) of P) -- ((point t of P) + symsize/2 * unitvector(thdir(P,t) rotated 90)) -- cycle; else: thclean (subpath (t1,t2) of P) -- ((point t of P) + symsize/2 * unitvector(thdir(P,t) rotated 90)) -- cycle; thdraw (point t2 of P) --((point t of P) + symsize/2 * unitvector(thdir(P,t) rotated 90)) -- (point t1 of P); fi; cur := cur + symsize; exitif cur > laenge - (1*symsize/3); % for rounding errors t1:=arctime (cur) of P; endfor; thdraw P; enddef; let l_overhang_AUT = l_pit_AUT; let l_floorstep_AUT = l_floorstep_UIS; let l_contour_AUT =l_contour_SKBB; def l_flowstone_AUT (expr P) = T:=identity; pickup PenC; thdraw P dashed evenly scaled optical_zoom; enddef; def l_survey_cave_AUT (expr P) = T:=identity; pair zz[]; pickup PenD; thdraw P; enddef; %% points def p_stalactite_AUT(expr pos,theta,sc,al) = pickup PenC; if ATTR__elevation: U:=(.15u, .4u); T:=identity aligned al rotated theta scaled sc shifted pos; thdraw (0,-.4u) -- (0,.15u) -- (-.15u,.4u); thdraw (0,.15u) -- (.15u,.4u); else: U:=(.175u, .175u); T:=identity aligned al rotated theta scaled sc shifted pos; thclean fullcircle scaled 0.35u; thdraw fullcircle scaled 0.35u; fi; enddef; let p_icestalactite_AUT = p_stalactite_AUT; def p_stalagmite_AUT(expr pos,theta,sc,al) = pickup PenC; if ATTR__elevation: U:=(.15u,.4u); T:=identity aligned al rotated theta scaled sc shifted pos; thdraw (0,.4u) -- (0,-.15u) -- (-.15u,-.4u); thdraw (0,-.15u) -- (.15u,-.4u); else: U:=(.15u,.15u); T:=identity aligned al rotated theta scaled sc shifted pos; thfill fullcircle scaled 0.3u; fi; enddef; let p_icestalagmite_AUT = p_stalagmite_AUT; def p_pillar_AUT(expr pos,theta,sc,al) = pickup PenC; if ATTR__elevation: U:=(.15u,.4u); T:=identity aligned al rotated theta scaled sc shifted pos; thdraw (0,.15u)--(0,-.15u); thdraw (-.15u,-.4u)--(0,-.15u)--(.15u,-.4u); thdraw (-.15u,.4u)--(0,.15u)--(.15u,.4u); else: U:=(.225u,.225u); T:=identity aligned al rotated theta scaled sc shifted pos; thclean fullcircle scaled 0.45u; thdraw fullcircle scaled 0.45u; thfill fullcircle scaled 0.3u; fi; enddef; let p_icepillar_AUT = p_pillar_AUT; def p_crystal_AUT (expr pos,theta,sc,al)= U:=(.35u,.35u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; p := ((-.35*u,0)--(.35*u,0)); thdraw p; thdraw p rotated (45); thdraw p rotated (90); thdraw p rotated (135); thdrawoptions(); enddef; def p_spring_AUT (expr pos,theta,sc,al)= U:=(.3u,.2u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; thdraw (-.3u,.1u)..(0,-.1u)..(.3u,.1u); enddef; def p_sink_AUT (expr pos,theta,sc,al)= U:=(.3u,.2u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; thdraw (-.3u,-.1u)..(0,.1u)..(.3u,-.1u); enddef; def p_breakdownchoke_AUT (expr pos,theta,sc,al)= U:=(.4u,.4u); T:=identity rotated -theta aligned al rotated theta scaled sc shifted pos; pickup PenC; thclean (-.4u,-.4u)--(.4u,-.4u)--(.4u,.4u)--(-.4u,.4u)--cycle; thdraw (-.4u,-.4u)--(.4u,-.4u)--(.4u,.4u)--(-.4u,.4u)--cycle; thdraw (-.21u,.305u)--(.0u,-.305u)--(.21u,.305u); enddef; def p_sand_AUT (expr pos,theta,sc,al)= U:=(.2u,.2u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; p:= origin -- (0.01u,0.01u); for i=-0.1u step 0.2u until .15u: for j=-0.1u step 0.2u until .15u: thdraw p rotated uniformdeviate(360) shifted ((i,j) randomized 0.09u); endfor; endfor; thdrawoptions(); enddef; let p_clay_AUT = p_sand_AUT; def p_pebbles_AUT (expr pos,theta,sc,al)= U:=(.4u,.4u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; path qq; for i=-0.15u step 0.3u until .2u: for j=-0.15u step 0.3u until .2u: qq := (superellipse((.1u,0),(0,.05u),(-.1u,0),(0,.-.05u),.75)) randomized (u/45) scaled (uniformdeviate(0.4)+.55) rotated uniformdeviate(360) shifted ((i,j) randomized 0.15u); thdraw qq; endfor; endfor; enddef; def p_debris_AUT (expr pos,theta,sc,al)= U:=(.5u,.5u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; path block,q; block := ((-.15u,-.15u)--(.15u,-.15u)--(.3u,0.01u)--(.15u,.15u)--(-.15u,.15u)--cycle) ; q:= (punked (block randomized (0.15u))) rotated uniformdeviate(360) scaled (uniformdeviate(0.3)+0.3) shifted (0.0u,0.15u); thclean q; thdraw q; q:= (punked (block randomized (0.15u))) rotated uniformdeviate(360) scaled (uniformdeviate(0.5)+0.7) shifted (-0.15u,-0.15u); thclean q; thdraw q; q:= (punked (block randomized (0.15u))) rotated uniformdeviate(360) shifted (0.15u,-0.15u); thclean q; thdraw q; enddef; def p_blocks_AUT (expr pos,theta,sc,al)= U:=(u,u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; path block,q; block := ((-.25u,-.25u)--(.25u,-.25u)--(.5u,0.01u)--(.25u,.25u)--(-.25u,.25u)--cycle) ; q:= (punked (block randomized (0.3u))) rotated uniformdeviate(360) scaled (uniformdeviate(0.3)+0.3) shifted (0.0u,0.25u); thclean q; thdraw q; q:= (punked (block randomized (0.3u))) rotated uniformdeviate(360) scaled (uniformdeviate(0.5)+0.7) shifted (-0.25u,-0.25u); thclean q; thdraw q; q:= (punked (block randomized (0.3u))) rotated uniformdeviate(360) shifted (0.25u,-0.25u); thclean q; thdraw q; enddef; def p_water_AUT (expr pos,theta,sc,al)= U:=(.425u,.3u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenD; p:=fullcircle xscaled (.85u) yscaled (.6u); thfill p withcolor col_water_bg; thfill p withpattern pattern_water_AUT; thdraw p; enddef; def p_ice_AUT (expr pos,theta,sc,al)= U:=(.6u,.4u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; p:=(-.15u,.0u) -- (0.15u,.0u); thdraw p rotated 90; thdraw p shifted (0.45u,.0u); thdraw p shifted (-0.45u,.0u); thdraw p rotated 90 shifted (-0.45u,0.25u); thdraw p shifted (0u,0.25u); thdraw p rotated 90 shifted (0.45u,.25u); enddef; def p_entrance_AUT (expr pos,theta,sc,al)= U:=(.3u,.75u); T:=identity aligned al rotated theta scaled sc shifted pos; path slice; for i= -0.5 step 0.01 until 0.5: slice:= (-.3u*(0.5-i),1.5*i*u)--(0,.75u)--(.3u*(0.5-i),1.5i*u)--cycle; thfill slice withcolor (min(0.95,0.5-1.75i),min(0.95,.5-1.75i),min(0.95,.5-1.75i)); endfor; thdraw ((-.3u,-0.75u)--(0,.75u)--(.3u,-0.75u)--cycle); enddef; def p_gradient_AUT (expr pos,theta,sc,al)= U:=(.15u,u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; thdraw (0,-0.5u)--(0,0.5u); p:=(-.15u,.3u)--(0,0.7u)--(.15u,.3u)--cycle; thfill p; thdraw p; enddef; def p_airdraught_AUT (expr pos,theta,sc,al)= U:=(.2u,u); T:=identity aligned al rotated theta scaled 1 shifted pos; pickup PenC; thdraw (0,.5u)--(0,-0.8u); p:=(-.2u,.2u)--(0,.55u)--(.2u,.2u)--cycle; thfill p; for i:=1 upto round(3+2*mlog(sc)/mlog 2): thdraw (0,-(1-0.2i)*u)--(.2u,-(1-0.2(i-1))*u); thdraw (0,-(1-0.2i)*u)--(-.2u,-(1-0.2(i-1))*u); endfor; enddef; def p_station_temporary_AUT (expr pos)= T:=identity shifted pos; pickup PenD; thclean fullcircle scaled 0.15u; thdraw fullcircle scaled 0.15u; enddef; let p_station_painted_AUT = p_station_temporary_AUT ; let p_station_fixed_AUT = p_station_temporary_AUT ; def p_claychoke_AUT (expr pos,theta,sc,al)= U:=(.4u,.4u); T:=identity rotated -theta aligned al rotated theta scaled sc shifted pos; pickup PenC; thclean (-.4u,-.4u)--(.4u,-.4u)--(.4u,.4u)--(-.4u,.4u)--cycle; thdraw (-.4u,-.4u)--(.4u,-.4u)--(.4u,.4u)--(-.4u,.4u)--cycle; thdraw (-.15u,.3u)--(-.15u,-.25u)--(.15u,-.25u); enddef; def p_claytree_AUT (expr pos,theta,sc,al)= U:=(.55u,.6u); T:=identity aligned al rotated theta scaled sc shifted pos; pickup PenC; p:= (-.15u,.15u)--(.0u,.6u)--(.15u,.15u); thdraw p ; thdraw p shifted (-.4u,-.3u); thdraw p shifted (.4u,-.2u) ; enddef;
_______________________________________________ Therion-cs mailing list Therion-cs@speleo.sk https://mailman.speleo.sk/listinfo/therion-cs