Diagram

Two Views of the Orthocenter

The altitude, cyclic-quadrilateral, and vector configurations

The completed altitude, cyclic-quadrilateral, and vector figures for Two Views of the Orthocenter, with complete source.

Methods Cyclic quadrilaterals · Vectors

Drawing tool: tkz-euclideSource available

Completed figures

An acute triangle ABC with D, E, and F the perpendicular feet from A, B, and C, respectively. The altitudes AD, BE, and CF meet at H.
The three altitudes of triangle ABC meet at H.
An acute triangle ABC with D, E, and F the altitude feet from A, B, and C, respectively. The altitudes AD, BE, and CF meet at H, and the circles through B, C, E, F and through A, E, F, H are shown.
Figure 1. The two right-angle circles used in the synthetic proof.
A scalene triangle ABC on its circumcircle with O as origin. The equal-length vertex vectors a, b, c are drawn from O, the orthocenter has vector h = a + b + c, and the centroid G lies on OH.
Figure 2. The circumcenter, centroid, orthocenter, and the vector configuration behind the Euler line.

Complete source

Altitude configuration

% Figure for a Classical Theorem Note
% Article: Two Views of the Orthocenter
% Site: Elementary Geometry
% Website: https://elementarygeometry.org/
% Drawing tool: tkz-euclide
% Output format: SVG
% Last verified: 2026-08-24
%
% Prepared for the web edition of this note.
%
% Editable source for public/diagrams/orthocenter-altitudes.svg.
% The production site serves the committed SVG and does not compile TeX.
\documentclass[tikz,border=8pt]{standalone}
\usepackage{tkz-euclide}

