3

Is it possible to only get the coordinate without drawing? (Or is there any other shortcut without using 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}

enter image description here

2
2

Yes, calc has these projections. Their syntax is described in section 13.5.5 The Syntax of Projection Modifiers of the 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}

enter image description here

2

With tkz-euclide the correct code is :

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

enter image description here

0

An alternative to marmot's nice answer. \pgfmathanglebetweenpoints command gives angle of a line. Using this command and intersections library, one can get the coordinates without drawing.

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

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.