为什么三角形的角是突出的,而不是与相邻的三角形完美对齐?

为什么三角形的角是突出的,而不是与相邻的三角形完美对齐?

因此,我绘制了几个彼此对齐的等腰三角形,其中一个三角形是倒置的,但那个倒置的三角形产生了不想要的行为(它的角开始突出)。所有这些三角形都具有相同的顶角和相同的最小尺寸,我(错误地)认为这足以消除它们之间的不一致。

代码:

\documentclass[border=5mm]{standalone}

\usepackage[alignedleftspaceno]{amsmath}
\usepackage{tikz}

\usetikzlibrary
{   calc,
    positioning,
    shapes  % REQUIRED TO DRAW TRIANGLES
    ,spy    % SPY LINE (CAN BE REMOVED AT ONCE WITH OTHER SPY LINES)
}

\begin{document}
    \begin{tikzpicture}         % BEGIN DEFINING OPTIONS
    [   every isosceles triangle node/.style=
        {   draw,
            inner sep=0mm,
            isosceles triangle apex angle=60,
            minimum size=20mm,
            outer sep=0mm,
            shape border uses incircle
        }
        ,spy using outlines=    % SPY LINE; MARK NEXT LINE (PROBLEM WITH FORMATTING)
        {circle,                % SPY LINE; NO SPACE ALLOWED BETWEEN "{" AND "circle"?
            magnification=20,   % SPY LINE
            size=2cm,           % SPY LINE
            connect spies       % SPY LINE
        }                       % SPY LINE
    ]                           % END DEFINING OPTIONS

    % DRAW TOP TRIANGLE
    \path node
    [   isosceles triangle,
        shape border rotate=90
    ](T_1){};

    % DRAW BOTTOM LEFT TRIANGLE
    \path node
    [   isosceles triangle,
        shape border rotate=90,
        below=0mm of T_1.left corner,
        anchor=apex
    ](T_2){};

    % DRAW PROBLEMATIC TRIANGLE (IT IS UPSIDE DOWN)
    \path node
    [   isosceles triangle,
        shape border rotate=-90,
        right=0mm of T_2.apex,
        anchor=right corner
    ](T_3){};

    \spy[red]on(T_3.right corner)   % SPY LINE
        in node at(3,0);            % SPY LINE

    \end{tikzpicture}
\end{document}

输出:

我本来只想问这个问题,但在格式化代码以供提交,并添加间谍功能以放大有问题的区域时,我遇到了另一个问题。您可能已经注意到,我的代码中有一个“标记下一行(格式问题)”注释。出于某种原因,我无法在“{”(左括号)和单词“圆圈”之间添加空格,这影响了代码的格式,尽管影响不大。我想知道(如果你愿意的话)为什么。我收到的错误消息是

Package pgfkeys Error: I do not know the key '/tikz/ circle' and I am going to ignore it.
Perhaps you misspelled it.

答案1

正如错误消息所表明的那样,TiZ 寻找circle并且没有这样的形状。在某些情况下,空格会被修剪掉,但并非总是如此,这里也不是。解析至少可以说是复杂的,结果并不总是你直观地期望的,因为这会导致其他地方的行为不那么直观。一般来说,它做得很好,但有时你需要记住,毕竟,代码和精确的语法很重要。

奇怪的间谍结果是 Ti 使用的放置方法的函数Z 和非零线宽,与分离绘制的边框路径相结合。

也就是说,问题在于你的镶嵌计划没有考虑到线宽。要么出现间隙,要么出现突出部分。此外,如果你不绘制封闭路径,不精确无论如何都会导致粗糙。每个形状周围都有封闭路径,但组合的边界没有。

解决此问题的一种方法是在创建节点后绘制边框。例如,

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,spy}
\begin{document}
\begin{tikzpicture}
  [
    every isosceles triangle node/.style={%
      inner sep=0mm, isosceles triangle apex angle=60, minimum size=20mm, outer sep=0mm, shape border uses incircle
    },
    spy using outlines={%
      circle, magnification=20,  size=2cm, connect spies,
    },
  ]
  \begin{scope}[every node/.append style={isosceles triangle}]
    \node [shape border rotate=90] (T_1) {};
    \node [anchor=right corner, shape border rotate=-90] (T_3) at (T_1.left corner) {};
    \node [anchor=apex, shape border rotate=90] (T_2) at (T_1.left corner) {};
  \end{scope}
  \draw (T_1.apex) -- (T_1.right corner) -- (T_3.apex) -- (T_2.left corner) -- (T_2.apex) edge (T_3.apex) edge (T_1.right corner) -- cycle;
  \spy[red]on(T_3.right corner) in node at(3,0);
\end{tikzpicture}
\end{document}

更整洁的三角形

答案2

在我看来,三角形的唯一问题是线连接是“斜接”,对于这种锐角的线连接(这就是这种情况),最外角的点会超出拐角处 1/2 线宽的圆盘。我不知道您的软件包是否允许您更改这一点,但在 Illustrator/PostScript/等中,只需将线连接设置为圆角或斜接即可。

相关内容