Metapost: draw only subpath; changing thickness of line
Hi all, I have this MWE. Now I want to draw only the subpath of S between gong6 and gong7 with a red line which is narrower at the two ends and thicker in the middle part. How to achieve this? Thanks! Emanuel \setuppapersize[A4,landscape] \starttext \startMPcode numeric u; u=1cm; %equiangular spiral numeric a, k ; a = 2.3; %scaling factor k = 8.61722335; path S; S = right for t=1 upto 360: .. a ** (t/50.2) * dir (-k*t) endfor; draw S; z1 = 8 dir -14; path A; A = origin -- z1 scaled 0.7u ; draw A; pair AEndPoint; AEndPoint = point 1 of A; pair gong[], times; numeric n; n = 0; for i = 1 upto length(A): for j = 1 upto length(S): times := subpath (i-1,i) of A intersectiontimes subpath (j-1,j) of S; if xpart times > -1: gong[incr n] = 1/2[point xpart times of subpath (i-1,i) of A, point ypart times of subpath (j-1,j) of S]; fi endfor endfor dotlabel.rt ("$gong6$", gong6); dotlabel.rt ("$gong7$", gong7); %Now I want to draw only the subpath of S between gong6 and gong7 with a red line which is narrower at the two ends and thicker in the middle part \stopMPcode \stoptext
Hi, Here is 'a' way to draw the subpath, at least. I do not have time to come up with a nice “thicker in the middle” solution. Best wishes, Taco \startMPcode numeric u; u=1cm; %equiangular spiral numeric a, k ; a = 2.3; %scaling factor k = 8.61722335; path S; S = right for t=1 upto 360: .. a ** (t/50.2) * dir (-k*t) endfor; draw S; z1 = 8 dir -14; path A; A = origin -- z1 scaled 0.7u ;% draw A; pair AEndPoint; AEndPoint = point 1 of A; pair gong[], times; numeric n; n = 0; numeric gongtimes[]; % new for i = 1 upto length(A): for j = 1 upto length(S): times := subpath (i-1,i) of A intersectiontimes subpath (j-1,j) of S; if xpart times > -1: gong[incr n] = 1[point xpart times of subpath (i-1,i) of A, point ypart times of subpath (j-1,j) of S]; gongtimes[n] = j-1 + ypart times; % new fi endfor endfor % new path H; H = subpath(gongtimes[6],gongtimes[7]) of S; lH = length(H); for i = 1 upto 100: draw (subpath((i-1)/100*lH, i/100* lH) of H) withcolor red withpen (pencircle scaled(abs(abs(i-50)-50)/10)) ; endfor; \stopMPcode
On 5 Jan 2024, at 09:56, Emanuel Han via ntg-context
wrote: Hi all,
I have this MWE. Now I want to draw only the subpath of S between gong6 and gong7 with a red line which is narrower at the two ends and thicker in the middle part. How to achieve this?
Thanks! Emanuel
\setuppapersize[A4,landscape]
\starttext
\startMPcode numeric u; u=1cm; %equiangular spiral numeric a, k ; a = 2.3; %scaling factor k = 8.61722335; path S; S = right for t=1 upto 360: .. a ** (t/50.2) * dir (-k*t) endfor; draw S;
z1 = 8 dir -14; path A; A = origin -- z1 scaled 0.7u ; draw A; pair AEndPoint; AEndPoint = point 1 of A; pair gong[], times; numeric n; n = 0; for i = 1 upto length(A): for j = 1 upto length(S): times := subpath (i-1,i) of A intersectiontimes subpath (j-1,j) of S; if xpart times > -1: gong[incr n] = 1/2[point xpart times of subpath (i-1,i) of A, point ypart times of subpath (j-1,j) of S]; fi endfor endfor
dotlabel.rt ("$gong6$", gong6); dotlabel.rt ("$gong7$", gong7);
%Now I want to draw only the subpath of S between gong6 and gong7 with a red line which is narrower at the two ends and thicker in the middle part
\stopMPcode
\stoptext ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________
— Taco Hoekwater E: taco@bittext.nl genderfluid (all pronouns)
Hi Taco,
thanks for your help. This works for me!
On Jan. 5 2024, at 2:13 pm, Taco Hoekwater
Hi,
Here is 'a' way to draw the subpath, at least. I do not have time to come up with a nice “thicker in the middle” solution. Best wishes, Taco
\startMPcode numeric u; u=1cm; %equiangular spiral numeric a, k ; a = 2.3; %scaling factor k = 8.61722335; path S; S = right for t=1 upto 360: .. a ** (t/50.2) * dir (-k*t) endfor; draw S;
z1 = 8 dir -14; path A; A = origin -- z1 scaled 0.7u ;% draw A; pair AEndPoint; AEndPoint = point 1 of A; pair gong[], times; numeric n; n = 0; numeric gongtimes[]; % new for i = 1 upto length(A): for j = 1 upto length(S): times := subpath (i-1,i) of A intersectiontimes subpath (j-1,j) of S; if xpart times > -1: gong[incr n] = 1[point xpart times of subpath (i-1,i) of A, point ypart times of subpath (j-1,j) of S]; gongtimes[n] = j-1 + ypart times; % new fi endfor endfor
% new path H; H = subpath(gongtimes[6],gongtimes[7]) of S; lH = length(H); for i = 1 upto 100: draw (subpath((i-1)/100*lH, i/100* lH) of H) withcolor red withpen (pencircle scaled(abs(abs(i-50)-50)/10)) ; endfor;
\stopMPcode
On 5 Jan 2024, at 09:56, Emanuel Han via ntg-context
wrote: Hi all,
I have this MWE. Now I want to draw only the subpath of S between gong6 and gong7 with a red line which is narrower at the two ends and thicker in the middle part. How to achieve this?
Thanks! Emanuel
\setuppapersize[A4,landscape]
\starttext
\startMPcode numeric u; u=1cm; %equiangular spiral numeric a, k ; a = 2.3; %scaling factor k = 8.61722335; path S; S = right for t=1 upto 360: .. a ** (t/50.2) * dir (-k*t) endfor; draw S;
z1 = 8 dir -14; path A; A = origin -- z1 scaled 0.7u ; draw A; pair AEndPoint; AEndPoint = point 1 of A; pair gong[], times; numeric n; n = 0; for i = 1 upto length(A): for j = 1 upto length(S): times := subpath (i-1,i) of A intersectiontimes subpath (j-1,j) of S; if xpart times > -1: gong[incr n] = 1/2[point xpart times of subpath (i-1,i) of A, point ypart times of subpath (j-1,j) of S]; fi endfor endfor
dotlabel.rt ("$gong6$", gong6); dotlabel.rt ("$gong7$", gong7);
%Now I want to draw only the subpath of S between gong6 and gong7 with a red line which is narrower at the two ends and thicker in the middle part
\stopMPcode
\stoptext ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________
— Taco Hoekwater E: taco@bittext.nl genderfluid (all pronouns)
participants (2)
-
Emanuel Han
-
Taco Hoekwater