On 23-4-2012 19:34, Mari Voipio wrote:
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?
something: \startMPpage def MyShape = image ( 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; ) enddef ; for i=0 step 2cm until 8cm : for j=0 step 4cm until 12cm : draw MyShape shifted (i,j) ; endfor ; endfor ; \stopMPpage there are picture variables, so picture pp ; pp := image(...) ; can be used
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.
mm are okay, alternative use no dimension, just numbers and scale afterwards: currentpicture := currentpicture xsized 10cm ; or so.
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...
beware, metapost is addictive once you get better in it, (btw, a talk about this will fit nicely in the upcoming eurotex theme) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------