
Using a \newcommand
macro to mark a right angle between three points:
\usetikzlibrary{calc}\newcommand\rightAngle[4]{\pgfmathanglebetweenpoints{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#1}{center}}\coordinate (tmpRA) at ($(#2)+(\pgfmathresult+45:#4)$);\draw[blue!80!black,thick] ($(#2)!(tmpRA)!(#1)$) -- (tmpRA) -- ($(#2)!(tmpRA)!(#3)$);}\begin{tikzpicture}[scale=3]\coordinate (O) at (0,0);\coordinate (X) at (2,0);\coordinate (Y) at (0,2);\draw[thick] (X) -- (O) -- (Y);\rightAngle{X}{O}{Y}{0.6}\end{tikzpicture}
Using a \pic
macro with a predefined input format:
\usetikzlibrary{calc}\tikzset{pics/right angle/.style args={(#1)-(#2)-(#3):#4}{code={\pgfmathanglebetweenpoints{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#1}{center}}\coordinate (tmpRA) at ($(#2)+(\pgfmathresult+45:#4)$);\draw[blue!80!black,thick] ($(#2)!(tmpRA)!(#1)$) -- (tmpRA) -- ($(#2)!(tmpRA)!(#3)$);}}}\begin{tikzpicture}[scale=3]\coordinate (O) at (0,0);\coordinate (X) at (2,0);\coordinate (Y) at (0,2);\draw[thick] (X) -- (O) -- (Y);\pic {right angle={(X)-(O)-(Y):0.6}};\end{tikzpicture}
An alternative, shorter \def
macro by Alexandros Tsagkaropolulos is the following:
\usetikzlibrary{calc}\def\MarkRightAngle[size=#1](#2,#3,#4){\draw[blue!80!black,thick] ($(#3)!#1!(#2)$) -- ($($(#3)!#1!(#2)$)!#1!90:(#2)$) -- ($(#3)!#1!(#4)$)}\begin{tikzpicture}[scale=3]\coordinate (O) at (0,0);\coordinate (X) at (2,0);\coordinate (Y) at (0,2);\draw[thick] (X) -- (O) -- (Y);\MarkRightAngle[size=15pt](X,O,Y);\end{tikzpicture}
Edit and compile if you like:
% Author: Izaak Neutelings (June 2020)\documentclass[border=3pt,tikz]{standalone}\usetikzlibrary{calc}\tikzset{>=latex} % for LaTeX arrow head\newcommand\rightAngle[4]{\pgfmathanglebetweenpoints{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}\coordinate (tmpRA) at ($(#2)+(\pgfmathresult+45:#4)$);\draw[blue!80!black] ($(#2)!(tmpRA)!(#1)$) -- (tmpRA) -- ($(#2)!(tmpRA)!(#3)$);%\fill[red] (tmpRA) circle(0.02);}\begin{document}\begin{tikzpicture}\coordinate (O) at (0,0);\coordinate (X) at (1,0);\coordinate (Y) at (0,1);\draw (X) -- (O) -- (Y);\rightAngle{Y}{O}{X}{0.40}\end{tikzpicture}\begin{tikzpicture}\def\ang{20}\coordinate (O) at (0,0);\coordinate (X) at (\ang:1);\coordinate (Y) at (\ang+90:1);\draw (X) -- (O) -- (Y);\rightAngle{Y}{O}{X}{0.40}\node[scale=0.7] at (45:1.4) {$\alpha=\pgfmathresult$};\end{tikzpicture}\begin{tikzpicture}\def\ang{20}\def\R{1.2}\coordinate (O) at (0,0);\coordinate (R) at (\ang:\R);\pgfmathanglebetweenpoints{\pgfpointanchor{O}{center}}{\pgfpointanchor{R}{center}}
Click to download: right_angle.tex • right_angle.pdf
Open in Overleaf: right_angle.tex