对三角形的描述如下:
假设 Δ ABC 为直角三角形。∠ABC=90,AB=12cm,AC=15cm。点 D 位于 AB 上,DB = 7cm。最后一个点 E 位于 AC 上,∠DEA = 90。
我正在尝试绘制三角形仅有的使用上述信息。这意味着我不是想用毕达哥拉斯来计算AB = sqrt(AC^2 - BC^2) = 9
。
上述限制导致我使用tkz-euclide
. 尤其是以下几行
\tkzDefLine[orthogonal=through B](A,B) \tkzGetPoint{b}
\tkzInterLC[R](B,b)(A,\AC cm) \tkzGetPoint{C}
似乎可以确定点的位置C
。简而言之,我们定义一条通过 B 垂直于 AB 的线(因为角度 ABC = 90^c),然后将这条线与以 A 为中心、半径为 15 的圆相交。参见下图。
这里蓝色三角形是正确的,而较大的三角形是通过上面的命令定义的。数字表示半径,因此使用上面的命令得到的圆太大了 16.9>15.00。但是,使用
\tkzDefLine[orthogonal=through B](A,B) \tkzGetPoint{b}
\tkzInterLC[R](B,b)(A,\AC cm) \tkzGetPoints{C}{C2}
或者
\tkzDefLine[orthogonal=through B](A,B) \tkzGetPoint{b}
\tkzInterLC[R](B,b)(A,\AC cm) \tkzGetFirstPoint{C}
有什么区别?使用 有什么问题\tkzGetPoint
?
\documentclass{standalone}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}
\tkzInit[xmin=-0.4,xmax=12.45,ymin=-0.5,ymax = 12.5]
\tkzClip
\def\scale{1}
\pgfmathsetmacro{\AB}{\scale*12}
\pgfmathsetmacro{\AC}{\scale*15}
\pgfmathsetmacro{\BC}{sqrt(\AC*\AC-\AB*\AB)}
\pgfmathsetmacro{\BD}{\scale*7}
\tkzDefPoint(0,0){A}
\tkzDefPoint(\AB,0){B}
\tkzDefLine[orthogonal=through B](A,B) \tkzGetPoint{b}
\tkzInterLC[R](B,b)(A,\AC cm) \tkzGetPoint{C}
\tkzCalcLength[cm](A,C)\tkzGetLength{rAC}
\tkzDefPoint(\AB,\BC){CC}
\tkzCalcLength[cm](A,CC)\tkzGetLength{rACC}
\tkzDefPoint(\AB-\BD,0){D}
\tkzDefLine[orthogonal=through D](A,C) % \tkzGetPoint{d}
\tkzInterLL(A,C)(D,tkzPointResult) \tkzGetPoint{E}
\tkzMarkRightAngle(D,E,A)
\tkzMarkRightAngle(A,B,C)
\tkzDrawSegment(D,E)
\tkzDrawPolygon(A,B,C)
\tkzDrawPolygon[blue](A,B,CC)
\tkzLabelPoint[below left](A){$A$}
\tkzLabelPoint[below right](B){$B$}
\tkzLabelPoint[above right](C){$C$}
\tkzLabelPoint[below](D){\rACC}
\tkzLabelPoint[above left](E){\rAC}
\end{tikzpicture}
\end{document}
答案1
圆与线的交点定义了 0、1 或两个点,但当你得到两个点时,不可能知道顺序。当第一个点给出不好的结果时,你需要取第二个点。这就是为什么我定义了三个宏来获取两个点,或者只有一个点。
答案2
我没有使用tkz-euclide
,所以我不能对你的实际问题说太多,但我想说的是,你可以在这里用“calc
和intersection
”“仅”很容易地做事情。
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}
\path (0,0) coordinate (A) (12,0) coordinate (B) (12-7,0) coordinate (D);
\begin{scope}[overlay]
\path[name path=circ] (A) circle[radius=15cm];
\path[name path=line] (B) -- ++ (0,15cm);
\path[name intersections={of=circ and line,by=C}];
\end{scope}
\draw[blue] (A) -- (B) -- (C) -- cycle;
\draw[red] (D) -- ($(A)!(D)!(C)$);
\end{tikzpicture}
\end{document}