Hi, I’m trying to understand MetaPost better. I’d like to draw a fat line that’s cut at its end points. I learned, “cutdraw” should do the trick, but I get a parallelogram instead of a rectangle. What’s wrong? Hraban \startMPpage draw (0,20)--(20,20) withpen pensquare scaled 10; cutdraw (0,0)--(20,0) withpen pensquare scaled 10; % just to show start and end draw (0,-10)--(0,30); draw (20,-10)--(20,30); \stopMPpage
On Wed, 6 Jul 2022, Henning Hraban Ramm via ntg-context wrote:
Hi, I’m trying to understand MetaPost better.
I’d like to draw a fat line that’s cut at its end points.
You mean like linecap = butt? \startMPpage[offset=5mm] path p; p := origin -- (7cm,0); interim linecap := butt; draw p withpen pencircle scaled 5mm; p := p shifted (0,2cm); interim linecap := rounded; draw p withpen pencircle scaled 5mm; p := p shifted (0,2cm); interim linecap := squared; draw p withpen pencircle scaled 5mm; \stopMPpage
I learned, “cutdraw” should do the trick, but I get a parallelogram instead of a rectangle.
Seems to be something weird with pensquare: \startMPpage[offset=5mm] path p; p := origin -- (7cm,0); % interim linecap := butt; cutdraw p withpen pensquare scaled 5mm; p := p shifted (0,2cm); interim linecap := rounded; draw p withpen pensquare scaled 5mm; p := p shifted (0,2cm); interim linecap := squared; draw p withpen pensquare scaled 5mm; \stopMPpage Aditya
On 7/6/2022 7:10 AM, Aditya Mahajan via ntg-context wrote:
On Wed, 6 Jul 2022, Henning Hraban Ramm via ntg-context wrote:
Hi, I’m trying to understand MetaPost better.
I’d like to draw a fat line that’s cut at its end points.
You mean like linecap = butt?
\startMPpage[offset=5mm] path p;
p := origin -- (7cm,0); interim linecap := butt; draw p withpen pencircle scaled 5mm;
p := p shifted (0,2cm); interim linecap := rounded; draw p withpen pencircle scaled 5mm;
p := p shifted (0,2cm); interim linecap := squared; draw p withpen pencircle scaled 5mm;
\stopMPpage
I learned, “cutdraw” should do the trick, but I get a parallelogram instead of a rectangle.
Seems to be something weird with pensquare:
\startMPpage[offset=5mm] path p;
p := origin -- (7cm,0); % interim linecap := butt; cutdraw p withpen pensquare scaled 5mm;
p := p shifted (0,2cm); interim linecap := rounded; draw p withpen pensquare scaled 5mm;
p := p shifted (0,2cm); interim linecap := squared; draw p withpen pensquare scaled 5mm;
\stopMPpage \startMPpage[offset=5mm] path p;
p := origin -- (7cm,0); interim linecap := squared; draw p withpen ((pensquare ) scaled 5mm) withcolor red ; draw envelope ((pensquare ) scaled 5mm) of p withcolor green ; draw envelope ((pensquare rotated eps) scaled 5mm) of p withcolor blue ; \stopMPpage (there is an "ontarget" chapter about envelopes; mikael and i spent quite some time figuring out a few things but in the end conclused that mp des the right thing given the strategy it folows but it definitely has side effects) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
Am 06.07.22 um 09:15 schrieb Hans Hagen via ntg-context:
On 7/6/2022 7:10 AM, Aditya Mahajan via ntg-context wrote:
On Wed, 6 Jul 2022, Henning Hraban Ramm via ntg-context wrote:
Hi, I’m trying to understand MetaPost better.
I’d like to draw a fat line that’s cut at its end points.
You mean like linecap = butt?
Yes, but that doesn’t behave differently.
\startMPpage[offset=5mm] path p;
p := origin -- (7cm,0);
interim linecap := squared;
draw p withpen ((pensquare ) scaled 5mm) withcolor red ; draw envelope ((pensquare ) scaled 5mm) of p withcolor green ; draw envelope ((pensquare rotated eps) scaled 5mm) of p withcolor blue ; \stopMPpage
(there is an "ontarget" chapter about envelopes; mikael and i spent quite some time figuring out a few things but in the end conclused that mp des the right thing given the strategy it folows but it definitely has side effects)
Thank you for the insight, but does that mean I can’t get my “butt capped” lines and I must shorten the lines by half the pen size? Hraban
Hi,
On Wed, Jul 6, 2022 at 11:29 AM Henning Hraban Ramm via ntg-context
Am 06.07.22 um 09:15 schrieb Hans Hagen via ntg-context:
On 7/6/2022 7:10 AM, Aditya Mahajan via ntg-context wrote:
On Wed, 6 Jul 2022, Henning Hraban Ramm via ntg-context wrote:
Hi, I’m trying to understand MetaPost better.
I’d like to draw a fat line that’s cut at its end points.
You mean like linecap = butt?
Yes, but that doesn’t behave differently.
\startMPpage[offset=5mm] path p;
p := origin -- (7cm,0);
interim linecap := squared;
draw p withpen ((pensquare ) scaled 5mm) withcolor red ; draw envelope ((pensquare ) scaled 5mm) of p withcolor green ; draw envelope ((pensquare rotated eps) scaled 5mm) of p withcolor blue ; \stopMPpage
(there is an "ontarget" chapter about envelopes; mikael and i spent quite some time figuring out a few things but in the end conclused that mp des the right thing given the strategy it folows but it definitely has side effects)
Thank you for the insight, but does that mean I can’t get my “butt capped” lines and I must shorten the lines by half the pen size?
Hraban
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
Hraban, with the new upload you can do \startMPpage[offset=1dk] pickup pencircle scaled 4 ; path p ; p := origin -- (20,0) ; draw p withcolor darkyellow ; draw p yshifted 5 withlinecap butt withcolor darkred ; draw p yshifted -5 withlinecap squared withcolor darkgreen ; for i within currentpicture : drawpoints pathpart i withpen pencircle scaled 1 ; endfor ; \stopMPpage That is, you can set linecap for each draw. I hope it helps. /Mikael
participants (4)
-
Aditya Mahajan
-
Hans Hagen
-
Henning Hraban Ramm
-
Mikael Sundqvist