From: Taco Hoekwater <taco@bittext.nl>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: [NTG-context] Re: Metapost: draw only subpath; changing thickness of line
Date: Fri, 5 Jan 2024 14:13:13 +0100 [thread overview]
Message-ID: <ECC40A93-37F1-4CED-9D3E-0E58E300FBDA@bittext.nl> (raw)
In-Reply-To: <1995622A-7289-4011-97AF-C974A440AC2B@getmailspring.com>
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 <ntg-context@ntg.nl> 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)
___________________________________________________________________________________
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
___________________________________________________________________________________
next prev parent reply other threads:[~2024-01-05 13:17 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-05 8:56 [NTG-context] " Emanuel Han via ntg-context
2024-01-05 13:13 ` Taco Hoekwater [this message]
2024-01-06 16:36 ` [NTG-context] " Emanuel Han via ntg-context
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ECC40A93-37F1-4CED-9D3E-0E58E300FBDA@bittext.nl \
--to=taco@bittext.nl \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).