我发现绘制如下图所示的三角形很困难:
我无法确定“E 点”。
因此,“A 点”。
长度并不重要,重要的是角度。
各DB
段的长度与 相同DE
。
各AD
段的长度与 相同DC
。
\documentclass[10pt]{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,angles,positioning,intersections,quotes,decorations.markings}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(0,0){D}
\tkzDefPoint(0,1){B}
\tkzLabelPoint[left](D){$D$}
\tkzLabelPoint[right](B){$B$}
\tkzDrawSegment[green!60!black](D,B)
\end{tikzpicture}
\end{document}
答案1
E
是最容易找到的点,只需使用极坐标即可。如果D
位于(0,0)
,且B
位于(90:1)
(极坐标,角度 90 半径 1),则E
位于(140:1)
。
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections,calc,angles,quotes}
\begin{document}
\begin{tikzpicture}[scale=4]
\coordinate [label=below:$D$] (D) at (0,0);
\coordinate [label=above:$B$] (B) at (90:1);
\coordinate [label=above left:$E$] (E) at (140:1);
% draw invisible, horizontal path from D
\path [overlay,name path=A] (D) -- ++(-20,0);
% draw invisible path through B and E
\path [overlay,name path=B] (B) -- ($(E)!-20cm!(B)$);
% find intersection of above paths, name it A
\path [name intersections={of=A and B, by={A}}] node[left] at (A) {$A$};
% reflect A around D to get C
\coordinate [label=right:$C$] (C) at ($(D)!-1!(A)$);
\draw (A) -- (C) -- (B) -- cycle;
\draw [dashed] (E) -- (D) -- (B);
% draw angles
\pic [draw,angle radius=1cm,angle eccentricity=1.3, "$40^\circ$"] {angle=E--D--A};
\pic [draw,angle radius=1cm,angle eccentricity=1.3, "$x$"] {angle=B--C--D};
\end{tikzpicture}
\end{document}
答案2
这是一个没有intersections
库的 TikZ 解决方案,使用 AD = tan(65°)BD。
\documentclass[tikz, border=7pt]{standalone}
\usetikzlibrary{calc,angles,quotes}
\begin{document}
\begin{tikzpicture}[scale=2]
\path
(0,0) coordinate[label=below:$D$] (D)
(90:1) coordinate [label=above:$B$] (B)
(140:1) coordinate [label=above left:$E$] (E)
(180:{tan(65)}) coordinate [label=below:$A$] (A)
(0:{tan(65)}) coordinate [label=below:$C$] (C);
\draw (A) -- (B) -- (C) -- cycle;
\draw[dashed] (E) -- (D) -- (B);
\path
(D) pic[draw, angle eccentricity=1.5,"$40^{\circ}$"]{angle=E--D--A}
(A) pic[draw, angle eccentricity=1.5,"$x$"]{angle=B--C--A};
\end{tikzpicture}
\end{document}
答案3
有一种方法可以使用 MetaPost 来实现,对此人们可能会感兴趣,它可以利用 Metafun 格式来绘制角度和标签。
我尝试将问题参数化。点 B 和 D 的坐标以及所需角度的值可以随意更改。点 E 只需通过围绕点 D 旋转点 B 即可构建。点 A 的位置由 MetaPost 自身通过以下指令计算旋转 90° 角的直线 (DB) 与直线 (BE) 之间的交点来找到:
A = whatever[D, D + (B-D) rotated 90] = whatever[B, E];
我已将代码包含在 LuaLaTeX 程序中,以便可以更轻松地排版。
\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{siunitx}
\usepackage{luamplib}
\mplibsetformat{metafun}
\mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
u := 3cm;
alpha := 40;
pair A, B, C, D, E;
D = origin;
B = u*(0, 1);
E = B rotatedaround (D, 90-alpha);
A = whatever[D, D + (B-D) rotated 90] = whatever[B, E];
C = A rotatedaround (D, 180);
beginfig(1);
draw A -- B -- C -- cycle;
draw B -- D -- E dashed evenly;
anglelength := cm;
drawdblarrow anglebetween (D--A, D--E, "\SI{" & decimal alpha & "}{\degree}");
anglelength := 1.25cm;
drawdblarrow anglebetween (C--A, C--B, "$x$");
anglemethod := 2; anglelength := .2cm;
draw anglebetween (D--C, D--B, "");
freelabel("$A$", A, D); freelabel("$B$", B, D); freelabel("$C$", C, D);
freelabel("$D$", D, B); freelabel("$E$", E, D);
endfig;
\end{mplibcode}
\end{document}
答案4
这里有一个解决方案tkz-euclide
\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}[scale=1.5]
% definition
\tkzDefPoint(0,0){D}
\tkzDefPoint(90:2){B}
\tkzDefPoint(140:2){E}
\tkzDefPoint(2,0){I}
% calculation
\tkzInterLL(B,E)(I,D) \tkzGetPoint{A}
\tkzDefPointBy[symmetry=center D](A) \tkzGetPoint{C}
\tkzDrawPolygon(A,B,C)
\tkzDrawSegments[dashed](D,E D,B)
% labels and marks
\tkzLabelPoint[left](A){$A$}
\tkzLabelPoint[above](B){$B$}
\tkzLabelPoint[right](C){$C$}
\tkzLabelPoint[below](D){$D$}
\tkzLabelPoint[above left](E){$E$}
\tkzMarkAngles[size=1](E,D,A B,C,A)
\tkzLabelAngle[pos = 0.75](A,D,E){$40^{\circ}$}
\tkzLabelAngle[pos = 0.75](B,C,A){$x$}
\end{tikzpicture}
\end{document}