\definecolor{egNavy}{HTML}{17243D}
\definecolor{egGray}{HTML}{777671}
\definecolor{egRust}{HTML}{92513F}
\newcommand{\egUseStandardPlateAt}[1]{%
  \pgfresetboundingbox
  \path[use as bounding box]
    ([xshift=-102pt,yshift=-80pt]#1)
    rectangle
    ([xshift=102pt,yshift=80pt]#1);%
}
\newcommand{\egUseStandardPlate}{%
  \coordinate (egPlateCenter) at (current bounding box.center);%
  \egUseStandardPlateAt{egPlateCenter}%
}
\tikzset{
  eg figure/.style={line cap=round,line join=round,every node/.append style={font=\normalsize,text=egNavy}},
  eg main/.style={draw=egNavy,line width=0.75pt},
  eg support/.style={draw=egGray,line width=0.52pt},
  eg support dashed/.style={draw=egGray,line width=0.52pt,dash pattern=on 3pt off 3pt},
  eg accent/.style={draw=egRust,line width=0.75pt},
  eg mark/.style={draw=egNavy,line width=0.50pt}
}

\begin{document}
\begin{tikzpicture}[eg figure,scale=1.0]
  \tkzDefPoint(-0.5,4.2){A}
  \tkzDefPoint(-3,0){B}
  \tkzDefPoint(3,0){C}

  \tkzDefPointBy[projection=onto B--C](A)\tkzGetPoint{D}
  \tkzDefPointBy[projection=onto C--A](B)\tkzGetPoint{E}
  \tkzDefPointBy[projection=onto A--B](C)\tkzGetPoint{F}
  \tkzInterLL(B,E)(C,F)\tkzGetPoint{H}

  \tkzDrawSegments[eg support dashed](A,D B,E C,F)
  \tkzDrawSegments[eg main](A,B B,C C,A)

  \tkzMarkRightAngle[eg mark,size=0.18](A,D,C)
  \tkzMarkRightAngle[eg mark,size=0.18](B,E,A)
  \tkzMarkRightAngle[eg mark,size=0.18](C,F,B)

  \tkzDrawPoints[color=egNavy,fill=egNavy,size=1.6](A,B,C,D,E,F,H)
  \tkzLabelPoints[above](A)
  \tkzLabelPoints[below left](B)
  \tkzLabelPoints[below right](C)
  \tkzLabelPoints[below](D)
  \tkzLabelPoints[right](E)
  \tkzLabelPoints[left](F)
  \tkzLabelPoints[below right,xshift=-2pt,yshift=-4pt](H)
  \egUseStandardPlate
\end{tikzpicture}
\end{document}

Cyclic-quadrilateral configuration

% Figure for a Classical Theorem Note
% Article: Two Views of the Orthocenter
% Site: Elementary Geometry
% Website: https://elementarygeometry.org/
% Drawing tool: tkz-euclide
% Output format: SVG
% Last verified: 2026-08-30
%
% Prepared for the web edition of this note.
%
% Editable source for public/diagrams/orthocenter-cyclic-proof.svg.
% The production site serves the committed SVG and does not compile TeX.
\documentclass[tikz,border=8pt]{standalone}
\usepackage{tkz-euclide}
\usetikzlibrary{angles,quotes}

\definecolor{egNavy}{HTML}{17243D}
\definecolor{egGray}{HTML}{777671}
\definecolor{egRust}{HTML}{92513F}
\newcommand{\egUseStandardPlateAt}[1]{%
  \pgfresetboundingbox
  \path[use as bounding box]
    ([xshift=-102pt,yshift=-80pt]#1)
    rectangle
    ([xshift=102pt,yshift=80pt]#1);%
}
\newcommand{\egUseStandardPlate}{%
  \coordinate (egPlateCenter) at (current bounding box.center);%
  \egUseStandardPlateAt{egPlateCenter}%
}
\tikzset{
  eg figure/.style={line cap=round,line join=round,every node/.append style={font=\normalsize,text=egNavy}},
  eg main/.style={draw=egNavy,line width=0.75pt},
  eg support/.style={draw=egGray,line width=0.52pt},
  eg support dashed/.style={draw=egGray,line width=0.52pt,dash pattern=on 3pt off 3pt},
  eg accent/.style={draw=egRust,line width=0.75pt},
  eg mark/.style={draw=egNavy,line width=0.50pt}
}

\begin{document}
\begin{tikzpicture}[eg figure,scale=1.0]
  % A compact configuration preserves the two cyclic quadrilaterals.
  \tkzDefPoint(-0.4,3.0){A}
  \tkzDefPoint(-2.2,0){B}
  \tkzDefPoint(2.2,0){C}
  \tkzDefPointBy[projection=onto A--C](B)\tkzGetPoint{E}
  \tkzDefPointBy[projection=onto A--B](C)\tkzGetPoint{F}
  \tkzInterLL(B,E)(C,F)\tkzGetPoint{H}
  \tkzInterLL(A,H)(B,C)\tkzGetPoint{D}

  \tkzDefCircle[circum](B,C,E)\tkzGetPoint{Oone}
  \tkzDefCircle[circum](A,E,F)\tkzGetPoint{Otwo}

  \tkzDrawCircle[eg main](Oone,B)
  \tkzDrawCircle[eg main](Otwo,A)
  \tkzDrawSegments[eg main](A,B B,C C,A)
  \tkzDrawSegments[eg support dashed](B,E C,F A,D)

  \tkzMarkRightAngle[eg mark,size=0.18](B,E,A)
  \tkzMarkRightAngle[eg mark,size=0.18](C,F,B)

  \tkzDrawPoints[color=egNavy,fill=egNavy,size=1.6](A,B,C,D,E,F,H)
  \tkzLabelPoint[above](A){$A$}
  \tkzLabelPoint[below left](B){$B$}
  \tkzLabelPoint[below right](C){$C$}
  \tkzLabelPoint[below](D){$D$}
  \tkzLabelPoint[above right](E){$E$}
  \tkzLabelPoint[above left](F){$F$}
  \tkzLabelPoint[below right](H){$H$}
  \node at (-2.1,-1.2) {$\omega_1$};
  \node at (1.2,2.6) {$\omega_2$};
  \egUseStandardPlate
\end{tikzpicture}
\end{document}

Vector and Euler-line configuration

% Figure for a Classical Theorem Note
% Article: Two Views of the Orthocenter
% Site: Elementary Geometry
% Website: https://elementarygeometry.org/
% Drawing tool: tkz-euclide
% Output format: SVG
% Last verified: 2026-08-30
%
% Prepared for the web edition of this note.
%
% Editable source for public/diagrams/orthocenter-vector-euler-line.svg.
% The production site serves the committed SVG and does not compile TeX.
\documentclass[tikz,border=8pt]{standalone}
\usepackage{tkz-euclide}
\usetikzlibrary{arrows.meta,calc}

\definecolor{egNavy}{HTML}{17243D}
\definecolor{egGray}{HTML}{777671}
\definecolor{egRust}{HTML}{92513F}
\newcommand{\egUseStandardPlateAt}[1]{%
  \pgfresetboundingbox
  \path[use as bounding box]
    ([xshift=-102pt,yshift=-80pt]#1)
    rectangle
    ([xshift=102pt,yshift=80pt]#1);%
}
\newcommand{\egUseStandardPlate}{%
  \coordinate (egPlateCenter) at (current bounding box.center);%
  \egUseStandardPlateAt{egPlateCenter}%
}
\tikzset{
  eg figure/.style={line cap=round,line join=round,every node/.append style={font=\normalsize,text=egNavy}},
  eg main/.style={draw=egNavy,line width=0.75pt},
  eg support/.style={draw=egGray,line width=0.52pt},
  eg support dashed/.style={draw=egGray,line width=0.52pt,dash pattern=on 3pt off 3pt},
  eg accent/.style={draw=egRust,line width=0.75pt},
  eg mark/.style={draw=egNavy,line width=0.50pt}
}

\begin{document}
\begin{tikzpicture}[eg figure,scale=1.0]
  % O is the origin. The three vertices are rotations of one radius point,
  % so their position vectors have exactly equal lengths.
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(2.6,0){R}
  \tkzDefPointBy[rotation=center O angle 48](R)\tkzGetPoint{A}
  \tkzDefPointBy[rotation=center O angle 162](R)\tkzGetPoint{B}
  \tkzDefPointBy[rotation=center O angle -40](R)\tkzGetPoint{C}
  \tkzDefTriangleCenter[centroid](A,B,C)\tkzGetPoint{G}
  \tkzDefPointBy[homothety=center O ratio 3](G)\tkzGetPoint{H}

  \tkzDrawCircle[eg main](O,R)
  \tkzDrawSegments[eg main](A,B B,C C,A)
  \tkzDrawSegments[eg support dashed](A,H B,H C,H)
  \tkzDrawSegments[eg main,-{Latex[length=2.2mm,width=1.5mm]}](O,A O,B O,C)
  \tkzDrawSegment[eg main,-{Latex[length=2.2mm,width=1.5mm]}](O,H)

  \tkzDrawPoints[color=egNavy,fill=egNavy,size=1.6](A,B,C,O,G,H)
  \tkzLabelPoint[above](A){$A$}
  \tkzLabelPoint[left](B){$B$}
  \tkzLabelPoint[below right](C){$C$}
  \tkzLabelPoint[below left](O){$O$}
  \tkzLabelPoint[below right](G){$G$}
  \tkzLabelPoint[right](H){$H$}

  \node at ($(O)!0.7!(A)+(-0.1,0.2)$) {$\mathbf a$};
  \node at ($(O)!0.7!(B)+(0,0.2)$) {$\mathbf b$};
  \node at ($(O)!0.7!(C)+(0.1,0.2)$) {$\mathbf c$};
  \node at ($(O)!0.6!(H)+(0.2,-0.1)$) {$\mathbf h$};
  \egUseStandardPlate
\end{tikzpicture}
\end{document}

Read the article