[pstricks] doesn't work the way it should

Germi Camps gcampsbarjau at gmail.com
Mon Mar 27 01:47:48 CEST 2006


i've tried your solution but still can't do what I pretend

I need to calculate the rotation of a figure (just some text), and also 
calculate the point to put that text,and I can't understand what 
happens: the thing is that the calculation of the coordinate is well 
writen, because if I trie it without calculating the rotation angle, 
PSTricks puts the text exactly where I want. but then if I calcule the 
rotation angle as you suggest me to do, then PSTricks does the angle OK, 
but not the position this time, so I don't know what to do...I have 
tried to use gsave and grestore but I've observed that they don't modify 
anything. the code is (in this case the angle is well calculated, but 
not the position):

\multido{\n=0.2+0.2}{2}{
\def\rad{\n}
\def\ics{1}
 \rput[bl](! \rad\space 2 exp 1 sub \ics\space 2 exp add
\rad\space 1 add 2 exp \ics\space 2 exp add div \radi\space mul 2
\ics\space mul \rad\space 1 add 2 exp \ics\space 2 exp add div
\radi\space mul){\pstVerb{\rad\space 2 exp 1 sub \ics\space 2 exp
add \rad\space 1 add 2 exp \ics\space 2 exp add div \radi\space mul
2 \ics\space mul \rad\space 1 add 2 exp \ics\space 2 exp add div
\radi\space mul \ics\space 2 mul \rad\space 1 add 2 exp \ics\space 2
exp add div \rad\space 2 exp neg \rad\space 2 mul sub \ics\space 2
exp add 1 sub \rad\space 1 add 2 exp \ics\space 2 exp add \rad\space
1 add mul atan rotate} \scalebox{0.75}{\textbf{\tiny\n}} } }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




Viewing the output of this is unusefull whitout viewing the context, so 
here is the whole code of the graphic I'm triyng to do, 
\SmithChart{<radius>}, including the redefinition of \psarc you wrote 
and the rest of the code. the conflictive part now is at the end of the 
code. thanks!

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\SpecialCoor \makeatletter

