%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% This is file `pst-fourbarlinkage.tex', %% %% %% %% IMPORTANT NOTICE: %% %% %% %% Package `pst-fourbarlinkage' %% %% %% %% Jürgen Gilg & Manuel Luque & 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. %% %% %% %% DESCRIPTION: %% %% `pst-FourBarLinkage' is a PSTricks tools %% %% Package to draw four-bar linkage and centrodes %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname PSTFourbarlinkage\endcsname \let\PSTFourbarlinkage\endinput % Require PSTricks \ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi \ifx\PSTXKeyLoaded\endinput\else\input pst-xkey\fi \def\fileversion{0.01} \def\filedate{2025/12/19} \message{`PST-fourbarlinkage' v\fileversion, \filedate\space (hv)} \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax \pst@addfams{pst-fourbarlinkage} \define@key[psset]{pst-fourbarlinkage}{barlengths}{\edef\pst@fourbarlinkage@barlengths{#1 }} \psset[pst-fourbarlinkage]{barlengths=20 32 30 15 }% a b c d (mm) classe=1 \define@key[psset]{pst-fourbarlinkage}{N}{\edef\pst@fourbarlinkage@N{#1 }} \psset[pst-fourbarlinkage]{N=360}% nombre de points \define@key[psset]{pst-fourbarlinkage}{Nmax}{\edef\pst@fourbarlinkage@Nmax{#1 }} \psset[pst-fourbarlinkage]{Nmax=360}% nombre de points maximum % maximum distance between 2 points (cm) \define@key[psset]{pst-fourbarlinkage}{dmax}{\edef\pst@fourbarlinkage@dmax{#1 }} \psset[pst-fourbarlinkage]{dmax=1}% % position du point M lié à la bielle BC % en fraction de BC=b \define@key[psset]{pst-fourbarlinkage}{posM}{\edef\pst@fourbarlinkage@posM{#1 }} \psset[pst-fourbarlinkage]{posM=0.5 0}% \define@boolkey[psset]{pst-fourbarlinkage}[Pst@sfourbarlinkage@]{crossed}[true]{} \psset[pst-fourbarlinkage]{crossed=false} \define@boolkey[psset]{pst-fourbarlinkage}[Pst@sfourbarlinkage@]{connectedpoints}[true]{} \psset[pst-fourbarlinkage]{connectedpoints=false} \define@boolkey[psset]{pst-fourbarlinkage}[Pst@sfourbarlinkage@]{centrodes}[true]{} \psset[pst-fourbarlinkage]{centrodes=false} \define@boolkey[psset]{pst-fourbarlinkage}[Pst@sfourbarlinkage@]{fixedcentrodes}[true]{} \psset[pst-fourbarlinkage]{fixedcentrodes=false} \pstheader{pst-fourbarlinkage.pro} \def\psFourBarLinkage{\def\pst@par{}\pst@object{psFourBarLinkage}} \def\psFourBarLinkage@i{% angle in degrees \begin@SpecialObj \addto@pscode{ 1 setlinejoin FourBarLinkage begin \pst@fourbarlinkage@barlengths\space /d exch def /c exch def /b exch def /a exch def /N \pst@fourbarlinkage@N def /Nmax \pst@fourbarlinkage@Nmax def /crossed \ifPst@sfourbarlinkage@crossed true \else false \fi def /centrodes \ifPst@sfourbarlinkage@centrodes true \else false \fi def /fixedcentrodes \ifPst@sfourbarlinkage@fixedcentrodes true \else false \fi def /connectedpoints \ifPst@sfourbarlinkage@connectedpoints true \else false \fi def /MM {\pst@number\psunit mul 0.1 mul} bind def % millimeter /dmax \pst@fourbarlinkage@dmax MM def /Fourbar [a b c d] def \pst@fourbarlinkage@posM /hBC exch b mul MM def /dB exch b mul MM def /xA 0 def /yA 0 def /xD { d MM } def /yD 0 def /xB {a t2 cos mul MM } def /yB {a t2 sin mul MM } def /xC {d c t4 cos mul add MM} def /yC {c t4 sin mul MM} def % % milieu de BC /xI {xB xC add 2 div} def /yI {yB yC add 2 div} def % le point M lié à la bielle BC /xM {xB dB t3 cos mul add hBC t3 90 add cos mul add} def /yM {yB dB t3 sin mul add hBC t3 90 add sin mul add} def % centre instantané de rotation (centrode) /xyCIR {xA yA xB yB xC yC xD yD InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse} def % Cas particulier /xyCIR1 {xA yA xB yB xC yC xD yD InterLines} def % % determiner les barres de même longueur /nS [] def % courte /nL [] def % longue 0 1 3 {/j exch def Fourbar j get S eq {nS [j] append /nS exch def} if Fourbar j get L eq {nL [j] append /nL exch def} if } for % Fourbar-classify % class 1 eq class 3 eq or class 11 eq or class 13 eq or { /t3min 0 def % / /arct2 [t3min 1 N {/i exch def a c neg d b i cos mul sub b neg i sin mul FourBar-Solve exch pop} for] def /arct4 [t3min 1 N {/i exch def a c neg d b i cos mul sub b neg i sin mul FourBar-Solve pop } for ] def /Arct2 [t3min 1 Nmax {/i exch def a c neg d b i cos mul sub b neg i sin mul FourBar-Solve exch pop} for] def /Arct4 [t3min 1 Nmax {/i exch def a c neg d b i cos mul sub b neg i sin mul FourBar-Solve pop } for ] def /curveM [ t3min 1 N {/i exch def a c neg d b i cos mul sub b neg i sin mul FourBar-Solve /t3 i def /t2 exch def /t4 exch def xM yM} for ] def /centrode [t3min 1 N {/i exch def a c neg d b i cos mul sub b neg i sin mul FourBar-Solve /t3 i def /t2 exch def /t4 exch def xyCIR } for ] def /fixedcentrode [0 1 Nmax {/i exch def a c neg d b i cos mul sub b neg i sin mul FourBar-Solve /t3 i def /t2 exch def /t4 exch def xyCIR } for ] def /movingcentrode [0 1 Nmax {/i exch def a c neg d b i cos mul sub b neg i sin mul FourBar-Solve /t3 i def /t2 exch def /t4 exch def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def a c neg d b N cos mul sub b neg N sin mul FourBar-Solve /t2 exch def /t4 exch def /t3 N def } if class 2 eq class 12 eq or { /t2min 0 def /arct2 [t2min 1 N {}for] def /arct4 [t2min 1 N {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve pop} for ] def /Arct2 [t2min 1 Nmax {}for] def /Arct4 [t2min 1 Nmax {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve pop} for ] def /curveM [ t2min 1 N {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xM yM} for ] def /centrode [ t2min 1 N {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xyCIR} for ] def /fixedcentrode [ t2min 1 Nmax {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xyCIR} for ] def /movingcentrode [0 1 Nmax {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t2 N def b c neg d a t2 cos mul sub a neg t2 sin mul FourBar-Solve /t3 exch def /t4 exch def } if class 4 eq { /t4min 0 def /arct2 [ t4min 1 N {/i exch def a b c i cos mul d add c i sin mul FourBar-Solve exch pop } for ] def /arct4 [ t4min 1 N {} for] def /Arct2 [ t4min 1 Nmax {/i exch def a b c i cos mul d add c i sin mul FourBar-Solve exch pop } for ] def /Arct4 [ t4min 1 Nmax {} for] def /curveM [t4min 1 N {/i exch def a b c i cos mul d add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xM yM } for ] def /centrode [t4min 1 N {/i exch def a b c i cos mul d add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xyCIR } for ] def /fixedcentrode [t4min 1 Nmax {/i exch def a b c i cos mul d add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xyCIR } for ] def /movingcentrode [t4min 1 Nmax {/i exch def a b c i cos mul d add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def a b c N cos mul d add c N sin mul FourBar-Solve /t2 exch def /t3 exch def /t4 N def } if class 5 eq { /t2min a dup mul d dup mul add b c add dup mul sub 2 a mul d mul div arccos neg def /t2max t2min neg def /dt t2max t2min sub def /T2max t2min dt Nmax div N mul add def /arct2 [t2min 1 T2max {}for] def /arct4 [t2min 1 T2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve pop} for ] def /Arct2 [t2min 1 t2max {}for] def /Arct4 [t2min 1 t2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve pop} for ] def /curveM [t2min 1 T2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xM yM } for ] def /centrode [t2min 1 T2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xyCIR } for ] def /fixedcentrode [t2min 1 t2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xyCIR } for ] def /movingcentrode [t2min 1 t2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t2 T2max def b c neg d a t2 cos mul sub a neg t2 sin mul FourBar-Solve /t3 exch def /t4 exch def } if class 6 eq { /t4min d dup mul c dup mul add a b add dup mul sub 2 c mul d mul div arccos neg 180 add def /t4max t4min neg 360 add def /dt t4max t4min sub def /T4max t4min dt 360 div N mul add def /arct4 [t4min 1 T4max {}for] def /arct2 [t4min 1 T4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve exch pop} for ] def /Arct4 [t4min 1 t4max {}for] def /Arct2 [t4min 1 t4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve exch pop} for ] def /curveM [t4min 1 T4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xM yM } for ] def /centrode [t4min 1 T4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xyCIR } for ] def /fixedcentrode [t4min 1 t4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xyCIR } for ] def /movingcentrode [t4min 1 t4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t4 t4min dt 360 div N mul add def a b d c t4 cos mul add c t4 sin mul FourBar-Solve /t2 exch def /t3 exch def } if class 7 eq { /t4min d dup mul c dup mul add a b sub dup mul sub 2 c mul d mul div arccos 180 sub def /t4max t4min neg def /dt t4max t4min sub def /T4max t4min dt Nmax div N mul add def /arct4 [t4min 1 T4max {}for] def /arct2 [t4min 1 T4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve exch pop} for ] def /Arct4 [t4min 1 t4max {}for] def /Arct2 [t4min 1 t4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve exch pop} for ] def /curveM [t4min 1 T4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xM yM } for ] def /centrode [t4min 1 T4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xyCIR } for ] def /fixedcentrode [t4min 1 t4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xyCIR } for ] def /movingcentrode [t4min 1 t4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t4 t4min dt 360 div N mul add def a b d c t4 cos mul add c t4 sin mul FourBar-Solve /t2 exch def /t3 exch def } if class 8 eq { /t2min a dup mul d dup mul add b c sub dup mul sub 2 a mul d mul div arccos def /t2max t2min neg 360 add def /dt t2max t2min sub def /T2max t2min dt Nmax div N mul add def /arct2 [t2min 1 T2max {}for] def /arct4 [t2min 1 T2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve pop} for ] def /Arct2 [t2min 1 t2max {}for] def /Arct4 [t2min 1 t2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve pop} for ] def /curveM [t2min 1 T2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xM yM} for ] def /centrode [t2min 1 T2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xyCIR } for ] def /fixedcentrode [t2min 1 t2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xyCIR } for ] def /movingcentrode [t2min 1 t2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t2 T2max def b c neg d a t2 cos mul sub a neg t2 sin mul FourBar-Solve /t3 exch def /t4 exch def } if class 9 eq { /t4min c dup mul d dup mul add b a sub dup mul sub 2 c mul d mul div arccos 180 sub def /t4max t4min neg def /dt t4max t4min sub def /T4max t4min dt 360 div N mul add def /arct4 [t4min 1 T4max {}for] def /arct2 [t4min 1 T4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve exch pop} for ] def /Arct4 [t4min 1 t4max {}for] def /Arct2 [t4min 1 t4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve exch pop} for ] def /curveM [t4min 1 T4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xM yM } for ] def /centrode [t4min 1 T4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xyCIR } for ] def /fixedcentrode [t4min 1 t4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def xyCIR } for ] def /movingcentrode [t4min 1 t4max {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t4 i def /t2 exch def /t3 exch def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t4 t4min dt 360 div N mul add def a b d c t4 cos mul add c t4 sin mul FourBar-Solve /t2 exch def /t3 exch def } if class 10 eq { /t2min a dup mul d dup mul add b c sub dup mul sub 2 a mul d mul div arccos def /t2max t2min neg 360 add def /dt t2max t2min sub def /T2max t2min dt Nmax div N mul add def /arct2 [t2min 1 T2max {}for] def /arct4 [t2min 1 T2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve pop} for b c neg d a t2max cos mul sub a neg t2max sin mul FourBar-Solve pop] def /Arct2 [t2min 1 t2max {}for] def /Arct4 [t2min 1 t2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve pop} for b c neg d a t2max cos mul sub a neg t2max sin mul FourBar-Solve pop] def /curveM [t2min 1 T2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xM yM} for] def /centrode [t2min 1 T2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xyCIR } for] def /fixedcentrode [t2min 1 t2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def xyCIR } for] def /movingcentrode [t2min 1 t2max {/i exch def b c neg d a i cos mul sub a neg i sin mul FourBar-Solve /t2 i def /t3 exch def /t4 exch def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t2 t2min dt Nmax div N mul add def b c neg d a t2 cos mul sub a neg t2 sin mul FourBar-Solve /t3 exch def /t4 exch def } if class 14 eq { /t4min 0 def /t4max Nmax def /arct4 [t4min 1 N {}for] def /arct2 [t4min 1 N {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve exch pop} for ] def /Arct4 [t4min 1 Nmax {}for] def /Arct2 [t4min 1 Nmax {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve exch pop} for ] def /curveM [t4min 1 N {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t2 exch def /t3 exch def /t4 i def xM yM} for] def /centrode [t4min 1 N {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t2 exch def /t3 exch def /t4 i def xyCIR } for] def /fixedcentrode [t4min 1 Nmax {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t2 exch def /t3 exch def /t4 i def xyCIR } for] def /movingcentrode [t4min 1 Nmax {/i exch def a b d c i cos mul add c i sin mul FourBar-Solve /t2 exch def /t3 exch def /t4 i def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t4 N def a b d c t4 cos mul add c t4 sin mul FourBar-Solve /t2 exch def /t3 exch def } if class 15 eq { /arct2 [0 1 N{}for] def /arct4 [0 1 N {/i exch def i 2 div sin a mul b div arcsin i 2 div add } for] def /Arct2 [0 1 Nmax {}for] def /Arct4 [0 1 Nmax {/i exch def i 2 div sin a mul b div arcsin i 2 div add } for] def /curveM [0 1 N {/i exch def /t2 i def /t4 i 2 div dup sin a mul b div arcsin add def /t3 i 2 div dup sin a mul b div arcsin sub def xM yM} for] def /centrode [0 1 N {/i exch def /t2 i def /t4 i 2 div sin a mul b div arcsin i 2 div add def /t3 i 2 div dup sin a mul b div arcsin sub def xyCIR } for] def /fixedcentrode [0 1 Nmax {/i exch def /t2 i def /t4 i 2 div dup sin a mul b div arcsin add def /t3 i 2 div dup sin a mul b div arcsin sub def xyCIR } for] def /movingcentrode [0 1 Nmax {/i exch def /t2 i def /t4 i 2 div dup sin a mul b div arcsin add def /t3 i 2 div dup sin a mul b div arcsin sub def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t2 N def /t4 N 2 div dup sin a mul b div arcsin add def /t3 N 2 div dup sin a mul b div arcsin sub def } if class 16 eq { /arct2 [0 1 N {}for] def /arct4 [0 1 N {/i exch def 180 2 i sin a mul d a i cos mul sub atan mul sub } for] def /Arct2 [0 1 Nmax {}for] def /Arct4 [0 1 Nmax {/i exch def 180 2 i sin a mul d a i cos mul sub atan mul sub } for] def /curveM [0 1 N {/i exch def /t4 180 2 i sin a mul d a i cos mul sub atan mul sub def /t2 i def /t3 t4 t2 sub def xM yM} for] def /centrode [0 1 N {/i exch def /t4 180 2 i sin a mul d a i cos mul sub atan mul sub def /t2 i def /t3 t4 t2 sub def xyCIR } for] def /fixedcentrode [0 1 Nmax {/i exch def /t4 180 2 i sin a mul d a i cos mul sub atan mul sub def /t2 i def /t3 t4 t2 sub def xyCIR } for] def /movingcentrode [0 1 Nmax {/i exch def /t4 180 2 i sin a mul d a i cos mul sub atan mul sub def /t2 i def /t3 t4 t2 sub def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t2 N def /delta 2 t2 sin a mul d a t2 cos mul sub atan mul def /t4 180 delta sub def /t3 t4 t2 sub def } if class 17 eq { /t4min 0 def /t4max Nmax def /arct4 [t4min 1 N {}for] def /arct2 [0 1 N {/i exch def 2 i sin b mul a b i cos mul add atan mul } for] def /Arct4 [t4min 1 t4max{}for] def /Arct2 [0 1 t4max {/i exch def 2 i sin b mul a b i cos mul add atan mul } for] def /curveM [0 1 N {/i exch def /t4 i def /t2 2 i sin b mul a b i cos mul add atan mul def /delta 2 t4 mul t2 sub def /t3 t4 delta sub def xM yM} for] def /centrode [0 1 N {/i exch def /t4 i def /t2 2 i sin b mul a b i cos mul add atan mul def /delta 2 t4 mul t2 sub def /t3 t4 delta sub def xyCIR } for] def /fixedcentrode [0 1 Nmax {/i exch def /t4 i def /t2 2 i sin b mul a b i cos mul add atan mul def /delta 2 t4 mul t2 sub def /t3 t4 delta sub def xyCIR } for] def /movingcentrode [0 1 Nmax {/i exch def/t4 i def /t2 2 i sin b mul a b i cos mul add atan mul def /delta 2 t4 mul t2 sub def /t3 t4 delta sub def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t4 N def /t2 2 b t4 sin mul a b t4 cos mul add atan mul def /delta 2 t4 mul t2 sub def /t3 t4 delta sub def } if class 18 eq { /t4min 0 def /t4max Nmax def /arct4 [0 1 N {}for] def /arct2 [0 1 N {/i exch def 0.5 180 2 d i 2 div cos mul a div arcsin mul sub i add mul} for] def /Arct4 [0 1 Nmax {}for] def /Arct2 [0 1 Nmax {/i exch def 0.5 180 2 d i 2 div cos mul a div arcsin mul sub i add mul} for] def /curveM [0 1 N {/i exch def /t2 0.5 180 2 d i 2 div cos mul a div arcsin mul sub i add mul def /t4 i def /delta 2 d t4 2 div cos mul a div arcsin mul def /t3 t4 t2 sub def xM yM} for ] def /centrode [0 1 N {/i exch def /t2 0.5 180 2 d i 2 div cos mul a div arcsin mul sub i add mul def /t4 i def /delta 2 d t4 2 div cos mul a div arcsin mul def /t3 t4 t2 sub def xyCIR } for ] def /fixedcentrode [0 1 Nmax {/i exch def /t2 0.5 180 2 d i 2 div cos mul a div arcsin mul sub i add mul def /t4 i def /delta 2 d t4 2 div cos mul a div arcsin mul def xyCIR } for ] def /movingcentrode [0 1 Nmax {/i exch def /t4 i def /Delta 2 d t4 2 div cos mul a div arcsin mul def /t2 180 Delta sub t4 add 2 div def /t3 t4 t2 sub def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for ] def /t4 N def /Delta 2 d t4 2 div cos mul a div arcsin mul def /t2 180 Delta sub t4 add 2 div def /t3 t4 t2 sub def } if class 19 eq { /t2min 0 def /t2max Nmax def /t2 N def /parallelogram {/t exch def /r d a t cos mul sub def /s t sin a mul neg def /p b def /q c neg def /D r dup mul s dup mul add p dup mul q dup mul add sub 2 p mul q mul div def t sin 0 lt { /delta D arccos def } { /delta D arccos neg def } ifelse /A p q D mul add def /B q delta sin mul def /t3 A s mul B r mul sub A r mul B s mul add arctan def /t4 t3 delta add def } def crossed { % N parallelogram /arct4 [0 1 N { parallelogram t4 }for] def /Arct4 [0 1 Nmax { parallelogram t4 }for] def /curveM [0 1 N{/i exch def /t2 i def i parallelogram xM yM} for ] def /centrode [0 1 N{/i exch def /t2 i def i parallelogram xyCIR} for ] def /fixedcentrode [0 1 Nmax {/i exch def /t2 i def i parallelogram xyCIR} for ] def /movingcentrode [0 1 Nmax {/i exch def /t2 i def i parallelogram t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for] def N parallelogram /t2 N def } { /t3 0 def /t4 N def /arct4 [t2min 1 N {}for] def /Arct4 [t2min 1 Nmax {}for] def /curveM [0 1 N{/i exch def /t2 i def /t3 0 def /t4 t2 def xM yM} for ] def /centrode [0 1 N{/i exch def /t2 i def /t3 0 def /t4 t2 def xyCIR } for ] def /fixedcentrode [0 1 Nmax {/i exch def /t2 i def /t3 0 def /t4 t2 def xyCIR } for ] def /movingcentrode [0 1 Nmax {/i exch def /t2 i def /t3 0 def /t4 t2 def t3 0 0 MovRef t3 xB yB MovRef t3 xC yC MovRef t3 xD yD MovRef InterLines /yInter exch def /xInter exch def xInter 0 eq yInter 0 eq and {}{xInter yInter} ifelse } for] def /t3 0 def /t4 N def /t2 N def } ifelse /arct2 [t2min 1 t2 {}for] def /Arct2 [t2min 1 Nmax {}for] def } if % FourbarDraw connectedpoints { 0.8 setlinewidth a MM Arct2 0 get cos mul a MM Arct2 0 get sin mul moveto 1 1 Arct2 length 1 sub {/j exch def a MM Arct2 j get cos mul a MM Arct2 j get sin mul lineto } for 0.75 setgray stroke d MM c MM Arct4 0 get cos mul add c MM Arct4 0 get sin mul moveto 1 1 Arct4 length 1 sub {/j exch def d MM c MM Arct4 j get cos mul add c MM Arct4 j get sin mul lineto } for stroke 1.25 setlinewidth a MM arct2 0 get cos mul a MM arct2 0 get sin mul moveto 1 1 arct2 length 1 sub {/j exch def a MM arct2 j get cos mul a MM arct2 j get sin mul lineto } for 0 0.8 0 setrgbcolor stroke d MM c MM arct4 0 get cos mul add c MM arct4 0 get sin mul moveto 1 1 arct4 length 1 sub {/j exch def d MM c MM arct4 j get cos mul add c MM arct4 j get sin mul lineto } for 0.9 0 0 setrgbcolor stroke 1 0.5 0 setrgbcolor %curveI 0 get curveI 1 get moveto %2 2 curveI length 2 sub {/j exch def curveI j get curveI j 1 add get lineto} for stroke curveM 0 get curveM 1 get moveto 2 2 curveM length 2 sub {/j exch def curveM j get curveM j 1 add get lineto} for stroke fixedcentrodes { 0.5 setgray 0 2 fixedcentrode length 4 sub {/j exch def /x1 fixedcentrode j get def /y1 fixedcentrode j 1 add get def /x2 fixedcentrode j 2 add get def /y2 fixedcentrode j 3 add get def x2 x1 sub dup mul y2 y1 sub dup mul add sqrt dmax le {x1 y1 moveto x2 y2 lineto} if } for stroke 0 2 movingcentrode length 4 sub {/i exch def /xtemp movingcentrode i get def /ytemp movingcentrode i 1 add get def /x1 xtemp t3 cos mul ytemp t3 sin mul sub xI add def /y1 xtemp t3 sin mul ytemp t3 cos mul add yI add def /xtemp movingcentrode i 2 add get def /ytemp movingcentrode i 3 add get def /x2 xtemp t3 cos mul ytemp t3 sin mul sub xI add def /y2 xtemp t3 sin mul ytemp t3 cos mul add yI add def x2 x1 sub dup mul y2 y1 dup sub mul add sqrt dmax le {x1 y1 moveto x2 y2 lineto} if } for 1.5 setlinewidth 1 0 0.5 setrgbcolor stroke } if centrodes { 0 0 0.8 setrgbcolor 1.5 setlinewidth 0 2 centrode length 4 sub {/j exch def /x1 centrode j get def /y1 centrode j 1 add get def /x2 centrode j 2 add get def /y2 centrode j 3 add get def x2 x1 sub dup mul y2 y1 sub dup mul add sqrt dmax le{x1 y1 moveto x2 y2 lineto} if } for stroke gsave 0.5 setgray [3 3] 0 setdash xB yB moveto xyCIR1 lineto stroke xC yC moveto xyCIR1 lineto stroke grestore gsave 1 setgray xyCIR1 0.4 MM 0 360 arc fill 0 setgray xyCIR1 0.4 MM 0 360 arc stroke grestore } if }{ 0.75 setgray 0 1 Arct2 length 1 sub {/j exch def a MM Arct2 j get cos mul a MM Arct2 j get sin mul 0.75 0 360 arc fill } for 0 1 Arct4 length 1 sub {/j exch def d MM c MM Arct4 j get cos mul add c MM Arct4 j get sin mul 0.75 0 360 arc fill } for 0.9 0 0 setrgbcolor 0 1 arct4 length 1 sub {/j exch def d MM c MM arct4 j get cos mul add c MM arct4 j get sin mul 0.75 0 360 arc fill } for %1.25 setlinewidth 0 0.8 0 setrgbcolor 0 1 arct2 length 1 sub {/j exch def a MM arct2 j get cos mul a MM arct2 j get sin mul 0.75 0 360 arc fill } for 1 0.5 0 setrgbcolor % 0 2 curveI length 2 sub {/j exch def curveI j get curveI j 1 add get 0.75 0 360 arc fill} for 0 2 curveM length 2 sub {/j exch def curveM j get curveM j 1 add get 0.75 0 360 arc fill} for centrodes { 0 0 0.8 setrgbcolor 0 2 centrode length 2 sub {/j exch def centrode j get centrode j 1 add get 0.75 0 360 arc fill} for gsave 0.5 setgray [3 3] 0 setdash xB yB moveto xyCIR1 lineto stroke xC yC moveto xyCIR1 lineto stroke grestore gsave 1 setgray xyCIR1 0.4 MM 0 360 arc fill 0 setgray xyCIR1 0.4 MM 0 360 arc stroke grestore } if fixedcentrodes { 0 0 1 setrgbcolor 0 2 fixedcentrode length 2 sub {/j exch def fixedcentrode j get fixedcentrode j 1 add get 0.75 0 360 arc fill} for % 1 0 0.5 setrgbcolor 0 2 movingcentrode length 2 sub {/i exch def /xtemp movingcentrode i get def /ytemp movingcentrode i 1 add get def /x1 xtemp t3 cos mul ytemp t3 sin mul sub xI add def /y1 xtemp t3 sin mul ytemp t3 cos mul add yI add def x1 y1 0.75 0 360 arc fill } for } if } ifelse 0 setgray 0 L 1.25 mul MM neg moveto /Times-Roman findfont 12 scalefont setfont class 4 le {(Grashof )} if class 10 le class 5 ge and{(Non-Grashof )} if class 11 ge{(Special )} if (class : ) appendtring class 15 string cvs appendtring crossed {( [Crossed])}{([Open])} ifelse appendtring show end }% \end@SpecialObj \ignorespaces}% \catcode`\@=\PstAtCode\relax \endinput