如何绘制和标记多边形的顶点?

如何绘制和标记多边形的顶点?

我正在绘制一个凸多边形和一条连接两点的线边缘。但是,如下图所示,线的端点不在边缘上。如何解决?

凸多边形线

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
  \path[draw] (0,0) node[left] (6) {6}
    -- (1.5,-1) node[below] (5) {5}
    -- (3.5, -0.8) node[below] (4) {4}
    -- (5,0) node[right] (3) {3}
    -- (4, 1.5) node[above] (2) {2}
    -- (1,2) node[above] (1) {1}
    -- cycle;

    \draw ($(3)!0.4!(4)$) -- ($(1)!0.4!(2)$);
\end{tikzpicture}
\end{document}

答案1

发生这种情况是因为您的(1)(2)(3)等节点是标签,而不是点。

这是一个可能的解决方案\coordinate

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
    \begin{tikzpicture}
    \coordinate (1) at (1,2); 
    \coordinate (2) at (4, 1.5); 
    \coordinate (3) at (5,0); 
    \coordinate (4) at (3.5, -0.8); 
    \path[draw] (0,0) node[left] {6}
    -- (1.5,-1) node[below] {5}
    -- (4) node[below] {4}
    -- (3) node[right] {3}
    -- (2) node[above] {2}
    -- (1) node[above] {1}
    -- cycle;

    \draw ($(3)!0.4!(4)$) -- ($(1)!0.4!(2)$);
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

您可以看到为什么它不起作用的解释Heiko Oberdiek 的回答。为了解决这个问题,你可以node[position] (n) {n}用替换coordinate[label=position:n] (n)。以下是完整代码:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
  \begin{tikzpicture}
    \path[draw] (0,0) coordinate[label=left:6] (6)
      -- (1.5,-1) coordinate[label=below:5] (5)
      -- (3.5, -0.8) coordinate[label=below:4] (4)
      -- (5,0) coordinate[label=right:3] (3)
      -- (4, 1.5) coordinate[label=above:2] (2)
      -- (1,2) coordinate[label=above:1] (1)
      -- cycle;

    \draw[red] ($(3)!0.4!(4)$) -- ($(1)!0.4!(2)$);
  \end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

连接节点的线(3) -- (4)(1) -- (2)节点的中心点:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
  \path[draw] (0,0) node[left] (6) {6}
    -- (1.5,-1) node[below] (5) {5}
    -- (3.5, -0.8) node[below] (4) {4}
    -- (5,0) node[right] (3) {3}
    -- (4, 1.5) node[above] (2) {2}
    -- (1,2) node[above] (1) {1}
    -- cycle;

    \draw[red] (3) -- (4) (1) -- (2);
    \draw[blue] ($(3)!0.4!(4)$) -- ($(1)!0.4!(2)$);
\end{tikzpicture}
\end{document}

连接线的可视化来说明问题

您需要的是节点的锚点,而不是节点的中心点:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
  \path[draw] (0,0) node[left] (6) {6}
    -- (1.5,-1) node[below] (5) {5}
    -- (3.5, -0.8) node[below] (4) {4}
    -- (5,0) node[right] (3) {3}
    -- (4, 1.5) node[above] (2) {2}
    -- (1,2) node[above] (1) {1}
    -- cycle;

    \draw[red] ($(3.west)!0.4!(4.north)$) -- ($(1.south)!0.4!(2.south)$);
\end{tikzpicture}
\end{document}

使用锚点的结果

然而,这是一场维护噩梦。如果移动标签,则还需要固定锚点。因此,将多边形顶点定义为坐标更为清晰,如图所示回答CarLaTeX。

相关内容