4

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.

enter image description here

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.

enter image description here

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?

4

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}

enter image description here

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}

enter image description here

3

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}

enter image description here

Feature: The dashed lines are evenly distributed. Nice?

  • Sorry for interchanging the dot color. My eyes are not so sensitive to colors. – The Inventor of God Dec 15 '18 at 7:58
2

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}

to node

Your Answer

By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.