为什么`\tkzInterLC`计算错误的半径?

为什么`\tkzInterLC`计算错误的半径?

对三角形的描述如下:

假设 Δ 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,所以我不能对你的实际问题说太多,但我想说的是,你可以在这里用“calcintersection”“仅”很容易地做事情。

\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}

在此处输入图片描述

相关内容