使用 TikZ 绘制曲线

使用 TikZ 绘制曲线

我想用 TikZ 画一些类似的东西:

曲线示例

我可能可以使用控件来制作曲线,但这不允许我在其上绘制点。

答案1

您可以使用 Intersections 库。这是 pgfmanual(TikZ 2.0)中一个示例的修改版本。它与您的图相当接近,您应该能够对其进行修改。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\clip (-2,-2) rectangle (2,2);
\draw [name path=curve] (-2,1) .. controls (8,1) and (-8,-1) .. (2,-1);
\path[name path=line 1] (0,-2) -- (0,2)  (-1,-2) -- (-1,2) (1,-2) -- (1,2);
\draw [name intersections={of=curve and line 1, name=i}] 
  (i-6) -- (i-7) (i-5) -- (i-8);
\draw [name intersections={of=curve and line 1, name=i},name path=line 2]
  (i-5) --(i-3) -- (i-7) (i-6) -- (i-2) -- (i-8); 

\fill [name intersections={of=curve and line 1, name=i}][blue, opacity=0.5]
\foreach \s in {1,2,3,5,6,7,8}{(i-\s) circle (2pt)};

\fill [name intersections={of=curve and line 2, name=i}][blue, opacity=0.5]
\foreach \s in {5,7}{(i-\s) circle (2pt) node {\footnotesize\s}};
\end{tikzpicture}
\end{document}

这样可能会更好一些?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}

\begin{document}
\begin{tikzpicture}

\path[name path=circle] 
  (0,0) circle (2cm);

\path[name path=cross] 
  (-2,-2) -- (2,2) 
  (-2,2) -- (2,-2) 
  (0,2) -- (0,-2);

\draw [% 
  name intersections={of=circle and cross, name=i},
  name path=line
] 
  (i-1) -- (i-5) -- (i-3) 
  (i-4) -- (i-2) -- (i-6) 
  (i-1) -- (i-4) 
  (i-3) -- (i-6);

\fill [% 
  name intersections={of=line and line, name=i}
] [blue, opacity=0.5]
  \foreach \s in {1,2,3,6,8,10,11,21,25}{(i-\s) circle (2pt)};

\draw [%
  name intersections={of=line and line, name=i}
]
  (i-8) ++(-0.5,0) -- (i-8) 
    to[out=45,in=180]  (i-10) 
    to[out=0,in=135]   (i-3)
        to[out=-45,in=0]   (i-2)
    to (i-21) to (i-6) 
    to[out=180,in=135] (i-11)
    to[out=-45,in=180] (i-1)
    to[out=0,in=225]   (i-25) 
    --++(0.5,0);

\end{tikzpicture}
\end{document}

答案2

您可以先绘制点(并为每个点命名,以方便绘制曲线)和直线。

绘制曲线时,请查看控制角度的inout选项。在手册中搜索“in=”或“out=”,您将获得大量示例。

相关内容