% $Id: pst-electricfield.tex 479 2011-03-26 10:12:49Z herbert $
%% Package `pst-electricfield.tex'
%%
%% Manuel Luque
%% Jürgen Gilg
%% Patrice Megret
%% Herbert Voß
%%
%% 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.
%%
%% A PSTricks related package to draw electric field lines
%% It uses the method from Euler
%%
\csname PSTElectricFieldLoaded\endcsname
\let\PSTElectricFieldLoaded\endinput
%
% Requires some packages
\ifx\PSTricksLoaded\endinput\else \input pstricks \fi
\ifx\MultidoLoaded\endinput\else \input multido.tex\fi
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
%
\def\fileversion{0.14}
\def\filedate{2011/03/26}
\message{`pst-electricfield' v\fileversion, \filedate\space (ml,jg,hv)}
%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
%
\SpecialCoor
\pst@addfams{pst-electricfield}
%% prologue for postcript
\pstheader{pst-electricfield.pro}%
%% [q1 x1 y1 N1 plotCharge] [q2 x2 y2 N2 plotCharge] [...] etc
%% [charge, coordonnees, nombre de lignes, plotCircle]
%% number of lines and boolean for the circle are optional
\define@key[psset]{pst-electricfield}{Q}[{[1 -2 0 10][1 1 0][1 0 1 15]}]{\def\psk@electricfieldQ{#1}}
\psset[pst-electricfield]{Q=[1 -2 0 10][1 1 0][1 0 1 15]}
\define@key[psset]{pst-electricfield}{N}[17]{\def\psk@electricfieldN{#1 }} %% par defaut 16 lignes
\psset[pst-electricfield]{N=17}
%% nombre de points du trace
\define@key[psset]{pst-electricfield}{points}[400]{\def\psk@electricfieldpoints{#1 }}
\psset[pst-electricfield]{points=400}
%% pas du trace
\define@key[psset]{pst-electricfield}{Pas}[0.025]{\def\psk@electricfieldPas{#1 }}
\psset[pst-electricfield]{Pas=0.025}
\define@key[psset]{pst-electricfield}{posArrow}[0.25]{\def\psk@ElectricFieldposArrow{#1 }}
\psset[pst-electricfield]{posArrow=0.25}
%
\def\tx@EFieldDict{ tx@EFieldDict begin }
%
\def\psElectricfield{\pst@object{psElectricfield}}
\def\psElectricfield@i{%
\pst@killglue%
\addbefore@par{radius=1mm}%
\begin@OpenObj%
\pssetlength\pst@dimb\psk@radius
\addto@pscode{%
\tx@EFieldDict
/QXYN [\psk@electricfieldQ] def
/ChargeRadius \pst@number\pst@dimb def
/N \psk@electricfieldN def
/NbrePoints \psk@electricfieldpoints def
/Pas \psk@electricfieldPas def
/posArrow \psk@ElectricFieldposArrow def
/arrowscale { \psk@arrowscale } def
/xUnit \pst@number\psxunit def
/yUnit \pst@number\psyunit def
Electricfield
end
}%
\end@OpenObj%
\ignorespaces}