%% %% The LaTeX Graphics Companion, 2ed (first printing May 2007) %% %% Example 5-15-7 on page 310. %% %% Copyright (C) 2007 Michel Goossens, Frank Mittelbach, Denis Roegel, Sebastian Rahtz, Herbert Vo\ss %% %% It may be distributed and/or modified under the conditions %% of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% %% See http://www.latex-project.org/lppl.txt for details. %% \documentclass{ttctexa} \pagestyle{empty} \setcounter{page}{6} \setlength\textwidth{135.83385pt} \usepackage{pst-xkey,pstricks,pst-node} \SpecialCoor \makeatletter \newif\ifPST@showFP % mark focal point? \define@key[psset]{}{showFP}[true]{% "showFP" equals true \@nameuse{PST@showFP#1}% use \ifPST@showFP } \psset{showFP=true} % default % \def\focalPoint{\pst@object{focalPoint}} \def\focalPoint@i(#1)(#2)(#3)#4{{ % to keep everything local \pst@killglue % \begingroup \use@par \pst@getcoor{#1}\pst@tempa% point A % get coordinates as x y \pst@getcoor{#2}\pst@tempb% point B % " \pst@getcoor{#3}\pst@tempc% point C % " \pnode(!% % set node \pst@tempa /YA exch \pst@number\psyunit div def /XA exch \pst@number\psxunit div def % x y in user coordinates \pst@tempb /YB exch \pst@number\psyunit div def /XB exch \pst@number\psxunit div def \pst@tempc /YC exch \pst@number\psyunit div def /XC exch \pst@number\psxunit div def XA XB XC add add 3.0 div % xFP YA YB YC add add 3.0 div % yFP ){#4} % #5 = node name \ifPST@showFP\qdisk(#4){2pt}\fi \endgroup }\ignorespaces} \makeatother \StartShownPreambleCommands \usepackage{pstricks,pst-node,pst-xkey} % \focalPoint as defined above \StopShownPreambleCommands \begin{document} \begin{pspicture}(4,4) \psset{linewidth=2pt} \pspolygon[linecolor=red](0,0)(2,4)(4,0)% \focalPoint[showFP=true,linecolor=red](0,0)(2,4)(4,0){FP1}% \pnode(0,0){A}\pnode(0,4){B}\pnode(4,2){C}% \pspolygon[linecolor=blue](A)(B)(C)% \focalPoint(A)(B)(C){FP2}% {\psset{linecolor=blue}% \qdisk(FP2){2pt}}% \ncline[linewidth=1pt]{<->}{FP1}{FP2}% \end{pspicture} \end{document}