[pstricks] Re : Re : Re : Elektrostatic Field
Thomas Söll
Thomas.Soell at lehrer.uka.de
Mon Jan 18 21:20:57 CET 2010
One solution nicer than the other.
Thank you very much to Manuel, Jürgen, Patrice and Herbert.
Thomas
----- Original Message -----
From: "Herbert Voss" <Herbert.Voss at FU-Berlin.DE>
To: "Graphics with PSTricks" <pstricks at tug.org>
Sent: Monday, January 18, 2010 8:13 PM
Subject: Re: [pstricks] Re : Re : Re : Elektrostatic Field
> Am 18.01.2010 14:52, schrieb Herbert Voss:
>> Am 18.01.2010 10:49, schrieb mluque5130 at aol.com:
>>>
>>> It would be interesting to generalize to any number of electrical
>>> charges. Here's an example with four charges. It's beautiful!
>>
>
>> the same, a bit shorter. Can be modified to use n charges ...
>
> here it is. I also tried the code from Patrice, which gives
> a nice output, but it is really slow in compiling.
>
> \documentclass{article}
> \usepackage{pstricks-add}
> \makeatletter
> \let\ScreenCoor\tx at ScreenCoor
> \makeatother
> \def\FieldLinesFourElectricCharges{
> 0 1 NoQ { /i ED xP i getX sub yP i getY sub Pyth } for
> NoQ 1 add array astore /Radius ED
> 0 0
> 0 1 NoQ { /i ED
> i getQ xP i getX sub mul i getR 3 exp Div add exch
> i getQ yP i getY sub mul i getR 3 exp Div add exch
> } for
> /Ex ED /Ey ED
> /NormeE Ex Ey Pyth def
> /dX Ex NormeE div pasX mul def
> /dY Ey NormeE div pasX mul def
> }
> \begin{document}
>
> \def\NoQ{5}
> \def\Qcharge{-0.5 1 -1.5 1 1}
> \def\Xcoor{0 -2.5 2.5 2.5 -2.5}
> \def\Ycoor{0 -2.5 -2.5 2.5 2.5}
>
> \begin{center}
> \begin{pspicture*}(-5,-5)(5,5)
> \multido{\iB=0+1}{\NoQ}{%
> \multido{\iA=0+15}{24}{% 24 lignes de champ
> \psparametricplot[plotpoints=2000]{xmin}{xmax}[{
> /xmin -5 def /xmax 5 def /ymin -5 def /ymax 5 def
> /pasX xmax xmin sub 200 div def % 0.05
> /Qcharge [\Qcharge] def
> /NoQ \NoQ\space 1 sub def
> /Xcoor [\Xcoor] def
> /Ycoor [\Ycoor] def
> /getX { Xcoor exch get } def
> /getY { Ycoor exch get } def
> /getQ { Qcharge exch get } def
> /getR { Radius exch get } def
> /xStart \iB\space getX def
> /yStart \iB\space getY def
> /pasX \iB\space getQ dup abs Div 0.05 mul def
> /xP xStart pasX \iA\space cos mul add def
> /yP yStart pasX \iA\space sin mul add def
> }]{\FieldLinesFourElectricCharges
> /xP xP dX add def /yP yP dY add def xP yP }%
> }
> \pscustom{
> \code{
> /Qcharge [\Qcharge] def
> /NoQ \NoQ\space 1 sub def
> /Xcoor [ \Xcoor ] def
> /Ycoor [ \Ycoor ] def
> /getX { Xcoor exch get } def
> /getY { Ycoor exch get } def
> /getQ { Qcharge exch get } def
> 0 1 NoQ { /i exch def
> i getX i getY \ScreenCoor\space 10 i getQ abs mul 0 360 arc
> gsave i getQ 0 gt {1 0 0}{0 0 1}ifelse setrgbcolor fill grestore
> stroke
> } for
> }}
> }
> \end{pspicture*}
> \end{center}
>
> \end{document}
>
--------------------------------------------------------------------------------
> _______________________________________________
> PSTricks mailing list
> PSTricks at tug.org
> http://tug.org/mailman/listinfo/pstricks
> archive: http://www.tug.org/pipermail/pstricks/
More information about the PSTricks
mailing list