\def\psarc at iii(#1)#2#3#4{%
  \begin at OpenObj
    \def\pst at tempa{#3}
    \def\pst at tempb{#4}
    \pst@@getcoor{#1}%
    \def\pst at tempA{#2}%
    \addto at pscode{\psarc at iv \psarc at v}%
    \gdef\psarc at type{0}%
    \showpointsfalse
  \end at OpenObj%
}
\def\psarc at iv{%
  \pst at coor /y ED /x ED
  /r \pst at tempA\space \pst at number\psunit mul def
  /c 57.2957 r \tx at Div def
  /angleA
    \pst at tempa
    \psk at arcsepA c mul 2 div
    \ifcase \psarc at type add \or sub \fi
  def
  /angleB
    \pst at tempb
    \psk at arcsepB c mul 2 div
    \ifcase \psarc at type sub \or add \fi
  def
  \ifshowpoints\psarc at showpoints\fi
  \ifx\psk at arrowA\@empty
    \ifnum\psk at liftpen=2
      r angleA \tx at PtoC
      y add exch x add exch moveto
    \fi
  \fi}


\makeatother



\def\SmithChart#1{
\def\radi{#1}
\def\arcsmith{
\rput(0,0){ \psarc(!\rad\space 1 \rad\space add div \radi\space mul 0)%
  { 1 1 \rad\space add div \radi\space mul }
  { \ics\space 2 mul \rad\space 1 add 2 exp \ics\space 2 exp add div 
\rad\space 2 exp 1 sub \ics\space 2 exp add \rad\space 1 add 2 exp 
\ics\space 2 exp add div \rad\space 1 \rad\space add div sub atan }
  { \ics\space 2 mul neg \rad\space 1 add 2 exp \ics\space 2 exp add div 
\rad\space 2 exp 1 sub \ics\space 2 exp add \rad\space 1 add 2 exp 
\ics\space 2 exp add div \rad\space 1 \rad\space add div sub atan }
}}

\def\arcsmithfin{
\rput(0,0){ \psarc(!\rad\space 1 \rad\space add div \radi\space mul 0)%
  { 1 1 \rad\space add div \radi\space mul }
  { 0 }
  { 360 }
}}

\def\arcsmithb{
\rput(0,0){
\psarc(!\rad\space 1 \rad\space add div \radi\space mul 0)%
  { 1 1 \rad\space add div \radi\space mul }
  { \ics\space 2 mul \rad\space 1 add 2 exp \ics\space 2 exp add div 
\rad\space 2 exp 1 sub \ics\space 2 exp add \rad\space 1 add 2 exp 
\ics\space 2 exp add div \rad\space 1 \rad\space add div sub atan }
  { \icsb\space 2 mul \rad\space 1 add 2 exp \icsb\space 2 exp add div 
\rad\space 2 exp 1 sub \icsb\space 2 exp add \rad\space 1 add 2 exp 
\icsb\space 2 exp add div \rad\space 1 \rad\space add div sub atan }
}

\rput(0,0){
\psarc(!\rad\space 1 \rad\space add div \radi\space mul 0)%
  { 1 1 \rad\space add div \radi\space mul }
  { \icsb\space 2 mul neg \rad\space 1 add 2 exp \icsb\space 2 exp add 
div \rad\space 2 exp 1 sub \icsb\space 2 exp add \rad\space 1 add 2 exp 
\icsb\space 2 exp add div \rad\space 1 \rad\space add div sub atan }
  { \ics\space 2 mul neg \rad\space 1 add 2 exp \ics\space 2 exp add div 
\rad\space 2 exp 1 sub \ics\space 2 exp add \rad\space 1 add 2 exp 
\ics\space 2 exp add div \rad\space 1 \rad\space add div sub atan }
}}

\def\arcsmithc{
\rput(0,0){
\psarc(!\radi\space 1 \ics\space div \radi\space mul)%
  { 1 \ics\space div \radi\space mul }
  { \ics\space 2 mul \ics\space 2 exp 1 add div 1 \ics\space div 
sub      1 \ics\space 2 exp sub \ics\space 2 exp 1 add neg div 1 sub atan }
  { \ics\space 2 mul \rad\space 1 add 2 exp \ics\space 2 exp add div 1 
\ics\space div sub \rad\space 2 exp 1 sub \ics\space 2 exp add 
\rad\space 1 add 2 exp \ics\space 2 exp add div 1 sub atan }
}
\rput(0,0){
\psarc(!\radi\space 1 \ics\space div \radi\space mul neg)%
  { 1 \ics\space div \radi\space mul }
  { \ics\space 2 mul \rad\space 1 add 2 exp \ics\space 2 exp add div 1 
\ics\space div sub neg \rad\space 2 exp 1 sub \ics\space 2 exp add 
\rad\space 1 add 2 exp \ics\space 2 exp add div 1 sub atan }
  { \ics\space 2 mul \ics\space 2 exp 1 add div 1 \ics\space div sub 
neg     1 \ics\space 2 exp sub \ics\space 2 exp 1 add neg div 1 sub atan }
}}

\def\arcsmithcfin{
\rput(0,0){
\psarc(!\radi\space 1 \ics\space div \radi\space mul)%
  { 1 \ics\space div \radi\space mul }
  { \ics\space 2 mul \ics\space 2 exp 1 add div 1 \ics\space div 
sub      1 \ics\space 2 exp sub \ics\space 2 exp 1 add neg div 1 sub atan }
  { 270 }
} \rput(0,0){
\psarc(!\radi\space 1 \ics\space div \radi\space mul neg)%
  { 1 \ics\space div \radi\space mul }
  { 90 }
  { \ics\space 2 mul \ics\space 2 exp 1 add div 1 \ics\space div sub 
neg     1 \ics\space 2 exp sub \ics\space 2 exp 1 add neg div 1 sub atan }
}}

\def\arcsmithd{
\rput(0,0){
\psarc(!\radi\space 1 \ics\space div \radi\space mul)%
  { 1 \ics\space div \radi\space mul }
  { \ics\space 2 mul \radb\space 1 add 2 exp \ics\space 2 exp add div 1 
\ics\space div sub \radb\space 2 exp 1 sub \ics\space 2 exp add 
\radb\space 1 add 2 exp \ics\space 2 exp add div 1 sub atan }
  { \ics\space 2 mul \rad\space 1 add 2 exp \ics\space 2 exp add div 1 
\ics\space div sub \rad\space 2 exp 1 sub \ics\space 2 exp add 
\rad\space 1 add 2 exp \ics\space 2 exp add div 1 sub atan }
} \rput(0,0){
\psarc(!\radi\space 1 \ics\space div \radi\space mul neg)%
  { 1 \ics\space div \radi\space mul }
  { \ics\space 2 mul \rad\space 1 add 2 exp \ics\space 2 exp add div 1 
\ics\space div sub neg \rad\space 2 exp 1 sub \ics\space 2 exp add 
\rad\space 1 add 2 exp \ics\space 2 exp add div 1 sub atan }
  { \ics\space 2 mul \radb\space 1 add 2 exp \ics\space 2 exp add div 1 
\ics\space div sub neg \radb\space 2 exp 1 sub \ics\space 2 exp add 
\radb\space 1 add 2 exp \ics\space 2 exp add div 1 sub atan }
}}

\rput(-0.1432,0){\psset{linewidth=.25pt}
\def\rad{1}
\def\radb{0.5}
\multido{\n=0.05+0.10}{5}{
\def\ics{\n}
\arcsmithd }

\def\rad{0.5}
\multido{\n=0.02+0.02}{25}{
\def\ics{\n}
\arcsmithc }

\def\rad{0.2}
\multido{\n=0.01+0.02}{10}{
\def\ics{\n}
\arcsmithc }

\def\rad{1}
\multido{\n=0.55+0.10}{5}{
\def\ics{\n}
\arcsmithc }

\def\rad{2}
\multido{\n=0.1+0.2}{10}{
\def\ics{\n}
\arcsmithc }

\def\rad{5}
\multido{\n=0.2+0.2}{25}{
\def\ics{\n}
\arcsmithc }

\def\rad{50}
\multido{\n=10+10}{2}{
\def\ics{\n}
\arcsmithc }

\def\rad{20}
\multido{\n=2+2}{10}{
\def\ics{\n}
\arcsmithc }

\def\rad{10}
\multido{\n=1+2}{5}{
\def\ics{\n}
\arcsmithc }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\ics{0.5}

\multido{\n=0.02+0.02}{25}{
\def\rad{\n}
\arcsmith }

\def\ics{0.2}

\multido{\n=0.01+0.02}{10}{
\def\rad{\n}
\arcsmith }

\def\ics{5}

\multido{\n=0.2+0.2}{25}{
\def\rad{\n}
\arcsmith }

\def\ics{1}

\multido{\n=0.55+0.10}{5}{
\def\rad{\n}
\arcsmith }

\def\ics{2}

\multido{\n=0.1+0.2}{10}{
\def\rad{\n}
\arcsmith }

\def\ics{50}

\multido{\n=10+10}{4}{
\def\rad{\n}
\arcsmith }

\def\ics{20}

\multido{\n=2+2}{10}{
\def\rad{\n}
\arcsmith }

\def\ics{10}

\multido{\n=1+2}{5}{
\def\rad{\n}
\arcsmith }

\def\ics{1}
\def\icsb{0.5}

\multido{\n=0.05+0.10}{5}{
\def\rad{\n}
\arcsmithb }%

\psset{linewidth=.5pt}

\def\rad{2}
\multido{\n=0.2+0.2}{4}{
\def\ics{\n}
\arcsmithc }

\def\rad{2}
\multido{\n=1.2+0.2}{4}{
\def\ics{\n}
\arcsmithc }

\def\rad{1}
\multido{\n=0.1+0.2}{5}{
\def\ics{\n}
\arcsmithc }

\def\rad{0.2}
\multido{\n=0.05+0.10}{2}{
\def\ics{\n}
\arcsmithc }

\def\rad{20}
\multido{\n=10+10}{2}{
\def\ics{\n}
\arcsmithc }

\def\rad{5}
\multido{\n=1+1}{4}{
\def\ics{\n}
\arcsmithc }

\def\ics{5}
\def\rad{10}
\arcsmithc

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\ics{0.2}

\def\rad{0.05}
\arcsmith

\def\rad{0.15}
\arcsmith

\def\ics{1}

\multido{\n=0.1+0.2}{5}{
\def\rad{\n}
\arcsmith }


\def\ics{2}

\multido{\n=0.2+0.2}{4}{
\def\rad{\n}
\arcsmith }

\multido{\n=1.2+0.2}{4}{
\def\rad{\n}
\arcsmith }

\def\ics{5}

\multido{\n=1+1}{4}{
\def\rad{\n}
\arcsmith }

\def\ics{10}
\def\rad{5}
\arcsmith

\def\ics{20}

\multido{\n=10+10}{2}{
\def\rad{\n}
\arcsmith }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\rad{0}
\arcsmithfin
\def\rad{50}
\arcsmithfin
\def\ics{50}
\arcsmithcfin}

\psline[linewidth=.5pt](-\radi,0)(\radi,0)

\multido{\n=0.6+0.6}{2}{
\rput(-0.1432,0){\psarc[linewidth=.5pt](0,0){ \radi\space \n\space
add }{ 0 }{ 360 }}}

\multido{\n=0.3+0.6}{2}{
\rput(-0.1432,0){\psarc[linewidth=.25pt](0,0){ \radi\space \n\space
add }{ 0 }{ 360 }}}

\multido{\n=0+1.44}{250}{\psline[linewidth=.25pt](!\radi\space 0.85
add \n\space cos mul \radi\space 0.85 add \n\space sin
mul)(!\radi\space 0.95 add \n\space cos mul \radi\space 0.95 add
\n\space sin mul)}

\multido{\n=0+2}{180}{\psline[linewidth=.25pt](!\radi\space 0.3 add
\n\space cos mul \radi\space 0.3 add \n\space sin mul)(!\radi\space
0.35 add \n\space cos mul \radi\space 0.35 add \n\space sin mul)}

\multido{\n=0+7.2,\nb=0.00+0.01,\nc=90.0+7.2}{50}{\rput{\nc}(!\radi\space
0.725 add \n\space 180 add cos mul \radi\space 0.725 add \n\space
180 add sin mul){\tiny\nb}}

\multido{\n=0+7.2,\nb=0.00+0.01,\nc=90.0+{-7.2}}{50}{\rput{\nc}(!\radi\space
1.075 add 180 \n\space sub cos mul \radi\space 1.075 add 180
\n\space sub sin mul){\tiny\nb}}

\multido{\n=0+10,\nc=270+10}{19}{\rput{\nc}(!\radi\space 0.475 add
\n\space cos mul \radi\space 0.475 add \n\space sin mul){\tiny\n}}

\multido{\n=190+10,\nb=-170+10,\nc=100+10}{17}{\rput{\nc}(!\radi\space
0.475 add \n\space cos mul \radi\space 0.475 add \n\space sin
mul){\tiny\nb}}

\multido{\n=0.1+0.1}{10}{\def\rad{\n} \rput[bl]{90}(!\rad\space 1
sub \rad\space 1 add div \radi\space mul \radi\space 200 div sub
\radi\space 200 div){\scalebox{0.75}{\textbf{\tiny\n}}}}

\multido{\n=1.2+0.2}{5}{\def\rad{\n} \rput[bl]{90}(!\rad\space 1 sub
\rad\space 1 add div \radi\space mul \radi\space 200 div sub
\radi\space 200 div){\scalebox{0.75}{\textbf{\tiny\n}}}}

\multido{\n=3.0+1.0}{3}{\def\rad{\n} \rput[bl]{90}(!\rad\space 1 sub
\rad\space 1 add div \radi\space mul \radi\space 200 div sub
\radi\space 200 div){\scalebox{0.75}{\textbf{\tiny\n}}}}

\multido{\n=10+10}{2}{\def\rad{\n} \rput[bl]{90}(!\rad\space 1 sub
\rad\space 1 add div \radi\space mul \radi\space 200 div sub
\radi\space 200 div){\scalebox{0.75}{\textbf{\tiny\n}}}}

\def\rad{50} \rput[bl]{90}(!\rad\space 1 sub
\rad\space 1 add div \radi\space mul \radi\space 200 div sub
\radi\space 200 div){\scalebox{0.75}{\textbf{\tiny 50}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\multido{\n=0.2+0.2}{2}{
\def\rad{\n}
\def\ics{1}
 \rput[bl](! \rad\space 2 exp 1 sub \ics\space 2 exp add
\rad\space 1 add 2 exp \ics\space 2 exp add div \radi\space mul 2
\ics\space mul \rad\space 1 add 2 exp \ics\space 2 exp add div
\radi\space mul){\pstVerb{\rad\space 2 exp 1 sub \ics\space 2 exp
add \rad\space 1 add 2 exp \ics\space 2 exp add div \radi\space mul
2 \ics\space mul \rad\space 1 add 2 exp \ics\space 2 exp add div
\radi\space mul \ics\space 2 mul \rad\space 1 add 2 exp \ics\space 2
exp add div \rad\space 2 exp neg \rad\space 2 mul sub \ics\space 2
exp add 1 sub \rad\space 1 add 2 exp \ics\space 2 exp add \rad\space
1 add mul atan rotate} \scalebox{0.75}{\textbf{\tiny\n}} } }

}

-- 
Germinal Camps Barjau
gcampsbarjau at gmail.com
669 38 39 56
93 456 35 94
www.gratisweb.com/germicamps




More information about the PSTricks mailing list