0

Say I have 1000 edges. some of them intersect. Is tere a way to automate intersection representation? like they do in here for one intersection yet for all lines on an image (order does not matter for me).

My images are like this one: enter image description here yet much more complicated

My code sample:

\usetikzlibrary{arrows,shapes,automata,petri,positioning, fit}
\tikzset{
    p/.style={
        circle,
        thick,
        draw=black!75,
        fill=white!100,
        minimum size=6mm,
    },
       po/.style={
        circle,
        thick,
        draw=black!75,
        fill=white!100,
        minimum size=6mm,
        tokens=1
    },
        pi/.style={
        circle,
        thick,
        draw=blue!75,
        fill=white!100,
        minimum size=6mm,
    },
    tH/.style={
        rectangle,
        thick,
        fill=black,
        minimum width=8mm,
        inner ysep=2pt
    },
    t/.style={
        rectangle,
        thick,
        fill=black,
        minimum height=8mm,
        inner xsep=2pt
    },
        tT/.style={
        rectangle,
        thick,
          draw=yellow!75,
        fill=blue,
        minimum width=8mm,
        inner ysep=2pt
    },
        er/.style={
        bend right
    },
   el/.style={
        bend left
    },
   es/.style={
        bend right=0
    },
    ed/.style={
        dashed,
        -
    },
}
\begin{tikzpicture}[->,>=stealth']


\node [pi] (v1) at (-3,1) {$N$};



\node [tH, label=east:$(max)$] (v2) at (-3,-1) {};
\node [tH, label=east:$(max)$] (v6) at (1,-1) {};
\node [] (l1) at (5,-1) {...};
\node [tH, label=east:$(max)$] (v10) at (9,-1) {};
\node [p] (v3) at (-3,-3) {};
\node [p] (v7) at (1,-3) {};
\node [] at (5,-3) (l2) {};
\node [p] (v11) at (9,-3) {};
\node [tH, label=east:$(min)$] (v4) at (-3,-5) {};
\node [tH,  label=east:$(min)$] (v8) at (1,-5) {};
\node [] at (5.1,-5) {...};
\node [tH, label=east:$(min)$] (v12) at (9,-5) {};
\node [po] (v15) at (-4,0) {};
\node [po] (v14) at (0,0) {};
\node [po] (v13) at (8,0) {};
\draw [es] (v1) edge (v2);
\draw [es] (v2) edge (v3);
\draw [es] (v3) edge (v4);
\draw [es] (v6) edge (v7);
\draw [es] (v7) edge (v8);
\draw [es] (v10) edge (v11);
\draw [es] (v11) edge (v12);
\draw [el] (v13) edge (v10);
\draw [el] (v14) edge (v6);
\draw [el] (v15) edge (v2);
\draw [el, bend left=55] (v1) edge (v6);
\draw  plot[smooth, tension=.7] coordinates {(v3.east) (-2,-2.5) (-1,-0.5) (v6.north west)};
\path let \p1=($(v7.east)+(1,1)$) in node at (\p1) (t1) {};
\path let \p2=($(l1.north west)-(1.2,-0.5)$) in node at (\p2) (t2) {};
\draw plot[smooth, tension=.7] coordinates {(v7.east) (t1) (t2) (l1.north west)};
\path let \p1=($(l2.east)+(1,1)$) in node at (\p1) (t3) {};
\path let \p2=($(v10.north west)-(1.2,-0.5)$) in node at (\p2) (t4) {};
\draw plot[smooth, tension=.7] coordinates {(l2.east) (t3) (t4) (v10.north west)};
\node [] (v5) at (-3,-7) {One};
\node [] (v9) at (1,-7) {Two};
\node [] at (5,-7) {...};
\node [] (v16) at (9,-7) {Max};
\draw  (9.6,-6.4) rectangle (-3.6,-7.6);
\draw  (11,0.5) rectangle (-4.6,-5.8);
\draw [es] (v4) edge (v5);
\draw [es] (v8) edge (v9);
\draw [es] (v12) edge (v16);
\draw [] plot[smooth, tension=.7] coordinates {(v1.north) (-1.5,2) (7.5,1.5)  (v10.north)};
\draw  plot[smooth, tension=.3] coordinates {(v4.west) (-4,-5) (v15.south)};
\draw  plot[smooth, tension=.3] coordinates {(v8.west) (0,-5) (v14.south)};
\draw  plot[smooth, tension=.3] coordinates {(v12.west) (8,-5) (v13.south)};
\draw  plot[smooth, tension=.3] coordinates {(v8.west) (-0,-5.25) (-4,-5.2) (v15.south)};
\draw  plot[smooth, tension=.3] coordinates {(v12.west) (8,-5.25) (0,-5.6) (-4.2,-5.4) (v15.south)};
\draw  plot[smooth, tension=.3] coordinates {(v12.west) (8,-5.2) (0,-5.3)  (v14.south)};
\end{tikzpicture}

Looks like this: enter image description here

DuckQueen
  • 299
  • 1
    It is easier to add dots at every connections than add jump crossings. See also https://tex.stackexchange.com/questions/522213/wire-crossings-problem – John Kormylo Jun 01 '20 at 14:32
  • 2
    1000 edges, possibly with self-intersections? Only if you are very courageous you can try to tackle this with LaTeX only methods. We are talking here about roughly a million checks. –  Jun 01 '20 at 15:08
  • 1
    @Schrödinger'scat, don't you like some challenge ^^ – BambOo Jun 01 '20 at 16:59
  • 1
    @BambOo Cats are curious, not courageous nor crazy. ;-) –  Jun 01 '20 at 17:02
  • @Schrödinger'scat you got 9 lives, maybe you can spare one or two ? – BambOo Jun 01 '20 at 17:06
  • 1
    @BambOo One has to use them wisely. ;-) –  Jun 01 '20 at 17:09
  • I have a prototype using the show path construction decoration. It is not fully functional but should give you an idea of how to do it: Code (expires in 10 days), Screenshot. – Henri Menke Jun 02 '20 at 02:10

0 Answers0