# How to get positions of tikz curve to lines

I am trying to draw the following figure, that is to get the positions of two separate lines (curve to line) and then draw a line between them.

My code,

\begin{tikzpicture}
\def\L{1.5}
\draw (0,0) to[bend left] (\L,0) node[pos=0.5] (a) {};
\draw (\L,0) to[bend left] (0,0) node[pos=0.5] (b) {};
\draw[dashed] (a) -- (b);
\fill[red] (a) circle(1.5pt);
\fill[blue] (a) circle(1.5pt);
\end{tikzpicture}


only produce the following one.

How to get points (a list of them would be better) of different (for maximum flexibility) lines so that I can use these points later?

You were almost there. You need to place the nodes inside the path when you use pos=0.5. (For straight lines -- you can be more sloppy.)

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}
\def\L{1.5}
\draw (0,0) to[bend left] node[pos=0.5,draw,fill=red,circle,inner sep=2pt] (a) {} (\L,0)
to[bend left]  node[pos=0.5,draw,fill=blue,circle,inner sep=2pt] (b) {}(0,0);
\draw[densely dashed] (a) -- (b);
\end{tikzpicture}
\end{document}


If you tweak it a tiny bit, it becomes closer to the desired screen shot.

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}[bullet/.style={draw,circle,inner sep=2pt,fill=#1}]
\def\L{2.5}
\draw (0,0) to[bend left=45] node[pos=0.5,bullet=red] (a) {} (\L,0)
to[bend left=45]  node[pos=0.5,bullet=blue] (b) {}(0,0);
\draw[densely dashed] (a) -- (b);
\end{tikzpicture}
\end{document}


A PSTricks solution only for comparison purposes.

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[fillstyle=solid](6,4)
\pcarc[arcangle=-60](0,2)(6,2)\ncput{\Cnode[fillcolor=red]{A}}
\pcarc[arcangle=60](0,2)(6,2)\ncput{\Cnode[fillcolor=blue]{B}}
\ncline[linestyle=dashed]{A}{B}
\end{pspicture}
\end{document}


Feature: The dashed lines are evenly distributed. Nice?

• Sorry for interchanging the dot color. My eyes are not so sensitive to colors. – Gold Digging Programmer Dec 15 '18 at 7:58

When using the to path operation, the syntax is to place the nodes between the two coordinates. And it is not necessary to load the positioning library to place the two nodes in the middle of the path.

Indeed, I quoted page 157 of the 3.0.1a manual

Nodes on to–paths.
It is possible to add nodes to the paths constructed by a to operation. To do so, you specify the nodes between the to keyword and the coordinate (if there are options to the to operation, these come first). The effect of (a) to node {x} (b) (typically) is the same as if you had written (a) --node {x} (b), namely that the node is placed on the to.

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
[every node/.style={draw=black,circle,inner sep=1.5pt},
bend left=60]
\def\L{1.5}
\draw (0,0) to node[fill=red] (a) {}(\L,0) ;
\draw (\L,0) to node[fill=blue] (b) {}(0,0) ;
\draw[densely dashed] (a) -- (b);
\end{tikzpicture}
\end{document}