ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Mari Voipio <mari.voipio@iki.fi>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Metapost/Metafun Q: using variables and "building blocks"?
Date: Mon, 23 Apr 2012 20:34:19 +0300	[thread overview]
Message-ID: <CAGbDsP2z94hzC96jP5E48hEe7YtFhH9dz7XF5xALhPygJoBMug@mail.gmail.com> (raw)

Hello all,

any graphic experts around who can bump me past a stupid hinder on my
way to understanding MPgraphics?


I'm trying to create a system of describing certain type of braiding
patterns (fingerloop braiding), based on what has been used in the
field before me - but they did it all manually either by pen or
computer, and I just do not fancy doing 40+ patterns by hand in
Inkscape, especially as my pattern recipe book keeps expanding and I'm
planning on that, too.

I think Metapost could be the solution, because I need simple shapes
and sometimes complicated but well-regulated paths/arrows to go
between them; I'm just being a clueless newbie, too much in the
WYSIWYG vector graphics mode to really know what to do.


Mostly with the examples in the Metafun manual I've managed to get as
far as to my basic building block, two circles joined by a curve:


\startMPpage
path p, q, r ;

p := fullcircle scaled 8mm ;
q := p shifted (0cm,24mm) ;
r := center p .. (12mm,12mm) .. center q ;

pair pr, qr ;

pr := p intersectionpoint r ;
qr := q intersectionpoint r ;

r := r cutbefore pr cutafter qr ;
r := r cutends 0.2mm ;

draw r withpen pencircle scaled 0.2mm withcolor black ;
draw p withpen pencircle scaled 0.2mm withcolor black ; fill p withcolor white;
draw q withpen pencircle scaled 0.2mm withcolor black ; fill q withcolor black;
\stopMPpage



However, I don't seem to be able to find the answers to the next questions:

a) I need to be able to stack four of these on top of each other and
then four mirrored ones next to them (all-in-all a 2 x 4 grid/block),
and probably a 1-block space between the two columns. I realize I can
do that with "shift", but should I make my single 'building block' a
group, a buffer or overlay or something else? Keeping in mind that I
will have to be able to draw a path/arrow on top, so I need to know
where they are.
(At some point I need to expand to more columns, but the number of
rows is still 4 as we have humans have just four aligned fingers per
hand - thumbs aren't counted - but one can add hands i.e. people to
work wider braids.)


b) The circles p and q can be filled with the same colour or two
different colours, and each of the blocks in a pattern can have
different fill colour (e.g. two totally black, two totally white, two
half-and-half with either black or white on top). The pen/outline
colour should stay as black, which means that I can't implement the
symbol example in the Metafun manual (the smiley that is totally
switched from black to red).
I don't mind having different blocks for monocoloured and bicoloured
versions, but it would be nice to be able to say something like
\usesloop[lh,blue] for 'take a single-coloured left-hand loop in blue'
instead of having to dig deeper into the MP code every time.

I assume the answer is "use variables", but how?



I used millimeters here because it just feels more natural to me,
that's what textile crafts does (when not based on inches like
quilting and scrapbooking...). The measurements won't be shown
anywhere - these are graphs or pictograms, not real pictures - so I
can still switch to using something else. Besides, if the "building
block" approach works, there isn't that much to be changed, get the
first block right and the rest can be calculated from there.



Any ideas on how I can achieve the ease that surely exists somewhere there?
I'll take plain Metapost or a combination of Metapost and Metafun +
ConTeXt as I'll use ConTeXt anyway to achieve multi-format output with
a minimum of fuss.



Help thankfully received, as always,

Mari



PS. Today's craft related metaphor: I feel just like I was staring at
a messed up skein of yarn: I know  that I'm now holding one of the
ends, I thus can start to untangle the knot - and the more I pry
loose, the less there's left to sort out. However, in the beginning
the process tends to be very slow and awkward...
___________________________________________________________________________________
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
___________________________________________________________________________________


             reply	other threads:[~2012-04-23 17:34 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-23 17:34 Mari Voipio [this message]
2012-04-23 18:04 ` Hans Hagen
2012-05-06  8:53   ` Mari Voipio
2012-05-06  9:05     ` Mari Voipio
2012-05-06  9:16     ` luigi scarso
2012-05-06  9:56       ` Wolfgang Schuster
2012-05-06 10:17         ` luigi scarso
2012-05-06 11:33         ` Pontus Lurcock
2012-05-06 12:30           ` Hans Hagen
2012-05-06 12:47     ` Hans Hagen
2012-05-06 12:53       ` Martin Schröder
2012-05-06 12:59         ` Hans Hagen
2012-05-06 13:39       ` Mari Voipio
     [not found]         ` <4FA6822A.6070400@wxs.nl>
2012-05-08  5:53           ` Mari Voipio
2012-04-30 21:40 ` Mari Voipio
2012-05-01 17:09   ` Peter Rolf

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=CAGbDsP2z94hzC96jP5E48hEe7YtFhH9dz7XF5xALhPygJoBMug@mail.gmail.com \
    --to=mari.voipio@iki.fi \
    --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).