From: Gerben Wierda <gerben.wierda@rna.nl>
To: Wolfgang Schuster <wolfgang.schuster.lists@gmail.com>
Cc: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: What was that 'rounding paths' metafun(?) function again?
Date: Sun, 5 Apr 2020 13:18:12 +0200 [thread overview]
Message-ID: <33DA3493-3A75-4B9F-AE93-0DB31F16CA73@rna.nl> (raw)
In-Reply-To: <10febb0a-a5b0-d6f1-8111-51a735b6488f@gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 2010 bytes --]
Yes, I meant cornered.
But it turns out it works worse in my case, I get paths with hundreds of segments and a run that goes amok. But that made me find a mistake in my code and now I’m using my own again and it works fine:
vardef softenPath( expr hardPath) =
save softPath; path softPath;
save len; len := length hardPath;
save rounding; rounding := 5;
save i;
for i=0 upto len:
if (i=0):
% first pair
softPath := point i of hardPath;
elseif (i=len):
% lastpair
softPath := softPath -- point i of hardPath;
else:
% intermediate pair
save subOne; path subOne; subOne := subpath(i-1, i) of hardPath;
save subTwo; path subTwo; subTwo := subpath(i, i+1) of hardPath;
save lenOne; numeric lenOne; lenOne := arclength subOne;
save lenTwo; numeric lenTwo; lenTwo := arclength subTwo;
save pointOne, pointTwo; pair pointOne, pointTwo;
pointOne := point (arctime (lenOne-rounding) of subOne) of subOne;
pointTwo := point (arctime rounding of subTwo) of subTwo;
save dirOne, dirTwo; pair dirOne, dirTwo;
dirOne := direction (arctime (lenOne-rounding) of subOne) of subOne;
dirTwo := direction (arctime (rounding) of subTwo) of subTwo;
softPath := softPath -- pointOne{dirOne} .. {dirTwo}pointTwo;
fi
endfor;
softPath
enddef;
Fixed rounding of 5bp, but that is easy to change.
> On 5 Apr 2020, at 12:37, Wolfgang Schuster <wolfgang.schuster.lists@gmail.com> wrote:
>
> Gerben Wierda schrieb am 05.04.2020 um 12:31:
>> I think I saw a function in MetaFun somehwre that you could give a ‘hard’ path, i.e. (0,0) -- (0,1) — (1,1) and it would become a path with nicely rounded (part of a circle) corners (still straight lines), but I can’t find it anymore. I wrote my own, but it is giving me headaches so I’d like to find something that is better than what I produce.
>
> You you mean "cornered ..." or "smoothed ..."?
>
> Wolfgang
[-- Attachment #1.2: Type: text/html, Size: 5988 bytes --]
[-- Attachment #2: Type: text/plain, Size: 493 bytes --]
___________________________________________________________________________________
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
___________________________________________________________________________________
next prev parent reply other threads:[~2020-04-05 11:18 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-05 10:31 Gerben Wierda
2020-04-05 10:37 ` Wolfgang Schuster
2020-04-05 11:18 ` Gerben Wierda [this message]
2020-04-05 13:24 ` Keith McKay
2020-04-05 13:52 ` Gerben Wierda
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=33DA3493-3A75-4B9F-AE93-0DB31F16CA73@rna.nl \
--to=gerben.wierda@rna.nl \
--cc=ntg-context@ntg.nl \
--cc=wolfgang.schuster.lists@gmail.com \
/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).