summaryrefslogtreecommitdiff
path: root/info/translations/pst-jtree/de/12-nodesandhow.tex
blob: 395db06caf25f22a5c881c943bbc607883b8be96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199

\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.