如何获取 tikz 曲线到线的位置

如何获取 tikz 曲线到线的位置

我正在尝试绘制下图,即获取两条独立线(curve to线)的位置,然后在它们之间画一条线。

enter image description here

我的代码,

\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}   

仅生成以下一个。

enter image description here

如何获得积分(最好列出积分清单)不同的(为了获得最大的灵活性)线,以便我以后可以使用这些点?

答案1

您几乎已经完成了。使用 时,您需要将节点放置在路径内pos=0.5。(对于直线,--您可以更随意一些。)

\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

如果您稍微调整一下,它就会更接近所需的屏幕截图。

\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

答案2

PSTricks 解决方案仅用于比较目的。

\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

特点:虚线分布均匀,好看吗?

答案3

使用该to path操作时,语法是将节点放置在之间两个坐标。并且不需要加载positioning库来将两个节点放置在路径的中间。

确实,我引用了 3.0.1a 手册第 157 页

路径上的节点。
可以将节点添加到由操作。为此,您需要指定关键字和坐标(如果 to 操作有选项,则这些选项优先出现)。 的效果(a) to node {x} (b) (通常)就如同您所写的 一样(a) --node {x} (b),即将节点放置在 上。

\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

相关内容