我正在尝试想出一种方法来绘制“参数化”直角三角形,这意味着我改变斜边的长度\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 的坐标,参见此主题。