# How to cache a common varying node?

The following MWE produces an output shown below.

\documentclass[pstricks,12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}(-1,-2)(8,6)
\psset{linejoin=2,dotsize=2pt,labelsep=3pt,PointNameSep=9pt}
\pstGeonode[PointSymbol={*,*,none},PointName={B,C,none},PosAngle={-110,-60}](0,0){B}(7,0){C}(-1,0){Z}(5,0){Y}
\pstInterCC[PosAngleA=90]{B}{Y}{C}{Z}{A}{M2}
\pspolygon(B)(A)(C)
\pstTriangleIC{A}{B}{C} \uput[-10](IC_O){$I$} \psdot(IC_O)
\pstProjection{A}{B}{IC_O}[P]
\pstProjection{A}{C}{IC_O}[M]
\pstProjection{C}{B}{IC_O}[K]

\psset{PointSymbol=none,PointName=none}
\pstSymO{IC_O}{A,B}[P1,P2]
\pstLineAB{P1}{P2}

\pstInterLC{A}{IC_O}{IC_O}{P}{J1}{J2}
\uput[90](J1){$N$} \psdot(J1)
\pstTranslation{P}{M}{J1}[J3]
\pstInterLL{J1}{J3}{A}{B}{Q1}
\pstInterLL{J1}{J3}{A}{C}{Q2}
\pstTriangleIC{Q1}{Q2}{A} \uput[45](IC_O){$J$} \psdot(IC_O)

\pstInterLL{P1}{P2}{A}{C}{W1}
\pstInterLL{P1}{P2}{B}{C}{W2}
\pstTriangleIC{W1}{W2}{C} \uput[-10](IC_O){$L$} \psdot(IC_O)
\uput[0](4,3){$(l)$}
\end{pspicture}
\end{document}


Three points I, J, L, each is defined as IC_O by \pstTriangleIC. It means IC_O for I gets overridden for J which in turn gets overridden for L. So the last invocation makes IC_O refers to L. Can anyone help me to draw triangle IJL by using IC_O?

• If I am not wrong the A point is not defined – Hafid Boukhoulda Jan 31 at 10:33
• @HafidBoukhoulda Oh, I load it normally with a up-to-date pst-eucl... – Trong Vuong Jan 31 at 11:12
• What I mean is that unlike the points B and C the point A coordinates are not defined – Hafid Boukhoulda Jan 31 at 11:13
• In the example you provided the coordinates of B and C are (0,0) and (7,0) right. What about the point A ? – Hafid Boukhoulda Jan 31 at 11:20
• @HafidBoukhoulda "A" is one of the intersection points of two circle with two centers B,C and radius 5,8 cm. – Trong Vuong Jan 31 at 11:37

Cache\pnode(IC_O){I} for I before IC_O gets overridden for J.

\documentclass[pstricks,12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}(-1,-2)(8,6)
\psset{linejoin=2,dotsize=2pt,labelsep=3pt,PointNameSep=9pt}
\pstGeonode[PointSymbol={*,*,none},PointName={B,C,none},PosAngle={-110,-60}](0,0){B}(7,0){C}(-1,0){Z}(5,0){Y}
\pstInterCC[PosAngleA=90]{B}{Y}{C}{Z}{A}{M2}
\pspolygon(B)(A)(C)
\pstTriangleIC{A}{B}{C} \uput[-10](IC_O){$I$} \psdot(IC_O)
\pstProjection{A}{B}{IC_O}[P]
\pstProjection{A}{C}{IC_O}[M]
\pstProjection{C}{B}{IC_O}[K]
\pnode(IC_O){I}
\psset{PointSymbol=none,PointName=none}
\pstSymO{IC_O}{A,B}[P1,P2]
\pstLineAB{P1}{P2}
%
\pstInterLC{A}{IC_O}{IC_O}{P}{J1}{J2}
\uput[90](J1){$N$} \psdot(J1)
\pstTranslation{P}{M}{J1}[J3]
\pstInterLL{J1}{J3}{A}{B}{Q1}
\pstInterLL{J1}{J3}{A}{C}{Q2}
\pstTriangleIC{Q1}{Q2}{A} \uput[45](IC_O){$J$} \psdot(IC_O)
\pnode(IC_O){J}
%
\pstInterLL{P1}{P2}{A}{C}{W1}
\pstInterLL{P1}{P2}{B}{C}{W2}
\pstTriangleIC{W1}{W2}{C} \uput[-10](IC_O){$L$} \psdot(IC_O)
\uput[0](4,3){$(l)$}
\pnode(IC_O){L}
\pspolygon(I)(J)(L)
\end{pspicture}
\end{document}


• Unbelievable, the solution is very simple..... – Trong Vuong Jan 31 at 12:05