Tkz-Euclide 不画图获取海拔点

Tkz-Euclide 不画图获取海拔点

是否可以只获取坐标而不进行绘制?(或者有没有其他不使用的快捷方式tkz-euclide

\documentclass[tikz,border=10pt]{standalone}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (4,4);
    \coordinate (C) at (4,2);

    \draw(A)--(B);
    \tkzDrawAltitude[color=blue](A,B)(C) \tkzGetPoint{D}

    \fill[red] (A) circle (2pt);
    \fill[red] (B) circle (2pt);
    \fill[red] (C) circle (2pt);
    \fill[blue] (D) circle (2pt);

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

是的,calc有这些投影。它们的语法在章节中描述13.5.5 投影修改器的语法pgfmanual。

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (4,4);
    \coordinate (C) at (4,2);

    \draw(A)--(B);
    \draw[blue] ($(A)!(C)!(B)$) coordinate (D) -- (C);

    \fill[red] (A) circle (2pt);
    \fill[red] (B) circle (2pt);
    \fill[red] (C) circle (2pt);
    \fill[blue] (D) circle (2pt);

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

使用 tkz-euclide 的正确代码是:

\documentclass[tikz,border=10pt]{standalone}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}
    \tkzDefPoint(0,0){A}
    \tkzDefPoint(4,4){B}
    \tkzDefPoint(4,2){C}
    \tkzDrawSegment(A,B)
    \tkzDefPointsBy[projection=onto A--B](C){D}.
    \tkzDrawPoints[color=red](A,B,C)
    \tkzDrawPoints[color=blue](D)
        \tkzLabelPoints(A,B,C,D)
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

替代方案土拨鼠的很好的答案。\pgfmathanglebetweenpoints命令给出了一条线的角度。使用此命令和intersections库,无需绘图即可获得坐标。

\documentclass[tikz,border=10pt]{standalone}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usetikzlibrary{calc,intersections}
\newcommand{\pgfextractangle}[3]{%
    \pgfmathanglebetweenpoints{\pgfpointanchor{#2}{center}}
                              {\pgfpointanchor{#3}{center}}
    \global\let#1\pgfmathresult  
}
\begin{document}
\begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (4,4);
    \coordinate (C) at (4,2);
    \path[draw, name path=line1](A)--(B);
    \pgfextractangle{\angle}{A}{B}
    \fill[red] (A) circle (2pt);
    \fill[red] (B) circle (2pt);
    \fill[red] (C) circle (2pt);
    \path [name path=line2] (C)--++(\angle+90:3); % Add 90 degree to calculated angle for orthogonality.
    \path[name intersections={of=line1 and line2,by={D}}];
    \fill[blue] (D) circle (2pt);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容