我正在尝试绘制下图,即获取两条独立线(curve to
线)的位置,然后在它们之间画一条线。
我的代码,
\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}
仅生成以下一个。
如何获得积分(最好列出积分清单)不同的(为了获得最大的灵活性)线,以便我以后可以使用这些点?
答案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}
如果您稍微调整一下,它就会更接近所需的屏幕截图。
\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}
答案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}
特点:虚线分布均匀,好看吗?
答案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}