Here is the MWE, I want to intersect two paths and loop through all intersection points with a loop, not knowing before hand how many intersection points are there, and definitely hoping I do not have to name each one in particular. I want to be able to do something like this:

%\foreach \p in {\path[name intersections={of = AE and MN}];}
%       \filldraw [red] (\p) circle(3pt);

What would be the best approach?




\coordinate (ORG) at (0.00, 0.00);

% first path (zig zag blue)
\coordinate (A) at (1.00, 3.00);
\coordinate (B) at (3.00, -3.00);
\coordinate (C) at (5.00, 3.00);
\coordinate (D) at (7.00, -3.00);
\coordinate (E) at (9.00, 3.00);
\draw[blue, line width=1.50pt, name path = AE] (ORG) -- (A) -- (B) -- (C) -- (D) -- (E);

% second path (ForestGreen)
\coordinate (M) at (0.00, 2.00);
\coordinate (N) at (10.00, 2.00);
\coordinate (U) at (10.00, -2.00);
\coordinate (V) at (0.00, -2.00);
\draw[ForestGreen, line width=1.50pt, name path = MN] (M) -- (N) -- (U) -- (V);

% first path points
\filldraw [teal] (A) circle(3pt);
\filldraw [teal] (B) circle(3pt);
\filldraw [teal] (C) circle(3pt);
\filldraw [teal] (D) circle(3pt);
\filldraw [teal] (E) circle(3pt);

% intersections of the two paths
\path [name intersections={of = AE and MN}];
\coordinate (P)  at (intersection-1);
\coordinate (Q)  at (intersection-2);
\coordinate (R)  at (intersection-3);
\coordinate (S)  at (intersection-4);
\coordinate (T)  at (intersection-5);
\coordinate (W)  at (intersection-6);
\coordinate (X)  at (intersection-7);
\coordinate (Y)  at (intersection-8);
\coordinate (Z)  at (intersection-9);

% mark each intersection with a red dot
\foreach \p in {P,Q,R,S,T,W,X,Y,Z}
        \filldraw [red] (\p) circle(3pt);

%\foreach \p in {\path[name intersections={of = AE and MN}];}
%       \filldraw [red] (\p) circle(3pt);


  • 1
    This problem is solved in this example in pgfmanual
    – Ignasi
    Commented Jul 31, 2015 at 16:16

1 Answer 1


How about this:

\draw[name path = AE] (ORG) -- (A) -- (B) -- (C) -- (D) -- (E);
\draw[name path = MN] (M) -- (N) -- (U) -- (V);

\fill [name intersections={of=AE and MN, name=i, total=\t}] [red] 
   \foreach \s in {1,...,\t} {
       (i-\s) circle (3pt) 

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .