* Randomize control points in metapost/metafun?
@ 2016-08-01 6:03 Mikael P. Sundqvist
2016-08-01 8:12 ` Hans Hagen
0 siblings, 1 reply; 4+ messages in thread
From: Mikael P. Sundqvist @ 2016-08-01 6:03 UTC (permalink / raw)
To: mailing list for ConTeXt users
[-- Attachment #1: Type: text/plain, Size: 912 bytes --]
Hi!
I look for a way to randomize control points of a path, leaving the
coordinates themselves untouched.
The reason is the following: I want to draw (for example) a circle
with a triangle inside, and I want them to look slightly randomized.
If I do (see attached pdf for a typical result of this)
\startMPpage
draw fullcircle scaled 2cm randomized 0.1cm;
draw ((1cm,0)--(0,1cm)--(-1cm,0)--cycle) randomized 0.1cm;
\stopMPpage
then the corners of the triangle does not stay on the circle (and I
want them to). [I dont want the triangle to consist of perfectly
straight lines, so I cannot (directly) draw the triangle using
different points along the randomized circle] I imagine that one could
achieve what I want if one could randomize the control points only.
Also, is it possible to randomize a picture (consisting of several
paths/points) somehow, without randomizing each part of it manually?
/Mikael
[-- Attachment #2: ctx-listexample.pdf --]
[-- Type: application/pdf, Size: 3470 bytes --]
[-- Attachment #3: Type: text/plain, Size: 485 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://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Randomize control points in metapost/metafun?
2016-08-01 6:03 Randomize control points in metapost/metafun? Mikael P. Sundqvist
@ 2016-08-01 8:12 ` Hans Hagen
2016-08-01 10:47 ` Mikael P. Sundqvist
0 siblings, 1 reply; 4+ messages in thread
From: Hans Hagen @ 2016-08-01 8:12 UTC (permalink / raw)
To: ntg-context
On 8/1/2016 8:03 AM, Mikael P. Sundqvist wrote:
> Hi!
>
> I look for a way to randomize control points of a path, leaving the
> coordinates themselves untouched.
>
> The reason is the following: I want to draw (for example) a circle
> with a triangle inside, and I want them to look slightly randomized.
> If I do (see attached pdf for a typical result of this)
>
> \startMPpage
> draw fullcircle scaled 2cm randomized 0.1cm;
> draw ((1cm,0)--(0,1cm)--(-1cm,0)--cycle) randomized 0.1cm;
> \stopMPpage
>
> then the corners of the triangle does not stay on the circle (and I
> want them to). [I dont want the triangle to consist of perfectly
> straight lines, so I cannot (directly) draw the triangle using
> different points along the randomized circle] I imagine that one could
> achieve what I want if one could randomize the control points only.
i'll add
primarydef p randomizedcontrols s = (
if path p :
for i=0 upto length(p)-1 :
(point i of p) .. controls
((postcontrol i of p) randomshifted s) and
((precontrol (i+1) of p) randomshifted s) ..
endfor
if cycle p :
cycle
else :
(point length(p) of p)
fi
else :
p randomized s
fi
) enddef ;
> Also, is it possible to randomize a picture (consisting of several
> paths/points) somehow, without randomizing each part of it manually?
so:
vardef mfun_randomized_path(expr p,s) =
for i=0 upto length(p)-1 :
(point i of p) .. controls
((postcontrol i of p) randomshifted s) and
((precontrol (i+1) of p) randomshifted s) ..
endfor
if cycle p :
cycle
else :
(point length(p) of p)
fi
enddef;
vardef mfun_randomized_picture(expr p,s) =
save currentpicture ;
picture currentpicture ;
currentpicture := nullpicture ;
for i within p :
addto currentpicture
if stroked i :
doublepath pathpart i randomizedcontrols s
dashed dashpart i
withpen penpart i
withcolor colorpart i
withprescript prescriptpart i
withpostscript postscriptpart i
elseif filled i :
contour pathpart i randomizedcontrols s
withpen penpart i
withcolor colorpart i
withprescript prescriptpart i
withpostscript postscriptpart i
else :
also i
fi
;
endfor ;
currentpicture
enddef ;
primarydef p randomizedcontrols s = (
if path p :
mfun_randomized_path(p,s)
elseif picture p :
mfun_randomized_picture(p,s)
else :
p randomized s
fi
) enddef ;
with
draw fullcircle scaled 2cm randomizedcontrols 0.1cm;
draw ((1cm,0)--(0,1cm)--(-1cm,0)--cycle) randomizedcontrols 0.1cm;
draw image (
draw fullcircle scaled 2cm ;
draw ((1cm,0)--(0,1cm)--(-1cm,0)--cycle);
) randomizedcontrols 0.1cm ;
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
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://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Randomize control points in metapost/metafun?
2016-08-01 8:12 ` Hans Hagen
@ 2016-08-01 10:47 ` Mikael P. Sundqvist
2016-08-01 11:31 ` Hans Hagen
0 siblings, 1 reply; 4+ messages in thread
From: Mikael P. Sundqvist @ 2016-08-01 10:47 UTC (permalink / raw)
To: mailing list for ConTeXt users
On Mon, Aug 1, 2016 at 10:12 AM, Hans Hagen <pragma@wxs.nl> wrote:
> On 8/1/2016 8:03 AM, Mikael P. Sundqvist wrote:
>>
>> Hi!
>>
>> I look for a way to randomize control points of a path, leaving the
>> coordinates themselves untouched.
>>
>> The reason is the following: I want to draw (for example) a circle
>> with a triangle inside, and I want them to look slightly randomized.
>> If I do (see attached pdf for a typical result of this)
>>
>> \startMPpage
>> draw fullcircle scaled 2cm randomized 0.1cm;
>> draw ((1cm,0)--(0,1cm)--(-1cm,0)--cycle) randomized 0.1cm;
>> \stopMPpage
>>
>> then the corners of the triangle does not stay on the circle (and I
>> want them to). [I dont want the triangle to consist of perfectly
>> straight lines, so I cannot (directly) draw the triangle using
>> different points along the randomized circle] I imagine that one could
>> achieve what I want if one could randomize the control points only.
>
>
> i'll add
>
> primarydef p randomizedcontrols s = (
> if path p :
> for i=0 upto length(p)-1 :
> (point i of p) .. controls
> ((postcontrol i of p) randomshifted s) and
> ((precontrol (i+1) of p) randomshifted s) ..
> endfor
> if cycle p :
> cycle
> else :
> (point length(p) of p)
> fi
> else :
> p randomized s
> fi
> ) enddef ;
>
>> Also, is it possible to randomize a picture (consisting of several
>> paths/points) somehow, without randomizing each part of it manually?
>
>
> so:
>
> vardef mfun_randomized_path(expr p,s) =
> for i=0 upto length(p)-1 :
> (point i of p) .. controls
> ((postcontrol i of p) randomshifted s) and
> ((precontrol (i+1) of p) randomshifted s) ..
> endfor
> if cycle p :
> cycle
> else :
> (point length(p) of p)
> fi
> enddef;
>
> vardef mfun_randomized_picture(expr p,s) =
> save currentpicture ;
> picture currentpicture ;
> currentpicture := nullpicture ;
> for i within p :
> addto currentpicture
> if stroked i :
> doublepath pathpart i randomizedcontrols s
> dashed dashpart i
> withpen penpart i
> withcolor colorpart i
> withprescript prescriptpart i
> withpostscript postscriptpart i
> elseif filled i :
> contour pathpart i randomizedcontrols s
> withpen penpart i
> withcolor colorpart i
> withprescript prescriptpart i
> withpostscript postscriptpart i
> else :
> also i
> fi
> ;
> endfor ;
> currentpicture
> enddef ;
>
> primarydef p randomizedcontrols s = (
> if path p :
> mfun_randomized_path(p,s)
> elseif picture p :
> mfun_randomized_picture(p,s)
> else :
> p randomized s
> fi
> ) enddef ;
>
> with
>
> draw fullcircle scaled 2cm randomizedcontrols 0.1cm;
> draw ((1cm,0)--(0,1cm)--(-1cm,0)--cycle) randomizedcontrols 0.1cm;
>
> draw image (
> draw fullcircle scaled 2cm ;
> draw ((1cm,0)--(0,1cm)--(-1cm,0)--cycle);
> ) randomizedcontrols 0.1cm ;
>
>
>
> -----------------------------------------------------------------
> Hans Hagen | PRAGMA ADE
> Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
> tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
> -----------------------------------------------------------------
> ___________________________________________________________________________________
> 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://tex.aanhet.net
> archive : http://foundry.supelec.fr/projects/contextrev/
> wiki : http://contextgarden.net
> ___________________________________________________________________________________
Wow! That was fast! I just updated and it indeed works as expected.
I hate to ask another thing when I just got this fast and nice help,
but is there also a way to change the control points in such a way
that no _new_ sharp corners occur?
/Mikael
___________________________________________________________________________________
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://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Randomize control points in metapost/metafun?
2016-08-01 10:47 ` Mikael P. Sundqvist
@ 2016-08-01 11:31 ` Hans Hagen
0 siblings, 0 replies; 4+ messages in thread
From: Hans Hagen @ 2016-08-01 11:31 UTC (permalink / raw)
To: mailing list for ConTeXt users
On 8/1/2016 12:47 PM, Mikael P. Sundqvist wrote:
> Wow! That was fast! I just updated and it indeed works as expected.
>
> I hate to ask another thing when I just got this fast and nice help,
> but is there also a way to change the control points in such a way
> that no _new_ sharp corners occur?
that's a challenge for alan (who likes mp challenges) as it involves math
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
-----------------------------------------------------------------
___________________________________________________________________________________
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://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-08-01 11:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-01 6:03 Randomize control points in metapost/metafun? Mikael P. Sundqvist
2016-08-01 8:12 ` Hans Hagen
2016-08-01 10:47 ` Mikael P. Sundqvist
2016-08-01 11:31 ` Hans Hagen
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).