[metapost] intersectiontimes peculiarity

Troy Henderson thenders at gmail.com
Wed Apr 24 11:27:27 CEST 2013

I've read Knuth's explanation of how "intersectiontimes" works when two
paths intersect in multiple points (in Chapter 14 of the METAFONTbook), but
I cannot seem to figure out how to FORCE lexicographic ordering of the
intersection times.

For example, if paths p and q intersect in multiple points, I would like
to, somehow, have

(s,whatever) = q intersectiontimes p;

return the "first" (i.e., smallest "time") for q in which q and p
intersect.  This is illustrated in the code below (which generates the
attached figure).

Notice that q intersects p at times (and these times are for q) 0.07144,
0.35716, 0.64287, and 0.92859 which correspond to the points (1,-5),
(1,-3), (1,-1) and (1,1), respectively.  However, the command

(s,whatever) = q intersectiontimes p;

returns the last (namely 0.92859) time for q instead of the first (namely
0.07144) time for the intersection.  Is there a way to FORCE "q
intersectiontimes p" to always return the smallest time for q?

Thanks in advance,



path p,q,r;
r:=subpath (0,1/4) of q;

numeric s,t;
(s,whatever)=q intersectiontimes p;
(t,whatever)=r intersectiontimes p;

    draw p scaled u;
    drawarrow subpath (0,1/6) of q scaled u withcolor red;
    drawarrow subpath (1/6,1/2) of q scaled u withcolor red;
    drawarrow subpath (1/2,5/6) of q scaled u withcolor red;
    draw subpath (5/6,1) of q scaled u withcolor red;
    fill fullcircle scaled 4 shifted (point s of q scaled u) withcolor blue;
    fill fullcircle scaled 4 shifted (point t of r scaled u) withcolor

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://tug.org/pipermail/metapost/attachments/20130424/d3ece8fc/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: foo.pdf
Type: application/pdf
Size: 2822 bytes
Desc: not available
URL: <http://tug.org/pipermail/metapost/attachments/20130424/d3ece8fc/attachment.pdf>

More information about the metapost mailing list