summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex80
1 files changed, 67 insertions, 13 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex b/Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex
index be716d75a51..cf548ae4367 100644
--- a/Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex
+++ b/Master/texmf-dist/tex/generic/pst-magneticfield/pst-magneticfield.tex
@@ -17,11 +17,13 @@
% Requires some packages
\ifx\PSTricksLoaded\endinput\else \input pstricks \fi
\ifx\PSTthreeDLoaded\endinput\else\input pst-3d \fi
+\ifx\PSTnodesLoaded\endinput\else \input pst-node \fi
+\ifx\PSTarrowLoaded\endinput\else \input pst-arrow \fi
\ifx\MultidoLoaded\endinput\else \input multido.tex\fi
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
%
-\def\fileversion{1.13}
-\def\filedate{2010/06/11}
+\def\fileversion{1.15}
+\def\filedate{2019/01/17}
\message{`pst-magneticfield' v\fileversion, \filedate\space (ml,jg,hv)}
%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
@@ -55,10 +57,12 @@
\define@boolkey[psset]{pst-magneticfield}[Pst@]{AntiHelmholtz}[true]{}
\define@boolkey[psset]{pst-magneticfield}[Pst@]{StreamDensityPlot}[true]{}
\define@boolkey[psset]{pst-magneticfield}[Pst@]{setgray}[true]{}
+\define@boolkey[psset]{pst-magneticfield}[Pst@]{changeNS}[true]{}
%
\psset[pst-magneticfield]{R=1,L=4,N=6,pointsB=500,pointsS=1000,
PasB=0.02,PasS=0.00275,nS=1,nL=8,drawSelf,styleSpire=styleSpire,
- styleCourant=sensCourant,AntiHelmholtz=false,StreamDensityPlot=false,setgray=false}
+ styleCourant=sensCourant,AntiHelmholtz=false,StreamDensityPlot=false,setgray=false,
+ changeNS=false}
%
\def\tx@MFieldDict{ tx@MFieldDict begin }
%
@@ -109,21 +113,34 @@
/StreamDensityPlot \ifPst@StreamDensityPlot true \else false \fi def
/Setgray \ifPst@setgray true \else false \fi def
}%
- \addto@pscode{ \tx@MFieldDict MagneticField end }%
+ \addto@pscode{ \tx@MFieldDict %\pst@magnetrotate rotate
+ MagneticField end }%
\ifPst@drawSelf
\ifPst@AntiHelmholtz
\psline[style=\psk@styleSpire](!Radius neg Radius 2 div)(!Radius Radius 2 div)
- \psline[style=\psk@styleCourant]{<-}(!-0.2 Radius 2 div)(!0.2 Radius 2 div)
\psline[style=\psk@styleSpire](!Radius neg Radius 2 div neg)(!Radius Radius 2 div neg)
- \psline[style=\psk@styleCourant]{->}(!-0.2 Radius 2 div neg)(!0.2 Radius 2 div neg)
+ \ifPst@changeNS
+ \psline[style=\psk@styleCourant]{->}(!-0.2 Radius 2 div)(!0.2 Radius 2 div)
+ \psline[style=\psk@styleCourant]{<-}(!-0.2 Radius 2 div neg)(!0.2 Radius 2 div neg)
+ \else
+ \psline[style=\psk@styleCourant]{<-}(!-0.2 Radius 2 div)(!0.2 Radius 2 div)
+ \psline[style=\psk@styleCourant]{->}(!-0.2 Radius 2 div neg)(!0.2 Radius 2 div neg)
+ \fi
\else
- \multido{\i=1+1}{\psk@magneticfieldN}{% numero de la spire
- \pst@Verb{ /Yspire yA \i\space 1 sub inter mul sub def } % position de la spire
- \psline[style=\psk@styleSpire](! Radius neg Yspire)(! Radius Yspire)
- \psline[style=\psk@styleCourant]{->}(! -0.2 Yspire)(! 0.2 Yspire)}
- \fi%
- \fi%
- \end@SpecialObj%
+ \ifPst@changeNS
+ \multido{\i=1+1}{\psk@magneticfieldN}{% numero de la spire
+ \pst@Verb{ /Yspire yA \i\space 1 sub inter mul sub def } % position de la spire
+ \psline[style=\psk@styleSpire](! Radius neg Yspire)(! Radius Yspire)
+ \psline[style=\psk@styleCourant]{<-}(! -0.2 Yspire)(! 0.2 Yspire)}%
+ \else
+ \multido{\i=1+1}{\psk@magneticfieldN}{% numero de la spire
+ \pst@Verb{ /Yspire yA \i\space 1 sub inter mul sub def } % position de la spire
+ \psline[style=\psk@styleSpire](! Radius neg Yspire)(! Radius Yspire)
+ \psline[style=\psk@styleCourant]{->}(! -0.2 Yspire)(! 0.2 Yspire)}%
+ \fi
+ \fi
+ \fi
+ \end@SpecialObj
\ignorespaces}
%
\newpsstyle{grille}{subgriddiv=0,gridcolor=lightgray,griddots=10}
@@ -176,6 +193,43 @@
\fi
\endgroup}
%
+\define@boolkey[psset]{pst-magneticfield}[Pst@]{showField}[true]{}
+\define@boolkey[psset]{pst-magneticfield}[Pst@]{showPoleLabels}[true]{}
+\define@key[psset]{pst-magneticfield}{fontstyle}[\large\bfseries\sffamily]{\def\psk@label@fontstyle{#1}}
+\define@key[psset]{pst-magneticfield}{magnetScale}[1 1]{\pst@getscale{#1}\pst@magnetscale}
+\psset[pst-magneticfield]{showPoleLabels,fontstyle=\large\bfseries\sffamily,showField=false,
+ magnetScale=1}
+
+\def\ps@Bar@Magnet{%
+ \psscalebox{\pst@magnetscale}{%
+ \psframe*[linecolor=Green](-0.5,-1.5)(0.5,0)%
+ \psframe*[linecolor=BrickRed](-0.5,0)(0.5,1.5)%
+ \ifPst@showPoleLabels
+ \rput{0}(0,1){\textcolor{white}{\psk@label@fontstyle N}}%
+ \rput{0}(0,-1){\textcolor{white}{\psk@label@fontstyle S}}%
+ \fi}%
+}%
+
+\def\psBarMagnet{\pst@object{psBarMagnet}}
+\def\psBarMagnet@i{\@ifnextchar(\psBarMagnet@ii{\psBarMagnet@ii(0,0)}}%
+\def\psBarMagnet@ii(#1){%
+ \pst@killglue
+ \begingroup
+ \addbefore@par{R=0.8,L=3,N=4,pointsS=200,nL=9,nS=0,PasB=0.1,numSpires=0}%
+ \use@par
+ \ifPst@showField
+ \rput(#1){%
+ \psscalebox{0.4 0.7}{\psmagneticfield(-8,-10)(8,10)}%
+ \multido{\rA=0.3+0.3,\rB=0.8+0.1,\iA=-60+20,\iB=60+-20}{4}{%
+ \pccurve[ncurv=\rB,linewidth=0.1\pslinewidth,angleA=\iA,angleB=\iB,ArrowInside=->](0.5,\rA)(0.5,-\rA)
+ \psscalebox{-1 1}{\pccurve[ncurv=\rB,linewidth=0.1\pslinewidth,angleA=\iA,angleB=\iB,ArrowInside=->](0.5,\rA)(0.5,-\rA)}%
+ }}%
+ \fi
+ \rput(#1){\ps@Bar@Magnet}%
+ \endgroup
+ \ignorespaces
+}
+%
\catcode`\@=\PstAtCode\relax
%
%% END