# How to draw many crossroads?

(April Fools' Day joke) How do we draw something like this? I enclose a picture and a detail of it.

Update: I enclose one more screenshot (with TeXs sitting at the crossroads) if somebody is actually trying to draw it. It's making things harder or it's a hint. It depends on your point of view and experience. Above all have fun!

Actually I could provide the code, if somebody would be interested to look at this chaos. :-) This is one of my early experiments which should serve as the background to a book cover.

• Are these all continuous lines? – T. Verron Apr 1 '15 at 8:32
• @T.Verron It's just a joke, the lines could be of any sort. ;-) – Malipivo Apr 1 '15 at 8:35
• +1 ♫ how many crossroads must a man walk down… ♫ :) – Paulo Cereda Apr 1 '15 at 8:37
• @Malipivo You would not find the joke funny if you had to drive on this road. ;) – T. Verron Apr 1 '15 at 8:40

I used directly \pdfliteral:

\def\circle{1 0 0 1 5 0 cm 5 0 m
5 2.76 2.76 5 0 5 c
-2.76 5 -5 2.76 -5 0 c
-5 -2.76 -2.76 -5 0 -5 c
2.76 -5 5 -2.76 5 0 c S
}
\def\drawpath{q -3 3 m 23 3 l 23 -3 l -3 -3 l -3 3 l 0 3 l S
\circle \circle \circle Q }

\pdfliteral{q
\drawpath
.8 w 1 G \drawpath
.7 w 1 1 0 RG \drawpath
.6 w .7 G \drawpath
.2 w 1 G \drawpath
.1 w .7 G \drawpath
Q}

\bye


The result:

• Nicely done, check out the update... – Malipivo Apr 1 '15 at 8:58
• @Malipivo And animated cars moving on the roads. Do you want this? – wipet Apr 1 '15 at 9:10
• Sure, why not? ;-) You know, it's rather question for fun for TeX beginners, I didn't expect answers from TeXperts of your magnitude. :-) – Malipivo Apr 1 '15 at 9:14

Similar result with TikZ, using preaction and postaction:

\documentclass[tikz]{standalone}

preaction={draw, black, double=white,line width=1pt, double distance=20pt},
postaction={draw, white, double,line width=1pt, double distance=2pt}}}
\begin{document}
\begin{tikzpicture}
(-12,-3) rectangle (12,3)
(0,0) circle (5)
(5,0) circle (5)
(-5,0) circle (5);
\end{tikzpicture}
\end{document}


And to draw something like in the question:

\begin{tikzpicture}
\draw[clip] (-100,-100) rectangle (100,100);
\draw[road] \foreach \x in {1,...,50} { (-110,100*rand) .. controls ++(100*rnd,20*rand) and ++(-100*rnd,20*rand) .. (110,100*rand)
(100*rand,110) .. controls ++(100*rand,-100*rnd) and ++(100*rand,100*rnd).. (100*rand,-110) }
\foreach \x in {1,...,5} { let \n1={random(10,30)} in (100*rand,100*rand) circle[radius=\n1]};
\end{tikzpicture}


• Nice job, indeed! – Malipivo Apr 1 '15 at 14:50

You can do this using Metapost's for p within picture feature that lets you loop through the contents of a picture created with image.

prologues := 3;
outputtemplate := "%j%c.eps";

def polydraw(expr pict) =
for p within pict: if stroked p: draw p withpen pencircle scaled 10;                         fi endfor
for p within pict: if stroked p: draw p withpen pencircle scaled  9 withcolor (red + green); fi endfor
for p within pict: if stroked p: draw p withpen pencircle scaled  8 withcolor .7 white;      fi endfor
for p within pict: if stroked p: draw p withpen pencircle scaled  2 withcolor white;         fi endfor
for p within pict: if stroked p: draw p withpen pencircle scaled  1 withcolor .7 white;      fi endfor
enddef;

beginfig(1);
u := 1.4cm;
picture base;
base = image(
draw fullcircle scaled 4u shifted (-2u,0);
draw fullcircle scaled 4u shifted ( 0,0);
draw fullcircle scaled 4u shifted (+2u,0);
draw unitsquare shifted (-1/2,-1/2) xscaled 9u yscaled 2.4u;
);
polydraw(base);
endfig;

end.

• Really elegant! – Aditya Apr 8 '15 at 3:37