在这个问题获取某线段长度用于绘制新的线段长度等于某线段中,@u70550 热情地回复了关于线段绘制的疑惑。
今天遇到了新的类似问题 —— 获取未知角的度数并用在另一个角的绘制中。
原草图如下:
绘制了一多半的代码如下:
\documentclass[border=5pt]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[scale=1, font=\small]
% ===== 定义点 =====
\tkzDefPoints{0/0/C, 4/0/E}
\tkzDefTriangle[two angles=23 and 37](C,E)
\tkzGetPoint{B}
\tkzDefPointBy[rotation=center B angle -90](C)
\tkzGetPoint{A}
\tkzDefPointBy[rotation=center B angle 90](E)
\tkzGetPoint{D}
\tkzCalcLength(B,D)
\tkzGetLength{BDlen}
\tkzDefPointWith[linear normed, K=\BDlen](B,A)
\tkzGetPoint{G}
\tkzFindAngle(A,D,G)
\tkzGetAngle(angleADG)
\tkzDefPointBy[rotation=center B angle \angleADG](A)
\tkzGetPoint{f}
\tkzInterLL(B,f)(A,D)
\tkzGetPoint{F}
% ===== 绘制图形 =====
\tkzDrawPolygon[thick](B,C,E)
\tkzDrawSegments[thick](A,B D,B A,C D,E A,D D,G B,F G,F)
\end{tikzpicture}
\end{document}
在获取未知角的度数并用在另一个角的绘制中出现了报错,查看了宏包的汉化说明,还是没有找到问题。再求助下大佬们。
报错信息为:
! Undefined control sequence.
\tkzangle ->\angleADG
l.23 ...ntBy[rotation=center B angle \angleADG](A)
?
注意
\tkzGetAngle(angleADG)
与
\tkzGetAngle{angleADG}
看文档的例子:
所以,你只要把\tkzGetAngle(angleADG)
替换为\tkzGetAngle{angleADG}
即可
\documentclass[border=5pt]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
% ===== 定义点 =====
\tkzDefPoints{0/0/C, 4/0/E}
\tkzDefTriangle[two angles=23 and 37](C,E)
\tkzGetPoint{B}
\tkzDefPointBy[rotation=center B angle -90](C)
\tkzGetPoint{A}
\tkzDefPointBy[rotation=center B angle 90](E)
\tkzGetPoint{D}
\tkzCalcLength(B,D)
\tkzGetLength{BDlen}
\tkzDefPointWith[linear normed, K=\BDlen](B,A)
\tkzGetPoint{G}
\tkzFindAngle(A,D,G)
\tkzGetAngle{angleADG}%<-注意花括号
\tkzDefPointBy[rotation=center B angle \angleADG](A)
\tkzGetPoint{f}
\tkzInterLL(B,f)(A,D)
\tkzGetPoint{F}
% ===== 绘制图形 =====
\tkzDrawPolygon[thick](B,C,E)
\tkzDrawSegments[thick](A,B D,B A,C D,E A,D D,G B,F G,F)
\end{tikzpicture}
\end{document}
如果只要用一次,那么也可以直接用\tkzAngleResult
,这样可以不用再\tkzGetAngle
多写一行...
\documentclass[border=5pt]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[font=\small]
% ===== 定义点 =====
\tkzDefPoints{0/0/C, 4/0/E}
\tkzDefTriangle[two angles=23 and 37](C,E)
\tkzGetPoint{B}
\tkzDefPointBy[rotation=center B angle -90](C)
\tkzGetPoint{A}
\tkzDefPointBy[rotation=center B angle 90](E)
\tkzGetPoint{D}
\tkzCalcLength(B,D)
\tkzGetLength{BDlen}
\tkzDefPointWith[linear normed, K=\BDlen](B,A)
\tkzGetPoint{G}
\tkzFindAngle(A,D,G)
% \tkzGetAngle(angleADG)
\tkzDefPointBy[rotation=center B angle \tkzAngleResult](A)
\tkzGetPoint{f}
\tkzInterLL(B,f)(A,D)
\tkzGetPoint{F}
% ===== 绘制图形 =====
\tkzDrawPolygon[thick](B,C,E)
\tkzDrawSegments[thick](A,B D,B A,C D,E A,D D,G B,F G,F)
\end{tikzpicture}
\end{document}
@u10189 好奇这题答案是什么,$\frac{12}{10-3\sqrt{3}}$
?奇奇怪怪的结果就有点慌。。。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,arrows.meta}
\usepackage{tkz-euclide}
\usepackage{xparse}
\usepackage{xstring}
\input{centroid_label.tex}%https://www.latexstudio.net/index/details/index/mid/4611.html
\begin{document}
\begin{tikzpicture}[scale=0.4]
%用面积条件计算得到 BD, AB 的长度
\edef\lenBD{\fpeval{sqrt(30)}}
\edef\lenAB{\fpeval{100/(sqrt(10)*3)}}
\let\lenBE\lenBD
\let\lenBC\lenAB
%已知 BG= BD
\let\lenBG\lenBD
\edef\lenAG{\fpeval{\lenAB-\lenBG}}
%余弦定理计算 AD
\edef\lenAD{\fpeval{sqrt(\lenBD*\lenBD+\lenAB*\lenAB-2*\lenBD*\lenAB*cosd(60))}}
%三角形 AGD 相似于三角形 AFB, 计算 AF
\edef\lenAF{\fpeval{\lenAG*\lenAB/\lenAD}}
%余弦定理计算 CE, 角 BCE
\edef\lenCE{\fpeval{sqrt(\lenBD*\lenBD+\lenAB*\lenAB-2*\lenBD*\lenAB*cosd(120))}}
\edef\angleBCE{\fpeval{acosd((\lenCE*\lenCE + \lenAB*\lenAB - \lenBD*\lenBD)/(2*\lenCE*\lenAB))}}
\coordinate (C) at(0,0);
\coordinate (E) at(\lenCE,0);
\coordinate (B) at(\angleBCE:\lenBC);
\coordinate (A) at($(B)!1!-90:(C)$);
\coordinate (D) at($(B)!1!90:(E)$);
\coordinate (G) at($(B)!\lenBG cm!(A)$);
\coordinate (F) at($(A)!\lenAF cm!(D)$);
\draw (A) -- (C) -- (E) -- (D) -- cycle;
\draw (B) edge (A) edge (C) edge (E) edge (D) edge (F);
\draw (G) edge (D) edge (F);
\LabelPts{A,B[-100],C,D,E,F,G[200]}
\coordinate (H) at($(G)!(A)!(F)$);
\draw (A) -- (H) node[anchor=240]{$H$};
\tkzCalcLength(A,H)
\tkzGetLength{lenAH}
%显示 AH 的长度
\node at (0,8) {$AH=\lenAH$};
\end{tikzpicture}
\end{document}
\tkzAngleResult
,这个方式由于不懂逻辑,不敢随便使用。像上面取线段长度时用了这个方式,下面取角度时再用这个方式,是会混淆吧。@u10189 是不会的,
\tkzAngleResult
这个宏会在每次用完\tkzFindAngle
之后被覆盖。所以可以:如果不习惯也没关系,按自己舒服的、觉得简单的方式来即可。