# How to find points M and N such that AM=CN=BC only with a straight edge and a compass?

The following code is my attempt to find M and N such that AM=CN=BC.

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl,pst-calculate}
\begin{document}
\def\x{\pscalculate{6-3.3541}}
\begin{pspicture}[showgrid](-1,-1)(8,8)
\pstGeonode[PosAngle={180,90,0,-90}](1,2){B}(2.5,5){C}(6,2){A}(\x,2){M}
\pspolygon(B)(C)(A)
\pstRotation[PosAngle=90,RotAngle=75.9638]{C}{B}[N]

\psGetDistanceAB[xShift=-8,yShift=4](B)(C){M}
ShowWedge=false,xShift=-5,yShift=7,arrows=->](B)(C)(A){}

\end{pspicture}
\end{document}

However, I am trying not to use \psGetDistanceAB and \psGetAngleABC.

# Question

How to get M and N such that AM=CN=BC only with a compass and a straight edge?

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl,pst-calculate,textcomp}
\begin{document}
\begin{pspicture}[showgrid](-1,-1)(8,8)
\pstTriangle[PosAngle={180,90,0}](1,2){B}(2.5,5){C}(6,2){A}
\pstInterLC[PointSymbolB=none,PointName=none]{A}{C}{C}{B}{N}{N0}\uput[0](N){N}
\pstInterLC[PointSymbolB=none,PointName=none,
\psarc[origin={C}]{->}(C){0.5}{(B)}{(N)}\uput{5mm}[-10](C){75.9636\textdegree}
\end{pspicture}
\end{document}

• Radius=\pstDistCalc{sqrt((2.5-1)^2+(5-2)^2)} is also possible. – user2478 Dec 29 '18 at 18:43
• Why do you replace \pscalculate by \pstDistCalc ? – user173875 Dec 30 '18 at 11:54
• It also does the conversion into the internal screen unit, whereas pscalculate does only the calculation without taken the current screen unit into account. – user2478 Dec 30 '18 at 12:36
• Please explain to me this question. With \psline(A)(B) \psline(C)(D) \psline(E)(F) ... ( can be replaced by another way), why PSTricks does not have the syntax as \tkzDrawSegments(A,B C,D E,F) ? ( Sorry if i have read document uncarefully.) – user173875 Jan 11 at 14:17

The simpler the code the more challenging it becomes.

\documentclass[pstricks,12pt]{standalone}
\usepackage{pst-eucl}

\begin{document}
\begin{pspicture}[PointSymbolB=none,PointNameB=](7,5)
\pstTriangle(1,1){B}(2.5,4){C}(6,1){A}
\pstTranslation[PointName=none,PointSymbol=none]{B}{A}{C}[C']
\pstInterLC[PosAngle=45]{A}{C}{C}{B}{N}{x}
\pstInterLC[PosAngle=-90]{B}{A}{A}{C'}{M}{y}
\pstMarkAngle[MarkAngleRadius=1.1,LabelSep=.8,arrows=->]{B}{C}{A}{\scriptsize$75.96^\circ$}
\end{pspicture}
\end{document}

# Notes

PointNameA and PointNameB cannot be assigned none but empty. It looks like a bug.

An alternative tikz version:

\documentclass[tikz,border=12pt]{standalone}
\usetikzlibrary{calc,bending,arrows.meta,quotes,angles}
\usepackage{textcomp}
\begin{document}

\begin{tikzpicture}[dot/.style={fill,circle,inner sep=1.2pt},>= Stealth]\footnotesize
\pgfmathsetmacro\BC{sqrt(1.5*1.5+3*3)}
\pgfmathsetmacro\AC{sqrt(3.5*3.5+3*3)}
\draw (1,2)coordinate[dot,label=left:$B$](b)--(2.5,5)coordinate[dot,label=above:$C$](c)--(6,2)coordinate[dot,label=right:$A$](a)--cycle;
\node at ([xshift=-\BC cm]a) [dot,label=below:$M$] {};
\node at ($(c)!\BC/\AC!(a)$) [dot,label=right:$N$] {};
\end{tikzpicture}

\end{document}

A version in which you do not have to compute anything yourself. All distances and angles can be very conveniently computed with TikZ. In more detail, the following code computes the distance between B and C (\n1) as well as the "slopes" of all the edges, and then uses polar coordinates to set M \n1 away from A in B direction and N \n1 away from C in A direction. The angle at B is also computed by tikz and inserted via \pgfmathprintnumber which allows you to specify the number of digits and so on, if needed.

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{calc,angles,quotes}
\begin{document}
\begin{tikzpicture}
\draw (1,2) coordinate[label=below:$B$] (B) --
(2.5,5) coordinate[label=above:$C$] (C) --
(6,2) coordinate[label=right:$A$] (A) -- cycle;
\path let \p1=($(B)-(C)$),\p2=($(B)-(A)$),\p3=($(A)-(C)$),
\n1={veclen(\x1,\y1)},\n2={atan2(\y2,\x2)},\n3={atan2(\y3,\x3)},
\n4={\n3-atan2(\y1,\x1)} in
($(A)+(\n2:\n1)$) coordinate[label=below:$M$] (M)
($(C)+(\n3:\n1)$) coordinate[label=above right:$N$] (N)
pic["$\pgfmathparse{\n4}\pgfmathprintnumber{\pgfmathresult}^\circ$",draw,-latex,angle