summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex1460
1 files changed, 1460 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex b/Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex
new file mode 100644
index 00000000000..b615f5203a7
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex
@@ -0,0 +1,1460 @@
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% pst-eucl.tex --- Generation of geometric figures in euclidean geometry
+%% Copyright 2000-2005 Dominique RODRIGUEZ
+%%
+%% Author : Dominique RODRIGUEZ (EN) <dominique.rodriguez@waika9.com>
+%% Created the : Mon Oct 16 21:15:11 CEST 2000
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% HISTORY
+%%
+%% 2000-10-16 : creation of the file from a first LaTeX protype sty file
+%%
+%% 2001-05-7 : distribution of the first beta version
+%%
+%% 2002-03-21 : distribution of the second beta version
+%%
+%% 2002-12-01 : distribution of the pre-release 1.0
+%%
+%% 2003-03-23 : direct computation of coordinates for the center of gravity and
+%% the center of the circum circle, avoiding creation of intermediates
+%% nodes.
+%%
+%% 2003-12-16 : Integration of modifications given by Alain DELPLANQUE
+%% automatic computation of PosAngle for several commands,
+%% and ability to give a list of point for pstGeonode, pstOIJGeonode
+%%
+%% 2004-09-05 : Improvement of the management of the Point name end of the param lists
+%%
+%% 2004-11-04 : Improvement of the management of the display of the Point name
+%%
+%% 2004-12-10 : New parameters for coding the circum circle : SegmentSymbolA B & C
+%%
+%% 2004-12-14 : New parametre RightAngleType for regional difference
+%%
+%% 2005-01-17 : transition towards pst-xkey (thanks to "Hendri Adriaens" <Hendri@uvt.nl>)
+%%
+%% 2005-02-21 : correction for spurious blank (thanks to Herbert Voss <Herbert.Voss@alumni.TU-Berlin.DE>)
+%% in pstTriangleABC (search for "-- hv")
+%%
+%% 2005-03-25 : Modification of the transformations macros: management of a points list
+%% coding for rotation & translation
+%% draw a curve for a points list (geonode & oijgeonode & transform macros)
+%%
+%% 2005-04-10 : Modification of the transformations macros: management of a points list
+%% management directly within the first point argument
+%% Plotting of a curve linking a list of points
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\fileversion{1.3.2}
+\def\filedate{2005/05/14}%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt.
+\message{`PST-Euclide v\fileversion, \filedate\space (Dominique RODRIGUEZ)}%
+\message{ This version uses the pst-xkey package for managing parameters}%
+\message{ Please read the doc, some macros have a new syntax}%
+\message{ use option old for upward compatibility}%
+\csname PSTEuclideLoaded\endcsname
+\let\PSTEuclideLoaded\endinput
+% Require PSTricks and pst-node packages
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
+\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi
+\ifx\MultidoLoaded\endinput\else\input multido.tex\fi
+%% prologue for postcript
+\pstheader{pst-eucl.pro}%
+% interface to the `xkeyval' package
+\input pst-xkey.tex
+\pst@addfams{pst-eucl}
+\edef\PstAtCode{\the\catcode`\@}%
+\catcode`\@=11\relax
+% Definition of the parameters
+% ----------------------------
+% symbol used for the point
+\define@key[psset]{pst-eucl}{PointSymbol}{\edef\psk@PointSymbol{#1}}%
+\define@key[psset]{pst-eucl}{PointSymbolA}{\edef\psk@PointSymbolA{#1}}%
+\define@key[psset]{pst-eucl}{PointSymbolB}{\edef\psk@PointSymbolB{#1}}%
+\define@key[psset]{pst-eucl}{PointSymbolC}{\edef\psk@PointSymbolC{#1}}%
+% name used for the point
+\define@key[psset]{pst-eucl}{PointName}{\edef\psk@PointName{#1}}%
+\define@key[psset]{pst-eucl}{PointNameA}{\edef\psk@PointNameA{#1}}%
+\define@key[psset]{pst-eucl}{PointNameB}{\edef\psk@PointNameB{#1}}%
+\define@key[psset]{pst-eucl}{PointNameC}{\edef\psk@PointNameC{#1}}%
+% use math mode in point name
+\newif\ifPst@PtNameMath%
+\define@key[psset]{pst-eucl}{PtNameMath}[false]{\@nameuse{Pst@PtNameMath#1}}%
+% symbol used for marking equal length segment
+\define@key[psset]{pst-eucl}{SegmentSymbol}{\edef\psk@SegmentSymbol{#1}}%
+\define@key[psset]{pst-eucl}{SegmentSymbolA}{\edef\psk@SegmentSymbolA{#1}}%
+\define@key[psset]{pst-eucl}{SegmentSymbolB}{\edef\psk@SegmentSymbolB{#1}}%
+\define@key[psset]{pst-eucl}{SegmentSymbolC}{\edef\psk@SegmentSymbolC{#1}}%
+\define@key[psset]{pst-eucl}{Mark}{\edef\psk@Mark{#1}}%
+\define@key[psset]{pst-eucl}{MarkAngle}{\edef\psk@MarkAngle{#1}}%
+% disance from point to its label
+\define@key[psset]{pst-eucl}{PointNameSep}{\edef\psk@PointNameSep{#1}}%
+% position angle for positionning a point name
+\define@key[psset]{pst-eucl}{PosAngle}{\edef\psk@PosAngle{#1}}%
+\define@key[psset]{pst-eucl}{PosAngleA}{\edef\psk@PosAngleA{#1}}%
+\define@key[psset]{pst-eucl}{PosAngleB}{\edef\psk@PosAngleB{#1}}%
+\define@key[psset]{pst-eucl}{PosAngleC}{\edef\psk@PosAngleC{#1}}%
+% dimension of the right angle mark
+\define@key[psset]{pst-eucl}{RightAngleSize}{\edef\psk@RightAngleSize{#1}}%
+\define@key[psset]{pst-eucl}{RightAngleType}{\edef\psk@RightAngleType{#1}}%
+% radius of an angle mark
+\define@key[psset]{pst-eucl}{MarkAngleRadius}{\edef\psk@MarkAngleRadius{#1}}%
+% angular offset position of the label for marking an angle
+\define@key[psset]{pst-eucl}{LabelAngleOffset}{\edef\psk@LabelAngleOffset{#1}}%
+% position radius of the label for marking an angle
+\define@key[psset]{pst-eucl}{LabelSep}{\edef\psk@LabelSep{#1}}%
+% ref point of the label
+\define@key[psset]{pst-eucl}{LabelRefPt}{\edef\psk@LabelRefPt{#1}}%
+% curve type for point list
+\define@key[psset]{pst-eucl}{CurveType}{\edef\psk@CurveType{#1}}%
+% coefficient of homothetie
+\define@key[psset]{pst-eucl}{HomCoef}{\edef\psk@HomCoef{#1}}%
+% angle of rotation
+\define@key[psset]{pst-eucl}{RotAngle}{\edef\psk@RotAngle{#1}}%
+% label for coding the transfortion
+\define@key[psset]{pst-eucl}{TransformLabel}{\edef\psk@TransformLabel{#1}}%
+\define@key[psset]{pst-eucl}{CurveType}{\edef\psk@CurveType{#1}}%
+% private parameter
+\newif\ifPst@CentralSym
+\define@key[psset]{pst-eucl}{Central@Sym}[false]{\@nameuse{Pst@CentralSym#1}}%
+% for drawing the circum-circle
+\newif\ifPst@DrawCirABC
+\define@key[psset]{pst-eucl}{DrawCirABC}[true]{\@nameuse{Pst@DrawCirABC#1}}%
+% for coding a construction
+\newif\ifPst@CodeFig
+\define@key[psset]{pst-eucl}{CodeFig}[false]{\@nameuse{Pst@CodeFig#1}}%
+\define@key[psset]{pst-eucl}{CodeFigA}{\edef\psk@CodeFigA{#1}}%
+\define@key[psset]{pst-eucl}{CodeFigB}{\edef\psk@CodeFigB{#1}}%
+\define@key[psset]{pst-eucl}{CodeFigColor}{\edef\psk@CodeFigColor{#1}}%
+\define@key[psset]{pst-eucl}{CodeFigStyle}{\edef\psk@CodeFigStyle{#1}}%
+\newif\ifPst@CodeFigAarc%
+\define@key[psset]{pst-eucl}{CodeFigAarc}[true]{\@nameuse{Pst@CodeFigAarc#1}}
+\newif\ifPst@CodeFigBarc%
+\define@key[psset]{pst-eucl}{CodeFigBarc}[true]{\@nameuse{Pst@CodeFigBarc#1}}
+%% for specifying a distance for the circle
+\define@key[psset]{pst-eucl}{Radius}{\edef\psk@Radius{#1}}%
+\define@key[psset]{pst-eucl}{RadiusA}{\edef\psk@RadiusA{#1}}%
+\define@key[psset]{pst-eucl}{RadiusB}{\edef\psk@RadiusB{#1}}%
+\define@key[psset]{pst-eucl}{Diameter}{\edef\psk@Diameter{#1}}%
+\define@key[psset]{pst-eucl}{DiameterA}{\edef\psk@DiameterA{#1}}%
+\define@key[psset]{pst-eucl}{DiameterB}{\edef\psk@DiameterB{#1}}%
+% for specifying a distance for the circle
+\define@key[psset]{pst-eucl}{DistCoef}{\edef\psk@DistCoef{#1}}%
+\define@key[psset]{pst-eucl}{AngleCoef}{\edef\psk@AngleCoef{#1}}%
+% for curvilign abscissa placement
+\newif\ifPst@CurvAbsNeg%
+\define@key[psset]{pst-eucl}{CurvAbsNeg}[false]{\@nameuse{Pst@CurvAbsNeg#1}}%
+% first and last point of a generic curve
+\define@key[psset]{pst-eucl}{GenCurvFirst}{\edef\psk@GenCurvFirst{#1}}%
+\define@key[psset]{pst-eucl}{GenCurvLast}{\edef\psk@GenCurvLast{#1}}%
+% increment of a generic curve
+\define@key[psset]{pst-eucl}{GenCurvInc}{\edef\psk@GenCurvInc{#1}}%
+%% Default values
+% --------------
+\psset{%
+ PointSymbol=default, PointSymbolA=undef, PointSymbolB=undef, PointSymbolC=undef,
+ PointName=default, PointNameA=undef, PointNameB=undef, PointNameC=undef,
+ PtNameMath=true, PointNameSep=default, PosAngle=undef, PosAngleA=undef,
+ PosAngleB=undef, PosAngleC=undef, Mark=undef, SegmentSymbol=MarkHashh,
+ SegmentSymbolA=MarkHashh, SegmentSymbolB=MarkHash, SegmentSymbolC=MarkHashhh,
+ RightAngleSize=.4, RightAngleType=default, LabelAngleOffset=0, LabelSep=1,
+ LabelRefPt=c, MarkAngle=undef, MarkAngleRadius=.4, HomCoef=.5, RotAngle=60,
+ CurveType=none, TransformLabel=none, Central@Sym=false, DrawCirABC=true,
+ CodeFig=false, CodeFigColor=cyan, CodeFigStyle=dashed, CodeFigA=undef,
+ CodeFigB=undef, CodeFigAarc=true, CodeFigBarc=true, Radius=none, RadiusA=undef,
+ RadiusB=undef, Diameter=none, DiameterA=undef, DiameterB=undef, DistCoef=none,
+ AngleCoef=none, CurvAbsNeg=false, GenCurvFirst=none, GenCurvLast=none,
+ GenCurvInc=1}%}%
+\SpecialCoor %% for using polar coordinates, node position, ...
+\psset{dimen=middle}% remark of ML
+\def\@undef{undef}%
+\def\@default{default}%
+\def\@german{german}%
+\def\@suisseromand{suisseromand}%
+\def\@polygon{polygon}
+\def\@polyline{polyline}
+\def\@curve{curve}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% CORRECTION OF BUG
+\def\pst@newnode#1#2#3#4{%
+% DG/SR modification begin - Nov. 9, 2000 - Patch 11
+ \pst@killglue
+% DG/SR modification end
+\leavevmode
+\pst@getnode{#1}\pst@thenode
+\pst@Verb{%
+\pst@nodedict
+{#3}
+\ifx\psk@name\relax false \else \psk@name true \fi
+\pst@thenode
+#2
+{#4}
+\tx@NewNode
+end}%
+\global\let\psk@name\relax
+\pstree@nodehook
+\global\let\pstree@nodehook\relax}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% list for marking segment
+\def\SegSymLst{MarkHash,MarkHashh,MarkHashhh,MarkCros,MarkCross,pstslash,pstslashh,pstslashhh,circ,times,cup,triangle,wedge}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% create a curve after a points list
+\def\pst@MngTransformCurve{%DR 25032005
+ \ifx\psk@CurveType\@none\else%
+ \ifx\psk@CurveType\@polygon\expandafter\pspolygon\@@GenCourbe\else%
+ \ifx\psk@CurveType\@polyline\expandafter\psline\@@GenCourbe\else%
+ \ifx\psk@CurveType\@curve\expandafter\pscurve\@@GenCourbe%
+ \fi\fi\fi\fi}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% macros for managing a list of parameters
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %% begin DR 2005/04/10
+\def\@List#1{\xdef\@NewList{none}\@List@i#1,\@nil\ignorespaces}
+\def\@List@i#1,{%
+\@List@ii#1==\@nil
+\@ifnextchar\@nil{\@gobble}{\@List@i}}
+\def\@List@ii#1=#2\@nil{%
+\ifx\@NewList\@none\xdef\@NewList{#1}\else\xdef\@NewList{\@NewList,#1}\fi}%
+ %% end DR 2005/04/10
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\@InitListMng{%
+ \def\LastValidPN{default}\def\LastValidPNS{default}\def\LastValidPA{undef}\def\LastValidPS{default}}
+%%begin modif alaindelplanque 11/2003 (VALID)
+%% car(liste) -- param1,param2,... -> param1
+\def\PstParamListFirst#1,#2/{#1}
+%% cdr(liste) -- param1,param2,... -> param2,...
+\def\PstParamListLasts#1,#2/{#2}
+\def\Pst@ManageParamList#1{%DR 02092004 #1->point node name
+ \edef\OldPointName{\psk@PointName}%
+ \edef\psk@PointName{\expandafter\PstParamListFirst\OldPointName,undef/}%
+ \ifx\psk@PointName\@undef\edef\psk@PointName{\LastValidPN}\else\edef\LastValidPN{\psk@PointName}\fi
+ \edef\OldPointNameSep{\psk@PointNameSep}%
+ \edef\psk@PointNameSep{\expandafter\PstParamListFirst\OldPointNameSep,default/}%
+ \ifx\psk@PointNameSep\@default\edef\psk@PointNameSep{\LastValidPNS}\else\edef\LastValidPNS{\psk@PointNameSep}\fi
+ \edef\OldPosAngle{\psk@PosAngle}%
+ \edef\psk@PosAngle{\expandafter\PstParamListFirst\OldPosAngle,undef/}%
+ \ifx\psk@PosAngle\@undef\edef\psk@PosAngle{\LastValidPA}\else\edef\LastValidPA{\psk@PosAngle}\fi
+ \edef\OldPointSymbol{\psk@PointSymbol}%
+ \edef\psk@PointSymbol{\expandafter\PstParamListFirst\OldPointSymbol,undef/}%
+ \ifx\psk@PointSymbol\@undef\edef\psk@PointSymbol{\LastValidPS}\else\edef\LastValidPS{\psk@PointSymbol}\fi
+ \Pst@geonodelabel{#1}%DR 02092004
+ \edef\psk@PointName{\expandafter\PstParamListLasts\OldPointName,undef/}%
+ \edef\psk@PointNameSep{\expandafter\PstParamListLasts\OldPointNameSep,default/}%
+ \edef\psk@PosAngle{\expandafter\PstParamListLasts\OldPosAngle,undef/}%
+ \edef\psk@PointSymbol{\expandafter\PstParamListLasts\OldPointSymbol,undef/}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% create a point with an associated node,
+%% #1 -> options
+%% #2 -> coordinates
+%% #3 -> node name
+\def\pstGeonode{\@ifnextchar[\Pst@Geonode{\Pst@Geonode[]}}
+\def\Pst@Geonode[#1]{\@ifnextchar({\Pst@Geonode@i[#1]}{\Pst@Geonode@i[#1](0,0)}}
+\def\Pst@Geonode@i[#1]{%
+ \begingroup%
+ \@InitListMng% DR 22032005
+ \edef\@@GenCourbe{}%%for accumulating points% DR 22032005
+ \psset{#1}\Pst@Geonode@ii}
+\def\Pst@Geonode@ii(#1)#2{%
+ \pnode(#1){#2}
+ \xdef\@@GenCourbe{\@@GenCourbe(#2)}%%for accumulating points% DR 22032005
+ \Pst@ManageParamList{#2}%
+ \@ifnextchar(\Pst@Geonode@ii{\pst@MngTransformCurve\endgroup}}% DR 22032005
+%%end modif alaindelplanque 11/2003 (VALID)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% create a point with an associated node, in a new
+%% landmark
+%% #1 -> options
+%% #2 -> coordinates
+%% #3 -> node name
+%% #4 -> O: new center of the landmark
+%% #5 -> I: abscissa reference
+%% #6 -> J: ordinate reference
+\def\pstOIJGeonode{\@ifnextchar[\Pst@OIJGeonode{\Pst@OIJGeonode[]}}%
+\def\Pst@OIJGeonode[#1]{%NEW DR 14112001 (for default (0,0) ccordinates)
+ \@ifnextchar({\Pst@OIJGeonode@i[#1]}{\Pst@OIJGeonode[#1](0,0)}}%
+\def\Pst@OIJGeonode@i[#1]{%
+ \begingroup
+ \@InitListMng% DR 22032005
+ \edef\@@GenCourbe{}%%for accumulating points% DR 22032005
+ \psset{#1}\Pst@OIJGeonode@ii}
+\def\Pst@OIJGeonode@ii(#1)#2#3#4#5{\Pst@OIJGeonode@iii{#3}{#4}{#5}(#1){#2}}
+\def\Pst@OIJGeonode@iii#1#2#3(#4)#5{%
+ \rput(#1){%
+ \pst@@getcoor{#4}%
+ \rput(!\pst@coor\space
+ tx@EcldDict begin /N@#2 GetNode /N@#3 GetNode end
+ 4 index mul 3 -1 roll 5 index mul add
+ \pst@number\psyunit dup mul div exch
+ 4 -1 roll mul 3 -1 roll 4 -1 roll mul add
+ \pst@number\psxunit dup mul div exch){\pnode{#5}}}%
+ \xdef\@@GenCourbe{\@@GenCourbe(#5)}%%for accumulating points% DR 22032005
+ \Pst@ManageParamList{#5}%
+ \@ifnextchar({\Pst@OIJGeonode@iii{#1}{#2}{#3}}{\pst@MngTransformCurve\endgroup}}% DR 22032005
+%%end modif DR 11/2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% #1 -> point coordinates
+\def\Pst@geonodelabel#1{%% {nodename}
+ \ifx\psk@PointSymbol\@none\else%
+ \ifx\psk@PointSymbol\@default\edef\psk@PointSymbol{*}\fi%
+ \psdot[dotstyle=\psk@PointSymbol](#1)%
+ \fi%DR 02092004
+ \Pst@PutPointLabel{#1}%DR 041104
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\Pst@PutPointLabel#1{%DR 041104
+ \ifx\psk@PointName\@none\else
+ \rput{*0}([nodesep=\ifx\psk@PointNameSep\@default{1em}\else\psk@PointNameSep\fi,
+ angle=\ifx\psk@PosAngle\@undef{0}\else\psk@PosAngle\fi]#1)%
+ {\ifPst@PtNameMath$\Pst@WhichLabel{#1}$\else\Pst@WhichLabel{#1}\fi}
+ \fi}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\Pst@WhichLabel#1{\ifx\psk@PointName\@default#1\else\psk@PointName\fi}%DR 0
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% #2 #3 -> nodes defining the segment to mark
+\def\pstSegmentMark{\@ifnextchar[\Pst@SegmentMark{\Pst@SegmentMark[]}}%
+\def\Pst@SegmentMark[#1]#2#3{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \ncline[nodesep=0]{#2}{#3}
+ \ncput[nrot=:U]{$\csname\psk@SegmentSymbol\endcsname$}%
+ \egroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% macros for marking
+\def\pstslash{/}%
+\def\pstslashh{/\!\!/}\let\pstslashslash=\pstslashh%
+\def\pstslashhh{/\!\!/\!\!/}\let\pstslashslashslash=\pstslashhh%
+%%begin modif alaindelplanque 11/2003
+\def\MarkHash{%
+ \rput{\ifx\psk@MarkAngle\@undef45\else\psk@MarkAngle\fi}
+ {\psline(-10\pslinewidth,0)(10\pslinewidth,0)}}
+\def\MarkHashh{%
+ \rput{\ifx\psk@MarkAngle\@undef45\else\psk@MarkAngle\fi}(-3\pslinewidth,0)
+ {\psline(-10\pslinewidth,0)(10\pslinewidth,0)}
+ \rput{\ifx\psk@MarkAngle\@undef45\else\psk@MarkAngle\fi}(3\pslinewidth,0)
+ {\psline(-10\pslinewidth,0)(10\pslinewidth,0)}}
+\def\MarkHashhh{%
+ \rput{\ifx\psk@MarkAngle\@undef45\else\psk@MarkAngle\fi}(-6\pslinewidth,0)
+ {\psline(-10\pslinewidth,0)(10\pslinewidth,0)}
+ \rput{\ifx\psk@MarkAngle\@undef45\else\psk@MarkAngle\fi}
+ {\psline(-10\pslinewidth,0)(10\pslinewidth,0)}
+ \rput{\ifx\psk@MarkAngle\@undef45\else\psk@MarkAngle\fi}(6\pslinewidth,0)
+ {\psline(-10\pslinewidth,0)(10\pslinewidth,0)}}
+\def\MarkCros{
+ \psline(-4\pslinewidth,4\pslinewidth)(4\pslinewidth,-4\pslinewidth)
+ \psline(-4\pslinewidth,-4\pslinewidth)(4\pslinewidth,4\pslinewidth)}
+\def\MarkCross{
+ \psline(-4\pslinewidth,8\pslinewidth)(4\pslinewidth,0)
+ \psline(-4\pslinewidth,0)(4\pslinewidth,8\pslinewidth)
+ \psline(-4\pslinewidth,-8\pslinewidth)(4\pslinewidth,0)
+ \psline(-4\pslinewidth,0)(4\pslinewidth,-8\pslinewidth)}
+\def\MarkCirc{\pscircle(0,0){2\pslinewidth}}
+%%end modif alaindelplanque 11/2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% #2 #3 #4 -> 3 nodes for defining the right angle
+\def\pstRightAngle{\@ifnextchar[\Pst@RightAngle{\Pst@RightAngle[]}}%
+\def\Pst@RightAngle[#1]#2#3#4{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ %% not good at all, but \rput{0}(#3){\rput{(#2)}{stuff}} doesn't work...
+ \rput(#3){%
+ \ifx\psk@RightAngleType\@default
+ \pspolygon(0,0)%%modif 12/2004
+ (!tx@EcldDict begin /N@#4 GetNode exch Atan end \psk@RightAngleSize\space exch PtoC)
+ (!tx@EcldDict begin /N@#4 GetNode exch Atan /N@#2 GetNode exch Atan end
+ 2 copy sub abs 91 gt
+ { 2 copy lt { exch 360 add exch } { 360 add } ifelse } if %%DR 2005/01/14
+ %%2 copy lt { exch 360 sub exch } if
+ add 2 div 2 sqrt \psk@RightAngleSize\space mul exch PtoC)
+ (!tx@EcldDict begin /N@#2 GetNode exch Atan end \psk@RightAngleSize\space
+ exch PtoC)
+ \else\ifx\psk@RightAngleType\@german
+ \pstMarkAngle[MarkAngleRadius=\psk@RightAngleSize,
+ LabelSep=\psk@RightAngleSize\space .5 mul]{#2}{#3}{#4}
+ {\scalebox{\psk@RightAngleSize}{\pscircle*{.08}}}
+ \else\ifx\psk@RightAngleType\@suisseromand
+ \rput{*0}
+ (!tx@EcldDict begin /N@#4 GetNode exch Atan /N@#2 GetNode exch Atan end
+ 2 copy lt { exch 360 sub exch } if add 2 div .45 \psk@RightAngleSize\space mul exch PtoC)
+ {\scalebox{\psk@RightAngleSize}{\pscircle*{.08}}}
+ \pspolygon(0,0)
+ (!tx@EcldDict begin /N@#4 GetNode exch Atan end \psk@RightAngleSize\space exch PtoC)
+ (!tx@EcldDict begin /N@#2 GetNode exch Atan end \psk@RightAngleSize\space exch PtoC)
+ \fi\fi\fi}
+ \egroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% #2 #3 #4 -> 3 nodes for defining the angle
+%% #5 -> label
+\def\pstMarkAngle{\@ifnextchar[\Pst@MarkAngle{\Pst@MarkAngle[]}}%
+\def\Pst@MarkAngle[#1]#2#3#4#5{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ %\rput(#3){\psarc(0,0){\psk@MarkAngleRadius}{(#2)}{(#4)}}%
+ %\rput[\psk@LabelRefPt]%
+ % {*0}([nodesep=\psk@LabelSep, angle= \psk@LabelAngle]#3){#5}%
+ \rput(#3){%
+ \psarc(0,0){\psk@MarkAngleRadius}{(#2)}{(#4)}%
+ \rput[\psk@LabelRefPt]{*0}
+ (!tx@EcldDict begin /N@#4 GetNode exch Atan /N@#2 GetNode exch Atan end
+ 2 copy lt { exch 360 sub exch } if
+ add 2 div \psk@LabelAngleOffset\space add \psk@LabelSep\space exch PtoC){#5}
+ %%begin modif alaindelplanque 11/2003
+ \ifx\psk@MarkAngle\@undef\psset{MarkAngle=90}\fi
+ \ifx\psk@Mark\@undef\else
+ \rput{!tx@EcldDict begin
+ /N@#3 GetNode /N@#4 GetNode ABVect Atan
+ /N@#3 GetNode /N@#2 GetNode ABVect Atan
+ end 2 copy lt \pslbrace exch 360 sub exch \psrbrace if add 2 div 90 add}
+ (0,0){\rput{-90}(\psk@MarkAngleRadius,0){\csname\psk@Mark\endcsname}}
+ \fi}
+ %%end modif alaindelplanque 11/2003
+ \egroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% #2 #4 #6 -> coordinates for nodes
+%% #3 #5 #7 -> nodes name
+\def\pstTriangle{\@ifnextchar[\Pst@Triangle{\Pst@Triangle[]}}%
+\def\Pst@Triangle[#1]{%NEW DR 14112001 (for default (0,0) coordinates)
+ \def\pst@par{#1}%
+ \@ifnextchar(\Pst@Trianglei{\Pst@Trianglei(0,0)}}%
+\def\Pst@Trianglei(#1)#2(#3)#4(#5)#6{%
+ %\pst@killglue% <------------------------------------------------- hv - DR 050315
+ \bgroup\pst@killglue% <------------------------------------------- DR 050315
+ %%begin modif alaindelplanque 11/2003
+ \pst@@getcoor{#1}\xdef\@@coordi{\pst@coor}%% <-------------------- hv
+ \pst@@getcoor{#3}\xdef\@@coordiii{\pst@coor}%% <------------------ hv
+ \pst@@getcoor{#5}\xdef\@@coordv{\pst@coor}%% <-------------------- hv
+ %%end modif alaindelplanque 11/2003
+ %\bgroup\use@par% % Affectation of local parameters<---- DR 050315
+ \use@par% % Affectation of local parameters<---- DR 050315
+ %%begin modif alaindelplanque 11/2003
+ \bgroup\ifx\psk@PosAngleA\@undef
+ \psset{PosAngle={!tx@EcldDict begin \@@coordiii\space\@@coordi\space ABVect exch Atan dup
+ \@@coordv\space\@@coordi\space ABVect exch Atan exch sub dup abs 180 gt { dup
+ dup abs div 360 mul sub } if 2 div add 180 add end}}%% <------ hv
+ \else\psset{PosAngle=\psk@PosAngleA}\fi
+ %%end modif alaindelplanque 11/2003
+ \ifx\psk@PosAngleA\@undef\else\psset{PosAngle=\psk@PosAngleA}\fi
+ \ifx\psk@PointSymbolA\@undef\else\psset{PointSymbol=\psk@PointSymbolA}\fi
+ \ifx\psk@PointNameA\@undef\else\psset{PointName=\psk@PointNameA}\fi
+ \Pst@Geonode@i[](#1){#2}\egroup%%NEW DR 15112001
+ %%begin modif alaindelplanque 11/2003
+ \bgroup\ifx\psk@PosAngleB\@undef
+ \psset{PosAngle={!tx@EcldDict begin \@@coordi\space\@@coordiii\space ABVect exch Atan dup
+ \@@coordv\space\@@coordiii\space ABVect exch Atan exch sub dup abs 180 gt { dup
+ dup abs div 360 mul sub } if 2 div add 180 add end}}%% <------ hv
+ \else\psset{PosAngle=\psk@PosAngleB}\fi
+ %%end modif alaindelplanque 11/2003
+ \ifx\psk@PosAngleB\@undef\else\psset{PosAngle=\psk@PosAngleB}\fi
+ \ifx\psk@PointSymbolB\@undef\else\psset{PointSymbol=\psk@PointSymbolB}\fi
+ \ifx\psk@PointNameB\@undef\else\psset{PointName=\psk@PointNameB}\fi
+ \Pst@Geonode@i[](#3){#4}\egroup%%NEW DR 15112001
+ %%begin modif alaindelplanque 11/2003
+ \ifx\psk@PosAngleC\@undef
+ \psset{PosAngle={!tx@EcldDict begin \@@coordiii\space\@@coordv\space ABVect exch Atan dup
+ \@@coordi\space\@@coordv\space ABVect exch Atan exch sub dup abs 180 gt { dup
+ dup abs div 360 mul sub } if 2 div add 180 add end}}%% <------ hv
+ \else\psset{PosAngle=\psk@PosAngleC}\fi%% <----------------------- hv
+ %%end modif alaindelplanque 11/2003
+ \ifx\psk@PosAngleC\@undef\else\psset{PosAngle=\psk@PosAngleC}\fi
+ \ifx\psk@PointSymbolC\@undef\else\psset{PointSymbol=\psk@PointSymbolC}\fi
+ \ifx\psk@PointNameC\@undef\else\psset{PointName=\psk@PointNameC}\fi
+ \Pst@Geonode@i[](#5){#6}%%NEW DR 15112001
+ \pst@TraceTriangle{#2}{#4}{#6}%
+ \egroup%
+}%
+\def\pst@TraceTriangle#1#2#3{\pspolygon(#1)(#2)(#3)}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Line, circle, Arc
+%% #2 #3 -> 2 nodes defining the line
+\def\pstLineAB{\ncline}%@ifnextchar[\Pst@LineAB{\Pst@LineAB[]}}%
+%\def\Pst@LineAB[#1]#2#3{\ncline[#1]{#2}{#3}}%
+%% #2 #3 -> 2 nodes defining the center and a point on the circle
+\def\pstCircleOA{\pst@object{pstCircleOA}}%
+\def\pstCircleOA@i#1#2{%
+ \bgroup\use@par%
+ \rput(#1){%
+ \begin@ClosedObj
+ \def\pst@linetype{4}%
+ \addto@pscode{%
+ tx@EcldDict begin
+ /N@#1 GetNode
+ \ifx\psk@Radius\@none
+ \ifx\psk@Diameter\@none
+ 2 copy /N@#2 GetNode ABDist
+ \else\psk@Diameter 2 div
+ \fi
+ \else\psk@Radius\space
+ \fi
+ end
+ \psk@dimen CLW mul sub 0 360 arc closepath}%
+ \showpointsfalse
+ \end@ClosedObj
+ }%
+ \egroup%
+}%
+%% #2 #3 -> 2 nodes defining a diameter of the circle
+\def\pstCircleAB{\pst@object{pstCircleAB}}%
+\def\pstCircleAB@i#1#2{%
+ \bgroup\use@par%
+ \Pst@MiddleAB[PointSymbol=none, PointName=none]{#2}{#1}{@MAB}{}
+ \rput(#1){%
+ \begin@ClosedObj
+ \def\pst@linetype{4}%
+ \addto@pscode{%
+ tx@NodeDict begin
+ tx@NodeDict /N@@MAB load GetCenter
+ end
+ 2 copy
+ tx@EcldDict begin /N@#2 GetNode ABDist end
+ \psk@dimen CLW mul sub 0 360 arc closepath}%
+ \showpointsfalse
+ \end@ClosedObj
+ }%
+ \egroup%
+}%
+%% #2 #3 #4 -> 3 nodes defining the center and two points on the circle
+\def\pstArcOAB{\pst@object{pstArcOAB}}%
+\def\pstArcnOAB{\pst@object{pstArcnOAB}}%
+\def\pstArcnOAB@i{\def\psarc@type{1}\pstArcOAB@i}%
+\def\pstArcOAB@i{\pstArcOAB@ii}%\@ifnextchar[\pstArcOAB@ii{\pstArcOAB@ii[]}}%
+\def\pstArcOAB@ii#1#2#3{%[#1]#2#3#4{%
+ \bgroup\use@par%
+ \rput(#1){\pstArcOAB@iii{#2}{#3}}%
+ \egroup%
+}%
+\def\pstArcOAB@iii#1#2{%
+ \begin@OpenObj%
+ \addto@pscode{\pstArcOAB@iv{#1}{#2} \pstArcOAB@v}%
+ \gdef\psarc@type{0}%
+ \showpointsfalse
+ \end@OpenObj%
+}%% end \pstArcOAB@iii
+\def\pstArcOAB@iv#1#2{%
+ \pst@coor /y ED /x ED /r
+ tx@EcldDict begin /N@#1 GetNode end
+ Pyth def /c 57.2957 r \tx@Div def /angleA
+ tx@EcldDict begin /N@#1 GetNode end
+ exch Atan \psk@arcsepA c mul 2 div
+ \ifcase \psarc@type add \or sub \fi def
+ /angleB
+ tx@EcldDict begin /N@#2 GetNode end
+ exch Atan \psk@arcsepB c mul 2 div
+ \ifcase \psarc@type sub \or add \fi def
+ %ifshowpoints\psarc@showpoints\fi
+ \ifx\psk@arrowA\@empty
+ \ifnum\psk@liftpen=2 r angleA \tx@PtoC
+ y add exch x add exch
+ moveto
+ \fi
+ \fi%
+}%% end \pstArcOAB@iv
+\def\pstArcOAB@v{%
+ x y r angleA
+ \ifx\psk@arrowA\@empty\else
+ { ArrowA CP } { \ifcase\psarc@type add \or sub \fi }%
+ \tx@ArcArrow
+ \fi
+ angleB
+ \ifx\psk@arrowB\@empty\else
+ { ArrowB } { \ifcase\psarc@type sub \or add \fi }%
+ \tx@ArcArrow
+ \fi
+ \ifcase\psarc@type arc \or arcn \fi%
+}%% end \pstArcOAB@v
+\def\pstArcOAB@showpoints{%
+ gsave newpath x y moveto x y r \pst@tempa \pst@tempb
+ \ifcase\psarc@type arc \or arcn \fi
+ closepath CLW 2 div SLW [ \psk@dash\space ] 0 setdash stroke
+ grestore %
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% HOMOTETHIE
+%% #2 -> centre
+%% #3 -> antecedent
+%% #4 -> node name of the homothetic of #1
+\def\pstHomO{\@ifnextchar[\Pst@HomO{\Pst@HomO[]}}%
+\expandafter\ifx\csname psteucl@old\endcsname\relax%% NEW SYNTAX %% DR 2005/04/10
+\def\Pst@HomO[#1]#2{%
+ \bgroup%
+ \@InitListMng\def\LastValidSS{default}%%SS means SegmentSymbol
+ \psset{#1}\def\@HomCtr{#2}% Affectation of local parameters
+ \edef\@@GenCourbe{}%%for accumulating points
+ \Pst@HomO@i%
+}%
+\def\Pst@HomO@i#1{%
+ \@List{#1}\edef\@antecedentLst{\@NewList}
+ \@ifnextchar[\Pst@HomO@ii{\Pst@HomO@ii[default]}%
+}%
+\def\Pst@HomO@ii[#1]{%
+ \@List{#1}\edef\@imageLst{\@NewList}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \Pst@HomO@iii%
+}%
+\def\Pst@HomO@iii{%
+ \ifx\@image\@default\def\@image{\@antecedent '}\fi
+ \rput(\@HomCtr){%
+ \rput(!
+ tx@EcldDict begin /N@\@antecedent\space GetNode end
+ \psk@HomCoef\space mul exch \psk@HomCoef\space mul exch
+ \pst@number\psyunit div exch \pst@number\psxunit div
+ exch){\pnode{\@image}}%
+ }%%end rput
+ \xdef\@@GenCourbe{\@@GenCourbe(\@image)}%%for accumulating points
+ \ifPst@CentralSym\ifPst@CodeFig%
+ \edef\psk@OldSegmentSymbol{\psk@SegmentSymbol}%
+ \edef\psk@SegmentSymbol{\expandafter\PstParamListFirst\psk@OldSegmentSymbol,undef/}%
+ \ifx\psk@SegmentSymbol\@undef\edef\psk@SegmentSymbol{\LastValidSS}\else\edef\LastValidSS{\psk@SegmentSymbol}\fi
+ \bgroup%
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \pstSegmentMark{\@image}{\@HomCtr}%
+ \pstSegmentMark{\@HomCtr}{\@antecedent}%
+ \egroup%
+ \edef\psk@SegmentSymbol{\expandafter\PstParamListLasts\psk@OldSegmentSymbol,undef/}%
+ \fi\fi%
+ \Pst@ManageParamList{\@image}%
+ \edef\@antecedentLst{\expandafter\PstParamListLasts\@antecedentLst,undef/}%
+ \edef\@imageLst{\expandafter\PstParamListLasts\@imageLst,default/}%
+ \edef\@LastValidantecedent{\@antecedent}\def\@LastValidimage{\@image}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}%
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \ifx\@antecedent\@undef\def\@End{\pst@MngTransformCurve\egroup}
+ \else\def\@End{\Pst@HomO@iii}\fi%
+ \@End%
+}%
+\else%% OLD SYNTAX
+\def\Pst@HomO[#1]#2{%
+ \bgroup%
+ \@InitListMng\def\LastValidSS{default}%%
+ \psset{#1}\def\@HomCtr{#2}% Affectation of local parameters
+ \edef\@@GenCourbe{}%%for accumulating points
+ \Pst@HomO@i-%
+}%
+\def\Pst@HomO@i-#1#2{%
+ \rput(\@HomCtr){%
+ \rput(!
+ tx@EcldDict begin /N@#1 GetNode end
+ \psk@HomCoef\space mul exch \psk@HomCoef\space mul exch
+ \pst@number\psyunit div exch \pst@number\psxunit div
+ exch){\pnode{#2}}%
+ }%%end rput
+ \xdef\@@GenCourbe{\@@GenCourbe(#2)}%%for accumulating points
+ \ifPst@CentralSym\ifPst@CodeFig%
+ \edef\psk@OldSegmentSymbol{\psk@SegmentSymbol}%
+ \edef\psk@SegmentSymbol{\expandafter\PstParamListFirst\psk@OldSegmentSymbol,undef/}%
+ \ifx\psk@SegmentSymbol\@undef\edef\psk@SegmentSymbol{\LastValidSS}\else\edef\LastValidSS{\psk@SegmentSymbol}\fi
+ \bgroup%
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \pstSegmentMark{#2}{\@HomCtr}%
+ \pstSegmentMark{\@HomCtr}{#1}%
+ \egroup%
+ \edef\psk@SegmentSymbol{\expandafter\PstParamListLasts\psk@OldSegmentSymbol,undef/}%
+ \fi\fi%
+ \Pst@ManageParamList{#2}%
+ \@ifnextchar-{\Pst@HomO@i}{\pst@MngTransformCurve\egroup}%
+}%
+\fi% END OLD SYNTAX %% DR 2005/04/10
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Central Symmetry
+%% #2 -> centre
+%% #3 -> antecedent
+%% #4 -> node name of the symmetrical point of #3
+\def\pstSymO{\@ifnextchar[\Pst@SymO{\Pst@SymO[]}}%
+\def\Pst@SymO[#1]{\Pst@HomO[SegmentSymbol=\SegSymLst,#1, HomCoef=-1, Central@Sym=true]}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Middle of a Segment
+%% #2 #3 -> 2 nodes defining the segment
+%% #4 -> node name of the middle of [#2 #3]
+\def\pstMiddleAB{\@ifnextchar[\Pst@MiddleAB{\Pst@MiddleAB[]}}%
+\def\Pst@MiddleAB[#1]#2#3#4{%
+ \bgroup\psset{#1, HomCoef=.5}% % Affectation of local parameters
+ %%begin modif alaindelplanque 11/2003
+ \ifx\psk@PosAngle\@undef% Calcul automatique de PosAngle
+ \psset{PosAngle={!tx@EcldDict begin /N@#3 GetNode exch /N@#2 GetNode end
+ 4 1 roll sub 3 1 roll sub Atan}}
+ \fi
+ %%end modif alaindelplanque 11/2003
+ \expandafter\ifx\csname psteucl@old\endcsname\relax\Pst@HomO[]{#2}{#3}[#4]%
+ \else\Pst@HomO[]{#2}{#3}{#4}\fi%%%DR 14042005
+ \ifPst@CodeFig%
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \pstSegmentMark{#2}{#4}%
+ \pstSegmentMark{#4}{#3}%
+ \fi%
+ \egroup
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Centre of Gravity of a Triangle
+%% #2 #3 #4 -> 3 nodes defining the triangle
+%% #5 -> node name of the centre of gravity of #2 #3 #4
+\def\pstCGravABC{\@ifnextchar[\Pst@CGravABC{\Pst@CGravABC[]}}%
+\def\Pst@CGravABC[#1]#2#3#4#5{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \Pst@OIJGeonode@i[](! 1 3 div dup){#5}{#2}{#3}{#4}%DR: 22/03/03
+ \egroup
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Centre of the circoncrit circle
+%% #2 #3 #4 -> 3 nodes defining the triangle
+%% #5 -> node name of the centre of the circle
+\def\pstCircleABC{\@ifnextchar[\Pst@CircleABC{\Pst@CircleABC[]}}%
+\def\Pst@CircleABC[#1]#2#3#4#5{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \rput(#2){%DR: 22/03/03
+ \rput(!
+ tx@EcldDict begin
+ /N@#3 GetNode 2 copy Pyth 3 1 roll exch Atan %Rb Thetab
+ dup 3 1 roll %Thetab Rb Thetab
+ /N@#4 GetNode 2 copy Pyth 3 1 roll exch Atan %Thetab Rb Thetab Rc Thetac
+ 3 -1 roll sub dup cos 2 index mul 3 1 roll sin mul %Xb Xc Yc
+ dup dup mul 2 index dup mul add 3 -1 roll 3 index mul sub 2 div exch div
+ exch 2 div exch 3 -1 roll Rotate
+ \pst@number\psyunit div exch \pst@number\psxunit div exch
+ end){\Pst@Geonode@i[](0,0){#5}}}%
+ %\Pst@InterLL[]{@Middle#2#3}{@Middle#2#3P}{@Middle#2#4}{@Middle#2#4P}{#5}%DR: 22/03/03
+ \ifPst@DrawCirABC\pstCircleOA{#5}{#2}\fi
+ \ifPst@CodeFig
+ \psset{PointSymbol=none, PointName=none, linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle, nodesep=-1}%
+ \expandafter\ifx\csname psteucl@old\endcsname\relax%% NEW SYNTAX 14042005
+ \Pst@HomO[HomCoef=.5]{#2}{#3}[@Middle#2#3]%
+ \Pst@Rotation[RotAngle=90, CodeFig=false]{@Middle#2#3}{#2}[@Middle#2#3P]%
+ \Pst@HomO[HomCoef=.5]{#2}{#4}[@Middle#2#4]%
+ \Pst@Rotation[RotAngle=90, CodeFig=false]{@Middle#2#4}{#2}[@Middle#2#4P]%
+ \Pst@HomO[HomCoef=.5]{#4}{#3}[@Middle#4#3]%
+ \else%% OLD SYNTAX
+ \Pst@HomO[HomCoef=.5]{#2}{#3}{@Middle#2#3}%
+ \Pst@Rotation[RotAngle=90, CodeFig=false]{@Middle#2#3}{#2}{@Middle#2#3P}%
+ \Pst@HomO[HomCoef=.5]{#2}{#4}{@Middle#2#4}%
+ \Pst@Rotation[RotAngle=90, CodeFig=false]{@Middle#2#4}{#2}{@Middle#2#4P}%
+ \Pst@HomO[HomCoef=.5]{#4}{#3}{@Middle#4#3}%
+ \fi
+ \ncline{#5}{@Middle#4#3}%
+ \ncline{#5}{@Middle#2#3}%
+ \ncline{#5}{@Middle#2#4}%
+ \psset{linestyle=solid}%
+ \Pst@RightAngle[]{#5}{@Middle#4#3}{#4}%
+ \Pst@RightAngle[]{#5}{@Middle#2#3}{#3}%
+ \Pst@RightAngle[]{#5}{@Middle#2#4}{#2}%
+ \Pst@SegmentMark[SegmentSymbol=\psk@SegmentSymbolA]{#4}{@Middle#4#3}%
+ \Pst@SegmentMark[SegmentSymbol=\psk@SegmentSymbolA]{@Middle#4#3}{#3}%
+ \Pst@SegmentMark[SegmentSymbol=\psk@SegmentSymbolB]{#3}{@Middle#2#3}%
+ \Pst@SegmentMark[SegmentSymbol=\psk@SegmentSymbolB]{@Middle#2#3}{#2}%
+ \Pst@SegmentMark[SegmentSymbol=\psk@SegmentSymbolC]{#2}{@Middle#2#4}%
+ \Pst@SegmentMark[SegmentSymbol=\psk@SegmentSymbolC]{@Middle#2#4}{#4}%
+ \fi
+ \egroup
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TRANSLATION
+%% #2 #3 -> 2 nodes defining the translation vector
+%% #4 -> antecedent
+%% #5 -> node name of the image
+\expandafter\ifx\csname psteucl@old\endcsname\relax%% NEW SYNTAX %% DR 2005/04/10
+\def\pstTranslation{\@ifnextchar[\Pst@Translation{\Pst@Translation[]}}%
+\def\Pst@Translation[#1]#2#3{%
+ \bgroup%
+ \@InitListMng%
+ \psset{#1}\def\@VectorOrigin{#2}\def\@VectorEnd{#3}%
+ \edef\@@GenCourbe{}%%for accumulating points
+ \Pst@Translation@i%
+}%
+\def\Pst@Translation@i#1{%
+ \@List{#1}\edef\@antecedentLst{\@NewList}
+ \@ifnextchar[\Pst@Translation@ii{\Pst@Translation@ii[default]}%
+}%
+\def\Pst@Translation@ii[#1]{%
+ \@List{#1}\edef\@imageLst{\@NewList}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \Pst@Translation@iii%
+}%
+\def\Pst@Translation@iii{%
+ \ifx\@image\@default\def\@image{\@antecedent '}\fi
+ \rput(\@VectorOrigin){%
+ \rput(!
+ tx@EcldDict begin /N@\@VectorEnd\space GetNode
+ \ifx\psk@DistCoef\@none
+ \else\psk@DistCoef\space mul exch \psk@DistCoef\space mul exch\fi
+ /N@\@antecedent\space GetNode end
+ 3 -1 roll add exch 3 -1 roll add exch
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{\@image}}%
+ }%
+ \xdef\@@GenCourbe{\@@GenCourbe(\@image)}%%for accumulating points
+ \ifPst@CodeFig%
+ \bgroup%
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \ncline[arrows=->,nodesep=0]{\@antecedent}{\@image}
+ \ifx\psk@TransformLabel\@none
+ \else
+ \ifx\psk@TransformLabel\@default%
+ \ncput*{$\ifx\psk@DistCoef\@none\else\psk@DistCoef\fi\overrightarrow{\@VectorOrigin\@VectorEnd}$}
+ \else\ncput{\psk@TransformLabel}\fi
+ \fi%
+ \egroup%
+ \fi%
+ \Pst@ManageParamList{\@image}%
+ \edef\@antecedentLst{\expandafter\PstParamListLasts\@antecedentLst,undef/}%
+ \edef\@imageLst{\expandafter\PstParamListLasts\@imageLst,default/}%
+ \edef\@LastValidantecedent{\@antecedent}\def\@LastValidimage{\@image}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}%
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \ifx\@antecedent\@undef\def\@End{\pst@MngTransformCurve\egroup}
+ \else\def\@End{\Pst@Translation@iii}\fi%
+ \@End%
+}%
+\else%% OLD SYNTAX
+\def\pstTranslation{\@ifnextchar[\Pst@Translation{\Pst@Translation[]}}%
+\def\Pst@Translation[#1]#2#3{%
+ \bgroup
+ \@InitListMng%
+ \psset{#1}\def\@VectorOrigin{#2}\def\@VectorEnd{#3}%
+ \edef\@@GenCourbe{}%%for accumulating points
+ \Pst@Translation@i-%
+}%
+\def\Pst@Translation@i-#1#2{%
+ \rput(\@VectorOrigin){%
+ \rput(!
+ tx@EcldDict begin /N@\@VectorEnd\space GetNode
+ \ifx\psk@DistCoef\@none
+ \else\psk@DistCoef\space mul exch \psk@DistCoef\space mul exch\fi
+ /N@#1 GetNode end
+ 3 -1 roll add exch 3 -1 roll add exch
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{#2}}%
+ }%
+ \xdef\@@GenCourbe{\@@GenCourbe(#2)}%%for accumulating points
+ \ifPst@CodeFig%
+ \bgroup
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle, nodesep=0}%
+ \ncline[arrows=->]{#1}{#2}
+ \ifx\psk@TransformLabel\@none
+ \else%
+ \ifx\psk@TransformLabel\@default%
+ \ncput*{\ifx\psk@DistCoef\@none\else\psk@DistCoef\fi$\overrightarrow{\@VectorOrigin\@VectorEnd}$}
+ \else\ncput{\psk@TransformLabel}\fi
+ \fi%
+ \egroup
+ \fi
+ \Pst@ManageParamList{#2}%
+ \@ifnextchar-{\Pst@Translation@i}{\pst@MngTransformCurve\egroup}%
+}%
+%%%%%%%%%%%%%%%%%%%%%
+\fi% END OLD SYNTAX %% DR 2005/04/10
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ROTATION
+%% #2 -> centre of rotation
+%% #3 -> antecedent
+%% #4 -> node name of the image
+\expandafter\ifx\csname psteucl@old\endcsname\relax%% NEW SYNTAX %% DR 2005/04/10
+\def\pstRotation{\@ifnextchar[\Pst@Rotation{\Pst@Rotation[]}}%
+\def\Pst@Rotation[#1]#2{%
+ \bgroup
+ \@InitListMng%
+ \psset{#1}\def\@RotCtr{#2}\edef\@@GenCourbe{}%%for accumulating points
+ \Pst@Rotation@i%
+}%
+\def\Pst@Rotation@i#1{%
+ \@List{#1}\edef\@antecedentLst{\@NewList}
+ \@ifnextchar[\Pst@Rotation@ii{\Pst@Rotation@ii[default]}%
+}%
+\def\Pst@Rotation@ii[#1]{%
+ \@List{#1}\edef\@imageLst{\@NewList}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \Pst@Rotation@iii%
+}%
+\def\Pst@Rotation@iii{%
+ \ifx\@image\@default\def\@image{\@antecedent '}\fi
+ \rput(\@RotCtr){%
+ \rput(!tx@EcldDict begin /N@\@antecedent\space GetNode \psk@RotAngle\space Rotate end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{\@image}}%
+ }%% end \rput
+ \xdef\@@GenCourbe{\@@GenCourbe(\@image)}%%for accumulating points
+ \ifPst@CodeFig%
+ \bgroup
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \pstArcOAB[arrows=->]{\@RotCtr}{\@antecedent}{\@image}%
+ \ncline{\@RotCtr}{\@antecedent}\ncline{\@RotCtr}{\@image}
+ \ifx\psk@TransformLabel\@none\else\pstMarkAngle{\@antecedent}{\@RotCtr}{\@image}{$\psk@TransformLabel$}\fi
+ \egroup
+ \fi%
+ \Pst@ManageParamList{\@image}%
+ \edef\@antecedentLst{\expandafter\PstParamListLasts\@antecedentLst,undef/}%
+ \edef\@imageLst{\expandafter\PstParamListLasts\@imageLst,default/}%
+ \edef\@LastValidantecedent{\@antecedent}\def\@LastValidimage{\@image}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}%
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \ifx\@antecedent\@undef\def\@End{\pst@MngTransformCurve\egroup}
+ \else\def\@End{\Pst@Rotation@iii}\fi%
+ \@End%
+}%
+%%%%%%%%%%%%%%%%%%%%%
+\else%% OLD SYNTAX
+\def\pstRotation{\@ifnextchar[\Pst@Rotation{\Pst@Rotation[]}}%
+\def\Pst@Rotation[#1]#2{%
+ \bgroup
+ \@InitListMng%
+ \psset{#1}\def\@RotCtr{#2}
+ \edef\@@GenCourbe{}%%for accumulating points
+ \Pst@Rotation@i-%
+}%
+\def\Pst@Rotation@i-#1#2{%
+ \rput(\@RotCtr){%
+ \rput(!tx@EcldDict begin /N@#1 GetNode \psk@RotAngle\space Rotate end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{#2}}%
+ }%% end \rput
+ \xdef\@@GenCourbe{\@@GenCourbe(#2)}%%for accumulating points
+ \ifPst@CodeFig%
+ \bgroup
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \pstArcOAB[arrows=->]{\@RotCtr}{#1}{#2}%
+ \ncline{\@RotCtr}{#1}\ncline{\@RotCtr}{#2}
+ \ifx\psk@TransformLabel\@none\else\pstMarkAngle{#1}{\@RotCtr}{#2}{$\psk@TransformLabel$}\fi
+ \egroup
+ \fi%
+ \Pst@ManageParamList{#2}%
+ \@ifnextchar-{\Pst@Rotation@i}{\pst@MngTransformCurve\egroup}%
+}%
+\fi% END OLD SYNTAX %% DR 2005/04/10
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Intersection between two lines
+%% #2 #3 -> nodes defining the first line
+%% #4 #5 -> nodes defining the second line
+%% #6 -> node name of the image
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\pstInterLL{\@ifnextchar[\Pst@InterLL{\Pst@InterLL[]}}%
+\def\Pst@InterLL[#1]#2#3#4#5#6{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \rput(!
+ tx@EcldDict begin
+ /N@#2 GetNode /N@#3 GetNode /N@#4 GetNode /N@#5 GetNode InterLines
+ end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch){\pnode{#6}}%
+ \Pst@geonodelabel{#6}%
+ \egroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Intersection between one line and one circle
+%% #2 #3 -> nodes defining the first line
+%% #4 #5 -> nodes defining the center and a point onto C
+%% #6 -> node name of the first point
+%% #7 -> label
+%% #8 -> node name of the second point
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\pstInterLC{\@ifnextchar[\Pst@InterLC{\Pst@InterLC[]}}%
+\def\Pst@InterLC[#1]#2#3#4#5#6#7{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \rput(#4){%
+ \rput(!
+ tx@EcldDict begin
+ /N@#2 GetNode /N@#3 GetNode 4 copy EqDr
+ \ifx\psk@Radius\@none
+ \ifx\psk@Diameter\@none
+ /N@#4 GetNode /N@#5 GetNode ABDist
+ \else\psk@Diameter 2 div
+ \fi
+ \else\psk@Radius
+ \fi
+ InterLineCircle /Glby exch def /Glbx exch def
+ \pst@number\psyunit div exch \pst@number\psxunit div exch
+ end){\pnode{#6}}%
+ \rput(!
+ tx@EcldDict begin
+ Glbx \pst@number\psxunit div Glby \pst@number\psyunit div
+ end){\pnode{#7}}}%
+ \bgroup\ifx\psk@PosAngleA\@undef\else\psset{PosAngle=\psk@PosAngleA}\fi%
+ \ifx\psk@PointSymbolA\@undef\else\psset{PointSymbol=\psk@PointSymbolA}\fi%
+ \ifx\psk@PointNameA\@undef\else\psset{PointName=\psk@PointNameA}\fi%
+ \Pst@geonodelabel{#6}\egroup%
+ \ifx\psk@PosAngleB\@undef\else\psset{PosAngle=\psk@PosAngleB}\fi%
+ \ifx\psk@PointSymbolB\@undef\else\psset{PointSymbol=\psk@PointSymbolB}\fi%
+ \ifx\psk@PointNameB\@undef\else\psset{PointName=\psk@PointNameB}\fi%
+ \Pst@geonodelabel{#7}%
+ \egroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Intersection between two circles
+%% #2 #3 -> nodes defining the first circle
+%% #4 #5 -> nodes defining the second circle
+%% #6 -> node name of the first point
+%% #7 -> node name of the second point
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\pstInterCC{\@ifnextchar[\Pst@InterCC{\Pst@InterCC[]}}%
+\def\Pst@InterCC[#1]#2#3#4#5#6#7{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \rput(#2){%
+ \rput(!
+ tx@EcldDict begin
+ \ifx\psk@RadiusA\@undef
+ \ifx\psk@DiameterA\@undef
+ \ifx\psk@Radius\@none
+ \ifx\psk@Diameter\@none
+ /N@#3 GetNode Pyth
+ \else\psk@Diameter 2 div
+ \fi
+ \else\psk@Radius\space
+ \fi
+ \else\psk@DiameterA 2 div
+ \fi
+ \else\psk@RadiusA\space
+ \fi
+ \ifx\psk@RadiusB\@undef
+ \ifx\psk@DiameterB\@undef
+ \ifx\psk@Radius\@none
+ \ifx\psk@Diameter\@none
+ /N@#4 GetNode /N@#5 GetNode ABDist
+ \else\psk@Diameter 2 div
+ \fi
+ \else\psk@Radius\space
+ \fi
+ \else\psk@DiameterB 2 div
+ \fi
+ \else\psk@RadiusB\space
+ \fi
+ /N@#4 GetNode Pyth InterCircles /N@#4 GetNode
+ exch Atan dup /xoC exch def Rotate /Glby exch def /Glbx exch def
+ xoC Rotate
+ end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)
+ {\pnode{#6}}%
+ \rput(!
+ tx@EcldDict begin
+ Glbx \pst@number\psxunit div Glby \pst@number\psyunit div
+ end)%
+ {\pnode{#7}}%
+ }%
+ \bgroup\ifx\psk@PosAngleA\@undef\else\psset{PosAngle=\psk@PosAngleA}\fi
+ \ifx\psk@PointSymbolA\@undef\else\psset{PointSymbol=\psk@PointSymbolA}\fi
+ \ifx\psk@PointNameA\@undef\else\psset{PointName=\psk@PointNameA}\fi
+ \Pst@geonodelabel{#6}\egroup%
+ \bgroup\ifx\psk@PosAngleB\@undef\else\psset{PosAngle=\psk@PosAngleB}\fi
+ \ifx\psk@PointSymbolB\@undef\else\psset{PointSymbol=\psk@PointSymbolB}\fi
+ \ifx\psk@PointNameB\@undef\else\psset{PointName=\psk@PointNameB}\fi
+ \Pst@geonodelabel{#7}\egroup%
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle, arcsep=-1}%
+ \ifx\psk@CodeFigA\@undef%
+ \ifx\psk@CodeFigB\@undef\ifPst@CodeFig\pstArcOAB{#2}{#6}{#7}\fi\fi
+ \else%
+ \ifPst@CodeFigAarc\pstArcOAB{#2}{#6}{#7}\else\pstArcnOAB{#2}{#6}{#7}\fi%
+ \fi
+ \ifx\psk@CodeFigB\@undef%
+ \ifx\psk@CodeFigA\@undef\ifPst@CodeFig\pstArcOAB{#4}{#6}{#7}\fi\fi
+ \else%
+ \ifPst@CodeFigBarc\pstArcOAB{#4}{#6}{#7}\else\pstArcnOAB{#4}{#6}{#7}\fi%
+ \fi
+ \egroup%
+}%
+%% Intersection between two functions
+%% #2 #3 -> f and g (functions)
+%% #4 -> approximation of the root
+%% #5 -> node name of the first point
+\def\pstInterFF{\@ifnextchar[\Pst@InterFF{\Pst@InterFF[]}}%
+\def\Pst@InterFF[#1]#2#3#4#5{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \rput(!
+ tx@EcldDict begin
+ #4 { #3 } { #2 } NewtonSolving pop
+ end){\pnode{#5}}%
+ \Pst@geonodelabel{#5}%
+ \egroup%
+}
+%% Intersection between a function and a line
+%% #2 -> f (function)
+%% #3 #4 -> points defining the line
+%% #5 -> approximation of the root
+%% #6 -> node name of the first point
+\def\pstInterFL{\@ifnextchar[\Pst@InterFL{\Pst@InterFL[]}}%
+\def\Pst@InterFL[#1]#2#3#4#5#6{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \rput(!
+ tx@EcldDict begin
+ #5 { /N@#3 GetNode /N@#4 GetNode EqDr 1 index div
+ \pst@number\psxunit div 3 1 roll div x mul add } { #2 }
+ NewtonSolving pop
+ end){\pnode{#6}}%
+ \Pst@geonodelabel{#6}%
+ \egroup%
+}
+%% Intersection between a function and a circle
+%% #2 -> f (function)
+%% #3 #4 -> points defining the circle (center and point)
+%% #5 -> approximation of the root
+%% #6 -> node name of the first point
+\def\pstInterFC{\@ifnextchar[\Pst@InterFC{\Pst@InterFC[]}}%
+\def\Pst@InterFC[#1]#2#3#4#5#6{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \rput(!
+ tx@EcldDict begin
+ #5 { /N@#3 GetNode 2 copy /N@#4 GetNode ABDist \pst@number\psxunit div
+ 3 1 roll \pst@number\psyunit div exch \pst@number\psxunit div exch x #2 ABDist sub } { 0 } NewtonSolving pop
+ pop dup /x exch def #2
+ end){\pnode{#6}}%
+ \Pst@geonodelabel{#6}%
+ \egroup%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ORTHOGONAL PROJECTION
+%% #2 #3 -> nodes defining the line where to project
+%% #4 -> antecedent
+%% #5 -> node name of the image
+%% #6 -> label
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\expandafter\ifx\csname psteucl@old\endcsname\relax%% NEW SYNTAX %% DR 2005/04/10
+\def\pstProjection{\@ifnextchar[\Pst@Projection{\Pst@Projection[]}}%
+\def\Pst@Projection[#1]#2#3{%
+ \bgroup%
+ \@InitListMng%
+ \psset{#1}\def\@FrstPt{#2}\def\@ScdPt{#3}% Affectation of local parameters
+ \edef\@@GenCourbe{}%%for accumulating points
+ \Pst@Projection@i%
+}%
+\def\Pst@Projection@i#1{%
+ \@List{#1}\edef\@antecedentLst{\@NewList}
+ \@ifnextchar[\Pst@Projection@ii{\Pst@Projection@ii[default]}%
+}%
+\def\Pst@Projection@ii[#1]{%
+ \@List{#1}\edef\@imageLst{\@NewList}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \Pst@Projection@iii%
+}%
+\def\Pst@Projection@iii{%
+ \Pst@Projection@iv{\@antecedent}{\@image}
+ %%begin modif alaindelplanque 11/2003
+ %% automatic computation of PosAngle
+ \ifx\psk@PosAngle\@undef%
+ \psset{PosAngle={!tx@EcldDict begin /N@\@image\space GetNode exch /N@\@antecedent\space GetNode end 4 1 roll
+ sub 3 1 roll sub neg exch atan=20}}
+ \fi
+ %%end modif alaindelplanque 11/2003
+ \xdef\@@GenCourbe{\@@GenCourbe(\@image)}%%for accumulating points
+ \Pst@ManageParamList{\@image}%
+ \ifPst@CodeFig%
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \pstRightAngle[linestyle=solid]{\@antecedent}{\@image}{\@ScdPt}%
+ \ncline{\@antecedent}{\@image}%
+ \fi%
+ \edef\@antecedentLst{\expandafter\PstParamListLasts\@antecedentLst,undef/}%
+ \edef\@imageLst{\expandafter\PstParamListLasts\@imageLst,default/}%
+ \edef\@LastValidantecedent{\@antecedent}\def\@LastValidimage{\@image}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}%
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \ifx\@antecedent\@undef\def\@End{\pst@MngTransformCurve\egroup}
+ \else\def\@End{\Pst@Projection@iii}\fi%
+ \@End%
+}%
+\def\Pst@Projection@iv#1#2{%
+ \ifx\@image\@default\def\@image{\@antecedent '}\fi
+ \rput(\@FrstPt){% translation onto #1
+ \rput(!tx@EcldDict begin /N@#1 GetNode /N@\@ScdPt\space GetNode Project end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{#2}}%
+ }%
+}%
+%%%%%%%%%%%%%%%%%%%%%
+\else%% OLD SYNTAX
+\def\pstProjection{\@ifnextchar[\Pst@Projection{\Pst@Projection[]}}%
+\def\Pst@Projection[#1]#2#3{%
+ \bgroup%
+ \@InitListMng%
+ \psset{#1}\def\@FrstPt{#2}\def\@ScdPt{#3}% Affectation of local parameters
+ \edef\@@GenCourbe{}%%for accumulating points
+ \Pst@Projection@i-%
+}%
+\def\Pst@Projection@i-#1#2{%
+ \Pst@Projection@ii{#1}{#2}
+ %%begin modif alaindelplanque 11/2003
+ %% automatic computation of PosAngle
+ \ifx\psk@PosAngle\@undef%
+ \psset{PosAngle={!tx@EcldDict begin /N@#2 GetNode exch /N@#1 GetNode end 4 1 roll
+ sub 3 1 roll sub neg exch atan=20}}
+ \fi
+ %%end modif alaindelplanque 11/2003
+ \xdef\@@GenCourbe{\@@GenCourbe(#2)}%%for accumulating points
+ \Pst@ManageParamList{#2}%
+ \ifPst@CodeFig%
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \pstRightAngle[linestyle=solid]{#1}{#2}{\@ScdPt}%
+ \ncline{#1}{#2}%
+ \fi%
+ \@ifnextchar-{\Pst@Projection@i}{\pst@MngTransformCurve\egroup}%
+}%
+\def\Pst@Projection@ii#1#2{%
+ \rput(\@FrstPt){% translation onto #1
+ \rput(!tx@EcldDict begin /N@#1 GetNode /N@\@ScdPt\space GetNode Project end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{#2}}%
+ }%
+}%
+\fi% END OLD SYNTAX %% DR 2005/04/10
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ORTHOGONAL SYMMETRY
+%% #2 #3 -> nodes defining the symmetrical axis
+%% #4 -> antecedent node
+%% #5 -> node name of the symmetrical point
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\expandafter\ifx\csname psteucl@old\endcsname\relax%% NEW SYNTAX %% DR 2005/04/10
+\def\pstOrtSym{\@ifnextchar[\Pst@OrtSym{\Pst@OrtSym[]}}%
+\def\Pst@OrtSym[#1]#2#3{%
+ \bgroup%
+ \@InitListMng%
+ \psset{#1}\def\@FrstPt{#2}\def\@ScdPt{#3}% % Affectation of local parameters
+ \edef\@@GenCourbe{}%%for accumulating points
+ \Pst@OrtSym@i%
+}
+\def\Pst@OrtSym@i#1{
+ \@List{#1}\edef\@antecedentLst{\@NewList}
+ \@ifnextchar[\Pst@OrtSym@ii{\Pst@OrtSym@ii[default]}%
+}%
+\def\Pst@OrtSym@ii[#1]{
+ \@List{#1}\edef\@imageLst{\@NewList}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \Pst@OrtSym@iii%
+}%
+\def\Pst@OrtSym@iii{
+ \ifx\@image\@default\def\@image{\@antecedent '}\fi
+ \rput(\@FrstPt){% translation onto #1
+ \rput(!
+ tx@EcldDict begin /N@\@antecedent\space GetNode 2 copy /N@\@ScdPt\space GetNode Project
+ /N@\@antecedent\space GetNode ABVect 2 mul 3 -1 roll exch add 3 1 roll 2 mul add exch end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{\@image}}%
+ }%
+ \ifPst@CodeFig%
+ \bgroup
+ \Pst@Projection@iv{\@antecedent}{@ProjOrth\@antecedent on\@FrstPt\@ScdPt}
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \Pst@RightAngle[linestyle=solid]{\@FrstPt}{@ProjOrth\@antecedent on\@FrstPt\@ScdPt}{\@antecedent}%
+ \Pst@SegmentMark[]{\@image}{@ProjOrth\@antecedent on\@FrstPt\@ScdPt}%
+ \Pst@SegmentMark[]{@ProjOrth\@antecedent on\@FrstPt\@ScdPt}{\@antecedent}%
+ \egroup
+ \fi%
+ \xdef\@@GenCourbe{\@@GenCourbe(\@image)}%%for accumulating points
+ \Pst@ManageParamList{\@image}%
+ \edef\@antecedentLst{\expandafter\PstParamListLasts\@antecedentLst,undef/}%
+ \edef\@imageLst{\expandafter\PstParamListLasts\@imageLst,default/}%
+ \edef\@LastValidantecedent{\@antecedent}\def\@LastValidimage{\@image}
+ \edef\@antecedent{\expandafter\PstParamListFirst\@antecedentLst,undef/}%
+ \edef\@image{\expandafter\PstParamListFirst\@imageLst,default/}
+ \ifx\@antecedent\@undef\def\@End{\pst@MngTransformCurve\egroup}
+ \else\def\@End{\Pst@OrtSym@iii}\fi%
+ \@End%
+}%
+%%%%%%%%%%%%%%%%%%%%%
+\else%% OLD SYNTAX
+\def\pstOrtSym{\@ifnextchar[\Pst@OrtSym{\Pst@OrtSym[]}}%
+\def\Pst@OrtSym[#1]#2#3{%
+ \bgroup%
+ \@InitListMng%
+ \psset{#1}\def\@FrstPt{#2}\def\@ScdPt{#3}% % Affectation of local parameters
+ \edef\@@GenCourbe{}%%for accumulating points
+ \Pst@OrtSym@i-%
+}
+\def\Pst@OrtSym@i-#1#2{
+ \rput(\@FrstPt){% translation onto #1
+ \rput(!
+ tx@EcldDict begin /N@#1 GetNode 2 copy /N@\@ScdPt\space GetNode Project
+ /N@#1 GetNode ABVect 2 mul 3 -1 roll exch add 3 1 roll 2 mul add exch end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{#2}}%
+ }%
+ \ifPst@CodeFig%
+ \bgroup
+ \Pst@Projection@ii{#1}{@ProjOrth#1on\@FrstPt\@ScdPt}
+ \psset{linecolor=\psk@CodeFigColor, linestyle=\psk@CodeFigStyle}%
+ \Pst@RightAngle[linestyle=solid]{\@FrstPt}{@ProjOrth#1on\@FrstPt\@ScdPt}{#1}%
+ \Pst@SegmentMark[]{#2}{@ProjOrth#1on\@FrstPt\@ScdPt}%
+ \Pst@SegmentMark[]{@ProjOrth#1on\@FrstPt\@ScdPt}{#1}%
+ \egroup
+ \fi%
+ \xdef\@@GenCourbe{\@@GenCourbe(#2)}%%for accumulating points
+ \Pst@ManageParamList{#2}%
+ \@ifnextchar-{\Pst@OrtSym@i}{\pst@MngTransformCurve\egroup}%
+}%
+\fi% END OLD SYNTAX %% DR 2005/04/10
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% mediator line
+%% #2 #3 -> nodes defining the segment
+%% #4 -> middle of the segment
+%% #5 -> node belonging to the mediator line
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\pstMediatorAB{\@ifnextchar[\Pst@MediatorAB{\Pst@MediatorAB[]}}%
+\def\Pst@MediatorAB[#1]#2#3#4#5{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \bgroup
+ \ifx\psk@PointSymbolA\@undef\else\psset{PointSymbol=\psk@PointSymbolA}\fi
+ \ifx\psk@PointNameA\@undef\else\psset{PointName=\psk@PointNameA}\fi
+ %\Pst@HomO[HomCoef=.5]{#2}{#3}{#4}
+ \Pst@MiddleAB[]{#2}{#3}{#4}
+ \egroup
+ \bgroup
+ \ifx\psk@PointSymbolB\@undef\else\psset{PointSymbol=\psk@PointSymbolB}\fi
+ \ifx\psk@PointNameB\@undef\else\psset{PointName=\psk@PointNameB}\fi
+ \expandafter\ifx\csname psteucl@old\endcsname\relax%
+ \Pst@Rotation[RotAngle=90, CodeFig=false]{#4}{#3}[#5]%%%DR 26032005
+ \else\Pst@Rotation[RotAngle=90, CodeFig=false]{#4}{#3}{#5}\fi%%%DR 14042005
+ \egroup
+ \ifPst@CodeFig
+ \bgroup\psset{linecolor=\psk@CodeFigColor}
+ \Pst@RightAngle[]{#3}{#4}{#5}
+ \Pst@SegmentMark[]{#2}{#4}\Pst@SegmentMark[]{#4}{#3}%
+ \egroup
+ \fi
+ \ncline{#4}{#5}
+ \egroup
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% bissectrice
+%% #2 #3 #4 -> nodes defining the angle in #3 anti-clockwise
+%% #5 -> node belonging to the bissectrice
+%% #6 -> label
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\pstBissectBAC{\@ifnextchar[\Pst@BissectBAC{\Pst@BissectBAC[]}}%
+\def\Pst@BissectBAC[#1]#2#3#4#5{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \rput(#3){%
+ \rput(!
+ tx@EcldDict begin /N@#4 GetNode exch Atan /N@#2 GetNode end
+ 2 copy 5 2 roll exch Atan 2 copy lt { exch 360 sub exch } if sub
+ 2 div tx@EcldDict begin Rotate end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{#5}}%
+ \Pst@geonodelabel{#5}%
+ \ncline{#3}{#5}%
+ }%% end \rput
+ \egroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% outside bissectrice
+%% #2 #3 #4 -> nodes defining the angle in #3 anti-clockwise
+%% #5 -> node belonging to the bissectrice
+%% #6 -> label
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\pstOutBissectBAC{\@ifnextchar[\Pst@OutBisBAC{\Pst@OutBisBAC[]}}%
+\def\Pst@OutBisBAC[#1]#2#3#4#5{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \rput(#3){%
+ \rput(!
+ tx@EcldDict begin /N@#4 GetNode exch Atan /N@#2 GetNode end
+ 2 copy 5 2 roll exch Atan 2 copy lt { exch 360 sub exch } if sub
+ 2 div 90 add tx@EcldDict begin Rotate end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{#5}}%
+ \Pst@geonodelabel{#5}%
+ \ncline{#3}{#5}%
+ }%% end \rput
+ \egroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Creation of a point according to a curvilign abscissa
+%% #2 -> center of the circle
+%% #3 -> point origin of the circle
+%% #4 -> point to be placed
+\def\pstCurvAbsNode{\@ifnextchar[\Pst@CurvAbsNode{\Pst@CurvAbsNode[]}}%
+\def\Pst@CurvAbsNode[#1]#2#3#4#5{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \Pst@@CurvAbsNode{#2}{#3}{#4}{#5}%
+ %%begin modif alaindelplanque 11/2003
+ %% \ifx\psk@PointSymbol\@none\else{\Pst@geonodelabel{#4}}\fi%
+ \ifx\psk@PointSymbol\@none
+ \else
+ %% automatic computation of PosAngle
+ \ifx\psk@PosAngle\@undef%
+ \psset{PosAngle={!tx@EcldDict begin /N@#4 GetNode exch /N@#2 GetNode end 4 1 roll
+ sub 3 1 roll sub neg exch Atan}}
+ \fi
+ \Pst@geonodelabel{#4}
+ \fi%
+ %%end modif alaindelplanque 11/2003
+ \Pst@geonodelabel{#4}%
+ \egroup%
+ %% AJOUTER LE MARQUAGE CodeFig
+}%
+\def\Pst@@CurvAbsNode#1#2#3#4{%
+ \rput(#1){%
+ \rput(!
+ tx@EcldDict begin
+ /N@#2 GetNode 2 copy 0 0 ABDist #4 exch div Pi div 180 mul
+ \ifPst@CurvAbsNeg neg \fi Rotate
+ end
+ \pst@number\psyunit div exch \pst@number\psxunit div exch)%
+ {\pnode{#3}}%
+ }%% end \rput
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% GENERIC CURVES
+%% #2 -> Radical name
+%% #3 -> initial counter value
+%% #4 -> maximal counter value
+\def\pstGenericCurve{\@ifnextchar[\Pst@GenericCurve{\Pst@GenericCurve[]}}%
+\def\Pst@GenericCurve[#1]#2#3#4{%
+ \bgroup\psset{#1}% % Affectation of local parameters
+ \edef\@@GenCourbe{\ifx\psk@GenCurvFirst\@none\else(\psk@GenCurvFirst)\fi}%
+ \pst@cnth=#4
+ \advance\pst@cnth by -#3%\@GenCurve% del DR
+ \advance\pst@cnth by \psk@GenCurvInc%1 modif DR 020225
+ \divide\pst@cnth by \psk@GenCurvInc
+ \multido{\i@GenCurve=#3+\psk@GenCurvInc}{\pst@cnth}{%
+ \xdef\@@GenCourbe{\@@GenCourbe(#2\i@GenCurve)}}
+ \edef\@@GenCourbe{%
+ \@@GenCourbe%
+ \ifx\psk@GenCurvLast\@none\else(\psk@GenCurvLast)\fi}%
+ %\psset{showpoints=true}
+ \expandafter\pscurve\@@GenCourbe
+ \egroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Parallel line
+%% #2 #3 -> nodes defining the line
+%% #3 -> antecedent node
+%% #4 -> node name of the image
+%% #5 -> label
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Orthogonal line
+%% #2 #3 -> nodes defining the line
+%% #3 -> antecedent node
+%% #4 -> node name of the image
+%% #5 -> label
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Special macros for parameters
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Distance between two points
+\def\pstDistAB#1#2{%
+ tx@EcldDict begin /N@#1 GetNode /N@#2 GetNode ABDist end
+ \ifx\psk@DistCoef\@none\else
+ \psk@DistCoef\space mul
+ \fi
+}
+%% Distance specified with a number
+\def\pstDistVal#1{
+ #1 \pst@number\psxunit mul
+ \ifx\psk@DistCoef\@none\else
+ \psk@DistCoef\space mul
+ \fi
+}
+%% angle defined by three points
+\def\pstAngleAOB#1#2#3{
+ tx@EcldDict begin /N@#3 GetNode /N@#2 GetNode end
+ 2 copy 6 2 roll
+ tx@EcldDict begin ABVect end exch Atan
+ dup 0 lt { 360 add } if
+ tx@EcldDict begin /N@#1 GetNode end
+ 5 -2 roll tx@EcldDict begin ABVect end exch Atan
+ dup 0 lt { 360 add } if
+% 2 copy lt { exch 360 sub exch } if
+ sub
+ \ifx\psk@AngleCoef\@none\else
+ \psk@AngleCoef\space mul
+ \fi
+}
+%% END: pst-euclide.tex
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End: