
\section Knoten und die Verbindung zwischen ihnen

\ftag{\the\secno}[nodesandhow]%
Knoten haben eine Form, ein referenz-Punkt und einen Namen. \pstnode\ erlaubt dem Benutzer box, elliptisch, rund und Punkt-Knoten zu definieren. Zus\"atzlich zu der Form haben Knoten ein Referenzpunkt. Er ist in der Mitte des elliptischen, runden oder punkt-Knotens. Er kann auch in der Mitte eines Box-Knotens sein aber f\"ur Box-Knoten gibt es auch noch andere Optionen: die Enden und Zentren der Ecken und Basislinien. \pstnode\ hat eine Vielzahl an Befehlen, die es erlauben, verschiedenste Verbindungen zwischen Knoten zu zeichnen. Wie die Verbindung aussehen soll, kann durch verschiedene Parameter (linewidth, linestyle, arrows, etc.) festgelegt werden. Der am meist n\"utzliche Befehl um eine Verbindung zu zeichnen lautet |\nccurve|. Im nachfolgenden wird genau darauf eingegangen, wie |\nccurve| arbeitet.

\medskip
Angenommen es gibt ein Box-Knoten und ein Punkt-Knoten wie unten zu sehen. Die Punkte stellen die Referenzpunkte dar.
\bigskip

\def\templabel{\rput(0,1){\rput(0,2ex){A}}}
\def\goop{\psframebox[boxsep=false,framesep=0,linecolor=gray]
   {\vrule width0pt height1\psunit depth.5\psunit
      \hskip\psunit \pnode{QQ}\templabel\hskip\psunit}}

\psset{unit=1.2cm}
\hfil \pspicture(0,0)(9,2.8)%\psgrid
\pnode(8,0){B}
\pnode(8,0){Q}
\rput(8,0){\rput(0,02ex){B}}
\rput[B](1,1){\rnode[B]{A}{\goop}}
\SpecialCoor
\qdisk(Q){2pt}
\qdisk(QQ){2pt}
\endpspicture

\bigskip
Die Abbildung unten zeigt wie
\medskip
\hfil|\nccurve[angleA=50,angleB=110]{A}{B}|
\medskip
gezeichnet wird.
\bigskip

\let\templabel=\relax

\hfil \pspicture(-.4,0)(8,3)%\psgrid
\pnode(8,0){B}
\pnode(8,0){Q}
\rput[B](1,1){\rnode[B]{A}{\goop}}
\SpecialCoor
\qdisk(Q){2pt}
\qdisk(QQ){2pt}
\psset{nodesep=0}
\nccurve[angleA=50,angleB=110]{A}{B}
\psline[style=dotted](Q)([angle=110,nodesep=2.8]Q)
\psline[style=dotted](QQ)([angle=50,nodesep=2.8]QQ)
\psline[style=dotted](QQ)([angle=0,nodesep=.6]QQ)
\psline[style=dotted](Q)([angle=0,nodesep=.6]Q)
\psarc{->}(Q){.5}{0}{110}
\psarc{->}(QQ){.5}{0}{50}
\rput[bl]([angle=25,nodesep=.6]QQ){\tenpoint$50^\circ$}
\rput[bl]([angle=55,nodesep=.6]Q){\tenpoint$110^\circ$}
\endpspicture
\bigskip

Diese einfache Abbildung kann durch eine Nummer von Parametern ver\"andert werden. Zus\"atzlich zu den gew\"ohnlichen Parametern wie |linewidth|, |linestyle| und |arrows| die festlegen wie eine geometrische Linie gezeichnet wird, gibt es 6 weitere Parameter, die die Form der Linie direkt beeinflu\ss\/en: |ncurvA|, |ncurvB|, |nodesepA|, |nodesepB|, |offsetA| und |offsetB|. Die Parameter k\"onnen einzeln oder in paaren ge\"andert werden. |\psset{nodesep=«x\/»}| impliziert |\psset{nodesepA=«x\/»,nodesepB=«x\/»}|. |ncurv| und |offset| arbeiten auf die selbe Weise. Wir werden die Parameter nacheinander untersuchen.

\medskip Mit |\psset{nodesepA=«x\/»}|
wird die Dimension der Knoten-Box um {\sl

x\/} ver\"andert, bevor die Linie berechnet wird.

\def\Goop{\psframebox[boxsep=false,framesep=\dimpubb,linecolor=gray]
      {\goop}}
%\def\Goop{\psframebox[boxsep=false,framesep=\dimpubb,style=dotted]
%      {\goop}}
%\dimpuba=.5\psunit
\dimpubb=.2\psunit
\bigskip
\hfil \pspicture(-.2,0)(8,3)%\psgrid
\pnode(8,0){B}
\pnode(8,0){Q}
\rput[B](1,1){\rnode[B]{A}{\Goop}}
\nccurve[angleA=50,angleB=110,%nodesepB=\dimpuba,
   nodesepA=\dimpubb,nodesepB=0]{A}{B}
\SpecialCoor
\psline[style=dotted](Q)([angle=110,nodesep=3]Q)
\psline[style=dotted](QQ)([angle=50,nodesep=2.6]QQ)
\qdisk(Q){2pt}
\qdisk(QQ){2pt}
\endpspicture
\bigskip

