Tikz 在交叉口处修剪线

Tikz 在交叉口处修剪线

我正在尝试想出一种方法来绘制“参数化”直角三角形,这意味着我改变斜边的长度\hypo和其中一个内角\alfa,它应该能帮我画出三角形。到目前为止,我已经做到了这一点

\documentclass[border=1mm]{standalone}

\usepackage{tikz}

\usetikzlibrary{calc, angles, intersections}

\begin{document}
    \begin{tikzpicture}
        \def\alfa{55}
        \def\hypo{3}
        \draw[name path= A-C] (0,0) node[below left] (A) {A} -- (90-\alfa:3);
        \draw (0,0) -- (\hypo,0) node[below right] (B) {B} -- ++ (180-\alfa:3);
        \path[name path= B-C] (\hypo,0) -- ++ (180-\alfa:3);
        \node [name intersections={of= A-C and B-C}, above] at (intersection-1) {C};
    \end{tikzpicture}
\end{document}

我不知道如何在它们的交叉点处修剪两个直角三角形。

除此之外,我认为对它们的长度进行硬编码(这里是 3 个单位)不是一个好主意。我这样做是因为如果它们太短,那么它们就不会相交,Tikz 就找不到交点。最好让 LaTeX(或 Tikz)找出正确的长度以到达交点而不是越过它。我尝试在手册和网上寻找解决方案,但我找不到任何真正有用的东西。有什么想法可以做到这一点吗?

答案1

您可以使用它overlay从边界框中排除辅助坐标。顺便说一句,您不需要用于intersections计算直线交点的库。

\documentclass[border=1mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
   \def\alfa{55}
   \def\hypo{3}
   \path[overlay] (0,0) coordinate (A) ++ (90-\alfa:1) coordinate (C')
    (\hypo,0) coordinate (B)  ++ (180-\alfa:1) coordinate (C'')
    (intersection of A--C' and B--C'') coordinate (C);
    %or
    %(intersection cs:first line={(A)--(C')},second line={(B)--(C'')}) coordinate (C);
   \draw (A) node[below left]  {$A$}    -- (B) node[below right] {$B$}
    -- (C) node[above]{$C$} -- cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

当然,我们可以通过分析计算 C 的坐标,参见此主题

相关内容