%% BEGIN pst-coil.doc \def\fileversion{0.93a} \def\filedate{93/03/12} %% %% For stroking and filling characters with PSTricks' line and fill styles. %% %% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU %% See pstricks.doc or pstricks.tex for copying restrictions. %% %% See the PSTricks read-me file and the User's Guide for documentation. % % ************************************************************************** % This is `pst-coil.doc'. Use as is, or create a header file and stripped % input file with pst-make.tex. See the PSTricks read-me file for details. % ************************************************************************** \message{ v\fileversion, \filedate} \csname PSTcoilsLoaded\endcsname \let\PSTcoilsLoaded\endinput \ifx\PSTricksLoaded\endinput\else \def\next{\input pstricks.tex}\expandafter\next \fi \edef\TheAtCode{\the\catcode`\@} \catcode`\@=11 \pst@ATH<\% Version \fileversion, \filedate.> \pst@ATH<\% For use with \pstdriver.> \pst@ATH \ifx\pst@useheader\iftrue \pstheader{pst-coil.pro} \edef\pst@theheaders{\pst@theheaders,pst-coil.pro} \def\pst@coildict{tx@CoilDict begin } \else \def\pst@coildict{% /tx@CoilDict where { pop tx@CoilDict begin} { userdict begin /tx@CoilDict 40 dict def end tx@CoilDict begin } ifelse } \fi \def\psset@coilwidth#1{\pst@getlength{#1}\psk@coilwidth} \psset@coilwidth{1cm} \def\psset@coilheight#1{\pst@checknum{#1}\pscoilheight} \psset@coilheight{1} \def\psset@coilarmA#1{\pst@getlength{#1}\psk@coilarmA} \def\psset@coilarmB#1{\pst@getlength{#1}\psk@coilarmB} \def\psset@coilarm#1{% \pst@getlength{#1}\psk@coilarmA \let\psk@coilarmB\psk@coilarmA} \psset@coilarm{.5cm} \def\psset@coilaspect#1{\pst@getangle{#1}\psk@coilaspect} \psset@coilaspect{45} \def\psset@coilinc#1{\pst@getangle{#1}\psk@coilinc} \psset@coilinc{10} \def\pscoil{\def\pst@par{}\pst@object{pscoil}} \def\pscoil@i{\pst@getarrows\pscoil@ii} \def\pscoil@ii(#1){% \@ifnextchar(% {\pscoil@iii{1}(#1)}% {\pscoil@iii{\z@}(0,0)(#1)}} \def\pscoil@iii#1(#2)(#3){% \begin@OpenObj \pst@getcoor{#2}\pst@tempa \pst@getcoor{#3}\pst@tempb \pst@optcp{#1}\pst@tempa \addto@pscode{% \pst@tempa \pst@tempb \psk@coilwidth \pscoilheight \psk@coilarmA \psk@coilarmB \psk@coilaspect \psk@coilinc \pst@coildict \tx@Coil end}% \showpointsfalse \end@OpenObj} \pst@def{CoilLoop}<% /t ED t sin AspectSin mul t 180 div AspectCos mul add t cos lineto> \pst@def{Coil}<% /Inc ED dup sin /AspectSin ED cos /AspectCos ED /ArmB ED /ArmA ED /h ED /w ED /y1 ED /x1 ED /y0 ED /x0 ED x0 y0 translate y1 y0 sub x1 x0 sub 2 copy \tx@Pyth /TotalLength ED \tx@Atan rotate /BeginAngle ArmA AspectCos \tx@Div w h mul \tx@Div 360 mul def /EndAngle TotalLength ArmB sub AspectCos \tx@Div w h mul \tx@Div 360 mul def 1 0 0 0 ArrowA ArmA 0 lineto /mtrx CM def w h mul 2 \tx@Div w 2 \tx@Div scale BeginAngle Inc EndAngle { \tx@CoilLoop } for EndAngle \tx@CoilLoop mtrx setmatrix TotalLength ArmB sub 0 lineto CP TotalLength 0 ArrowB lineto> \def\psCoil{\def\pst@par{}\pst@object{psCoil}} \def\psCoil@i#1#2{% \begin@AltOpenObj \showpointsfalse \pst@getangle{#1}\pst@tempa \pst@getangle{#2}\pst@tempb \addto@pscode{% \pst@tempa \pst@tempb \psk@coilwidth \pscoilheight \psk@coilaspect \psk@coilinc \pst@coildict \tx@AltCoil end \@nameuse{psls@\pslinestyle}}% \end@OpenObj} \pst@def{AltCoil}<% /Inc ED dup sin /AspectSin ED cos /AspectCos ED /h ED /w ED /EndAngle ED /BeginAngle ED /mtrx CM def w h mul 2 \tx@Div w 2 \tx@Div scale BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc EndAngle { \tx@CoilLoop } for EndAngle \tx@CoilLoop mtrx setmatrix> \def\pszigzag{\def\pst@par{}\pst@object{pszigzag}} \def\pszigzag@i{\pst@getarrows\pszigzag@ii} \def\pszigzag@ii(#1){% \@ifnextchar({\pszigzag@iii{1}(#1)}{\pszigzag@iii{\z@}(0,0)(#1)}} \def\pszigzag@iii#1(#2)(#3){% \begin@OpenObj \pst@getcoor{#2}\pst@tempa \pst@getcoor{#3}\pst@tempb \pst@optcp{#1}\pst@tempa \addto@pscode{% \pst@tempa \pst@tempb \pscoilheight \psk@coilwidth \psk@coilarmA \psk@coilarmB \pst@coildict \tx@ZigZag end \psline@iii \tx@Line}% \end@OpenObj} \pst@def{ZigZag}<% /ArmB ED /ArmA ED 2 div /w ED w mul /h ED /y1 ED /x1 ED /y0 ED /x0 ED x1 y1 translate y0 y1 sub x0 x1 sub 2 copy \tx@Pyth /TotalLength ED \tx@Atan rotate TotalLength ArmA sub ArmB sub dup h div cvi /n ED n h mul sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED /x ArmB h 2 div add def mark 0 0 ArmB 0 n { x w /w w neg def /x x h add def } repeat TotalLength ArmA sub 0 TotalLength 0> \def\nccoil{\def\pst@par{}\pst@object{nccoil}} \def\nccoil@i{\check@arrow{\nccoil@ii}} \def\nccoil@ii#1#2{\nc@object{#1}{#2}{.5}{% \tx@NCCoor tx@Dict begin \psk@coilwidth \pscoilheight \psk@coilarmA \psk@coilarmB \psk@coilaspect \psk@coilinc \pst@coildict \tx@Coil end end}} \def\pccoil{\def\pst@par{}\pst@object{pccoil}} \def\pccoil@i{\pc@object\nccoil@ii} \def\nczigzag{\def\pst@par{}\pst@object{nczigzag}} \def\nczigzag@i{\check@arrow{\nczigzag@ii}} \def\nczigzag@ii#1#2{\nc@object{#1}{#2}{.5}{% \tx@NCCoor tx@Dict begin \pscoilheight \psk@coilwidth \psk@coilarmA \psk@coilarmB \pst@coildict \tx@ZigZag end \psline@iii \tx@Line end}} \def\pczigzag{\def\pst@par{}\pst@object{pczigzag}} \def\pczigzag@i{\pc@object\nczigzag@ii} \pst@ATH \catcode`\@=\TheAtCode\relax \endinput %% END pst-coil.doc