Der Effekt von |ncurv| ist raffiniert. Man kann sich vorstellen, das die Linie in die Richtung der Pfeile (siehe unten) ``gezogen'' wird. Mit |ncurv| gibt man die St\"arke an mit der man zieht. Der standard-Wert ist $.67$. Die Abbildung unten zeigt ein paar Einstellungen von |ncurv|.

\bigskip
\hfil \pspicture(-.2,0)(8,4.1)%\psgrid
\pnode(8,0){B}
\pnode(8,0){Q}
\rput[B](1,1){\rnode[B]{A}{\Goop}}
\psset{angleA=50,angleB=110,nodesepA=\dimpubb,
   nodesepB=0,labelsep=3pt}
\nccurve[ncurv=.4]{A}{B}
\bput(.35){\tenrm .4}
\nccurve[ncurv=.67]{A}{B}
\bput(.35){\tenrm .67}
\nccurve[ncurv=1]{A}{B}
\bput(.35){\tenrm 1}
\nccurve[ncurv=1.4]{A}{B}
\bput(.4){\tenrm 1.4}
\SpecialCoor
\psline[style=dotted]{->}(Q)([angle=110,nodesep=4]Q)
\psline[style=dotted]{->}(QQ)([angle=50,nodesep=4]QQ)
\qdisk(Q){2pt}
\qdisk(QQ){2pt}
\endpspicture
\bigskip

Das ist eine einfache Illustration zur Benutzung von |ncurv|. Es gibt ein Schriftsatz-Problem mit dem Zeiger unten welches behoben werden muss.\par\nobreak

\excentered
\CLboxed
\jtree[unit=2em]
\! = :{A}@A :{B} {C}@C .
\nccurve[angleA=210,angleB=-80]{->}{C}{A}
\endjtree
|endCLboxed
\hfil
\jtree[unit=2em]
\! = :{A}@A :{B} {C}@C .
\nccurve[angleA=210,angleB=-80]{->}{C}{A}
\endjtree
\xe

Eine M\"oglichkeit zur L\"osung des Problems besteht darin, den Wert des |ncurv| Parameters zu erh\"ohen.

\excentered
\CLboxed
\jtree[unit=2em,nodesep=.6ex]
\! = :{A}@A :{B} {C}@C .
\nccurve[angleA=210,angleB=-80,
   ncurv=1.1]{->}{C}{A}
\endjtree
|endCLboxed
\hfil
\jtree[unit=2em,nodesep=.6ex]
\! = :{A}@A :{B} {C}@C .
\nccurve[angleA=210,angleB=-80,
   ncurv=1.1]{->}{C}{A}
\endjtree
\bigskip
\xe

|\psset{ncurv=«x\/»}| hat den selben Effekt wie |\psset{ncurvA=«x\/»,ncurvB=«x\/»}|. Manchmal ist es vorteilhaft den Parametern verschiedene Werte zu geben. Experimente mit den Werten werden Ihnen schnell ein Gef\"uhl f\"ur diese Einstellung geben.

\medskip

Zuletzt kommen wir zu den 2 Offset Parametern. Mit |\psset{offsetA=«x\/»}| wird der Anfangs-Punkt um die Distanz {\sl x\/} senkrecht zur Anfangs-Richtung versetzt. Die Richtung ist links falls {\sl x\/} positiv ist.

%\dimpuba=.5\psunit
%\dimpubb=.2\psunit
\bigskip
\hfil \pspicture(-.2,0)(8,3.4)%\psgrid
\pnode(8,0){B}
\pnode(8,0){Q}
\rput[B](1,1){\rnode[B]{A}{\Goop}}
\SpecialCoor
\psline[style=dotted](Q)([angle=110,nodesep=3]Q)
\pnode([angle=50,nodesep=3]QQ){L1}
\psline[style=dotted](QQ)(L1)
\qdisk(Q){2pt}
\qdisk(QQ){2pt}
\pnode(2.007,2.2){Z}
\rput([angle=140,nodesep=.3]Z){\pnode{Z2}}
\nccurve[angleA=50,angleB=110,nodesep=0]{Z2}{B}
\psline[style=dotted](Z)([angle=140,nodesep=1]Z)
\psline[style=dotted]([angle=140,nodesep=.3]L1)%
   ([angle=140,nodesep=.3]QQ)
\endpspicture
\bigskip

Mit |\psset{offsetB=«x\/»}| wird der End-Punkt um die Distanz {\sl x\/} senkrecht zur end- Richtung versetzt. Denk daran, da\ss\ die end- Richtung auf den Knoten zeigt und nicht entlang der Linie.

\medskip
Das ist eine einfache Anwendung, die f\"ur einige spezielle Schwerpunkte angebracht sein k\"onnte. \par\nobreak

\excentered
\CLboxed
\jtree[xunit=3em,yunit=2em]
\! = :{A}@A {B} <vert>{C}@C .
\psset{angleA=-90,angleB=180}
\nccurve[offsetA=.5ex]{->}{A}{C}
\nccurve[offsetA=-.5ex]{A}{C}
\endjtree
|endCLboxed
\hfil
\jtree[xunit=3em,yunit=2em]
\! = :{A}@A {B} <vert>{C}@C .
\psset{angleA=-90,angleB=180}
\nccurve[offsetA=.5ex]{->}{A}{C}
\nccurve[offsetA=-.5ex]{A}{C}
\endjtree
\xe

Dieses Konstrukt wird einige male in Beispiel 
\gettag[Chung2] in Abschnitt 14 verwendet. %6 im Abschnitt 14 verwendet.


