summaryrefslogtreecommitdiff
path: root/app/mpg/1987/doc/PLOTBOOK.ELA
blob: 57f34376b2e290b2d485160e5de918c196c7c1da (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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
#type ("basker12")##limit (16.0)##block# 
 
#head# 
#type ("triumb18")# 
#center#EUMEL-Grafik-System 
#type ("basker12")# 
#end# 
                                               #on("italics")#gescheit, gescheiter, 
                                               gescheitert#off("italics")# 
 
#type ("basker14")# 
#on("bold")#Beschreibung der Graphik-Prozeduren#off("bold")# 
#type ("basker12")# 
 
      #on("italics")#Zweidimensionale PICTURE brauchen weniger Speicherplatz als dreidimen-
      sionale. Daher werden in einigen Fehlermeldungen unterschiedliche Größen
      angegeben.#off("italics")# 
 
#on("underline")#Picture-Prozeduren#off("underline")# 
PICTURE 
 
 
:= 
   OP := (PICTURE VAR l, PICTURE CONST r) 
   Zweck: Zuweisung 
 
CAT 
   OP CAT (PICTURE VAR l, PICTURE CONST r) 
   Zweck: Aneinanderfügen von zwei PICTURE. 
   Fehlerfälle: 
       * left dimension <> right dimension 
         Es können nur PICTURE mit gleicher Dimension angefügt werden. 
       * Picture overflow 
         Die beiden PICTURE überschreiten die maximale Größe eines
         PICTURE. 
 
nilpicture 
   PICTURE PROC nilpicture 
   Zweck: Die Prozedur liefert ein leeres PICTURE zur Initialisierung. 
 
draw 
   PROC draw (PICTURE VAR p, TEXT CONST text) 
   Zweck: Der angegebene Text wird gezeichnet. Der Anfang ist dabei die aktuelle
          Stiftposition, die nicht verändert wird. 
   Fehlerfälle: 
       * Picture overflow 
         Der Text paßt nicht mehr in das PICTURE. 
 
  PROC draw (PICTURE VAR p, TEXT CONST text, REAL CONST angle,
  height, bright) 
   Zweck: Der angegebene Text wird unter dem Winkel #on("italics")#angle#off("italics")# gegenüber der
          Waagerechten mit der Zeichenhöhe #on("italics")#hight#off("italics")# und der Breite #on("italics")#bright#off("italics")# gezeich-
          net. Der Anfang ist dabei die aktuelle Stiftposition, die nicht verändert
          wird. 
   Fehlerfälle: 
       * Picture overflow 
         Der Text paßt nicht mehr in das PICTURE. 
 
   PROC draw (PICTURE VAR p, REAL CONST x, y, z) 
   Zweck: Zeichnen einer Linie von der aktuellen Position zur Position (x, y, z). 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is two dimensional 
 
   PROC draw (PICTURE VAR p, REAL CONST x, y) 
   Zweck: Zeichnen einer Linie von der aktuellen Position zur Position (x, y). 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is three dimensional 
 
draw r PROC draw r (PICTURE VAR p, REAL CONST x, y, z) 
   Zweck: Zeichnen einer Linie der Länge (x, y, z) relativ zur aktuellen Position. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is two dimensional 
 
   PROC draw r (PICTURE VAR p, REAL CONST x, y) 
   Zweck: Zeichnen einer Linie der Länge (x, y) relativ zur aktuellen Position. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is three dimensional 
 
draw cm 
  PROC draw cm (PICTURE VAR p, REAL CONST x, y) 
   Zweck: Zeichnen einer Linie von der aktuellen Position zur Position (x, y) cm.
          Dabei werden die angegebenen Projektionsparameter nicht beachtet,
          sondern die Angaben in #on("bold")#Zentimeter#off("bold")# berechnet. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
 
draw cm r 
   PROC draw cm r (PICTURE VAR p, REAL CONST x, y) 
   Zweck: Zeichnen einer Linie der Länge (x, y) cm relativ zur aktuellen Position.
          Dabei werden die angegebenen Projektionsparameter nicht beachtet,
          sondern die Angaben in #on("bold")#Zentimeter#off("bold")# berechnet. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
 
move 
   PROC move (PICTURE VAR p, REAL CONST x, y, z) 
   Zweck: Die aktuelle Position wird auf (x, y, z) gesetzt. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is two dimensional 
 
   PROC move (PICTURE VAR p, REAL CONST x, y) 
   Zweck: Die aktuelle Position wird auf (x, y) gesetzt. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is three dimensional 
 
move r 
   PROC move r (PICTURE VAR p, REAL CONST x, y, z) 
   Zweck: Die aktuelle Position wird um (x, y, z) erhöht. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is two dimensional 
 
   PROC move r (PICTURE VAR p, REAL CONST x, y) 
   Zweck: Die aktuelle Position wird um (x, y) erhöht. 
          Position. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is three dimensional 
 
move cm 
  PROC move cm (PICTURE VAR p, REAL CONST x, y) 
   Zweck: Die aktuelle Position wird auf (x, y) cm gesetzt. Dabei werden die an-
          gegebenen Projektionsparameter nicht beachtet, sondern die Angaben in #on("bold")#
          Zentimeter#off("bold")# berechnet. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
 
move cm r 
   PROC move cm r (PICTURE VAR p, REAL CONST x, y) 
   Zweck: Die aktuelle Position wird um (x, y) cm erhöht. Dabei werden die an-
          gegebenen Projektionsparameter nicht beachtet, sondern die Angaben in #on("bold")#
          Zentimeter#off("bold")# berechnet. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
 
bar 
   PROC bar (PICTURE VAR p, REAL CONST width, hight, INT CONST
   pattern): 
   Zweck: Die Prozedur zeichnet an der aktuellen Position einen Balken mit dem
              Muster #on("italics")#pattern#off("italics")#: 0  =  Leerer Balken 
              1  =  Gepunkteter Balken 
              2  =  Gefüllter Balken 
              3  =  Horizontale Linien 
              4  =  Vertikale Linien 
              5  =  Gekreuzte Linien 
              6  =  Diagonale Linien von Links nach Rechts 
              7  =  Diagonale Linien von Rechts nach Links 
              8  =  Gekreuzte diagonale Linien. 
          Die aktuelle Stiftposition wird dabei nicht verändert. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is three dimensional 
       * Unknown pattern 
         Das angegebene Muster liegt nicht im Bereich 0-8 
 
circle 
   PROC circle (PICTURE VAR p, REAL CONST from, to, INT CONST
   pattern) 
   Zweck: Die Prozedur zeichnet an der aktuellen Position ein Kreissegment vom
          Winkel #on("italics")#from#off("italics")# bis #on("italics")#to#off("italics")# (im Gradmaß) mit dem Muster #on("italics")#pattern#off("italics")# (s.o.). Die
          aktuelle Stiftposition wird dabei nicht verändert. 
   Fehlerfälle: 
       * Picture overflow 
         Zu viele Befehle in einem PICTURE 
       * Picture is three dimensional 
       * Unknown pattern 
         Das angegebene Muster liegt nicht im Bereich 0-8 
 
dim 
   INT PROC dim (PICTURE CONST pic) 
   Zweck: Liefert die Dimension eines PICTURE. 
 
pen 
   INT PROC pen (PICTURE CONST p) 
   Zweck: Liefert den virtuellen Stift des PICTURE 
 
   PROC pen (PICTURE VAR p, INT CONST pen) 
   Zweck: Setzen des (virtuellen) Stiftes eines PICTURE. Bei pen=0 wird das
          Picture nicht gezeichnet. 
   Fehlerfälle: 
       * pen out of range 
         Der gewünschte Stift ist kleiner als 0 oder größer als 16. 
 
extrema 
   PROC extrema (PICTURE CONST p, REAL VAR x min, x max, y min, y
   max) 
   Zweck: Die Prozedur liefert die größten und kleinsten Werte des PICTURE. 
   Fehlerfälle: 
       * Picture is three dimensional 
 
   PROC extrema (PICTURE CONST p, REAL VAR x min, x max, y min, y
                                           max, z min, z max) 
   Zweck: Die Prozedur liefert die größten und kleinsten Werte des PICTURE. 
   Fehlerfälle: 
       * Picture is two dimensional 
 
where 
   PROC where (PICTURE CONST p, REAL VAR x, y, z) 
   Zweck: Die Prozedur liefert die aktuelle Stiftposition (Angaben mit #on("italics")#cm#off("italics")# werden
          dabei nicht berücksichtigt). 
   Fehlerfälle: 
       * Picture is two dimensional 
 
   PROC where (PICTURE CONST p, REAL VAR x, y, z) 
   Zweck: Die Prozedur liefert die aktuelle Stiftposition (Angaben mit #on("italics")#cm#off("italics")# werden
          dabei nicht berücksichtigt). 
   Fehlerfälle: 
       * Picture is three dimensional 
 
rotate: 
   PROC rotate (PICTURE VAR p, REAL CONST angle) 
   Zweck: Das PICTURE wird um den Punkt (0, 0) um den Winkel #on("italics")#angle#off("italics")# (im
          Gradmaß) im mathematisch positiven Sinn gedreht. 
          Dabei werden nur die Werte von #on("italics")#draw, draw r, move #off("italics")# und #on("italics")#move r#off("italics")#
          verändert. 
 
   PROC rotate (PICTURE CONST p, REAL CONST phi, theta, lambda ) :
   PICTURE 1-397 
   Zweck: Das PICTURE wird um den Winkel #on("italics")#lambda#off("italics")# um die Drehachse #on("italics")#(phi,
          theta)#off("italics")# gedreht. 
          Dabei werden nur die Werte von #on("italics")#draw, draw r, move #off("italics")# und #on("italics")#move r#off("italics")#
          verändert. 
 
stretch 
   PROC stretch (PICTURE VAR pic, REAL CONST sx, sy) 
   Zweck: Das PICTURE wird in X-Richtung um den Faktor #on("italics")#sx#off("italics")#, in Y-Rich-
          tung um den Faktor #on("italics")#sy#off("italics")# gestreckt (bzw. gestaucht). Dabei bewirkt der
          Faktor 
              s > 1    eine Streckung 
          0 < s < 1    eine Stauchung 
              s < 0    zusätzlich eine Achsenspiegelung. 
          Dabei werden nur die Werte von #on("italics")#draw, draw r, move #off("italics")# und #on("italics")#move r#off("italics")#
          verändert. 
   Fehlerfälle: 
       * Picture is three dimensional 
 
   PROC stretch (PICTURE VAR p, REAL CONST sx, sy, sz) 
   Zweck: s. o. 
   Fehlerfälle: 
       * Picture is two dimensional 
 
translate 
   PROC translate (PICTURE VAR p, REAL CONST dx, dy) 
   Zweck: Das PICTURE wird um #on("italics")#dx#off("italics")# und #on("italics")#dy#off("italics")# verschoben. 
          Dabei werden nur die Werte von #on("italics")#draw, draw r, move #off("italics")# und #on("italics")#move r#off("italics")#
          verändert. 
   Fehlerfälle: 
       * Picture is three dimensional 
 
   PROC translate (PICTURE VAR p, REAL CONST dx, dy, dz) 
   Zweck: s. o. 
   Fehlerfälle: 
       * Picture is two dimensional 
 
plot PROC plot (PICTURE CONST p) 
   Zweck: Das Picfile wird gezeichnet. 
          Achtung: Es wird kein #on("italics")#begin plot#off("italics")# oder #on("italics")#end plot#off("italics")# durchgeführt. Es wird
                   auch kein Stift gsetzt und die Projektionsparameter bleiben
                   unverändert. 
 
 
#on("underline")#Graphische PICFILE-Prozeduren#off("underline")# 
plot 
  PROC plot (TEXT CONST name) 
  Zweck: Der PICFILE mit dem Namen #on("italics")#name#off("italics")# wird entsprechend der angegebenen
         Darstellungsart gezeichnet. Diese Parameter (#on("italics")#perspective, orthographic,
         oblique, view, window etc.#off("italics")#) müssen vorher eingestellt werden. 
  Fehlerfälle: 
      * PICFILE does not exist 
        Es existiert kein PICFILE mit dem Namen #on("italics")#name#off("underline")# 
 
  PROC plot (PICFILE VAR p) 
  Zweck: Der PICFILE #on("italics")#p#off("italics")# wird entsprechend der angegebenen Darstellungsart ge-
         zeichnet. Diese Parameter müssen vorher eingestellt werden: 
 
         #on("bold")#zweidimensional:#off("bold")# 
         obligat:        #on("italics")#window#off("italics")#            (zweidimensional) 
         optional:       #on("italics")#view#off("italics")#              (zweidimensional) 
                         #on("italics")#viewport#off("italics")# 
                         #on("italics")#select pen#off("italics")# 
 
         #on("bold")#dreidimensional:#off("bold")# 
         obligat:        #on("italics")#window#off("italics")#            (dreidimensional) 
         optional:       #on("italics")#view#off("italics")#              (dreidimensional) 
                         #on("italics")#orthographic | perspective | oblique#off("italics")# 
                         #on("italics")#viewport#off("italics")# 
                         #on("italics")#select pen#off("italics")# 
 
 
select pen 
  PROC select pen (PICFILE VAR p, INT CONST pen, colour, thickness, line
  type, 
                                  BOOL VAR hidden lines) Zweck: Für die
         Darstellung des Bildes #on("italics")#p#off("italics")# soll dem #on("italics")#virtuellen#off("italics")# Stift #on("italics")#pen#off("italics")# ein realer Stift
         zugeordnet werden, der möglichst die Farbe #on("italics")#colour#off("italics")# und die Dicke #on("italics")#thick-
         ness#off("italics")# hat und dabei Linien mit dem Typ #on("italics")#line type#off("italics")# zeichnet. Es wird die
         beste Annäherung für das Ausgabegerät genommen. 
         Wenn #on("italics")#hidden lines#off("italics")# auf TRUE gesetzt wird, werden bei dreidimensionalen
         Zeichnungen die verdeckten Linien mitgezeichnet, ansonsten werden sie
         unterdrückt. Um sicherzustellen, das der Algorithmus auch funktioniert,
         müssen die Linien allerdings von vorn nach hinten gezeichnet werden. Es
         ist also nicht möglich, das Bild so zu drehen, das die hinteren Linien
         zuerst gezeichnet werden. 
         Dabei gelten folgende Vereinbarungen: 
 
         #on("bold")#Farbe:#off("bold")# Negative Farben werden XOR gezeichnet (dunkel wird hell und
                hell wird dunkel), Farbe 0 ist der Löschstift und positive Farben
                überschreiben (ersetzen) den alten Punkt mit folgenden Werten: 
 
                1      Standardfarbe des Endgerätes 
                2      rot 
                3      blau 
                4      grün 
                5      schwarz 
                6      weiß 
                > 6    nicht normierte Sonderfarben 
 
 
         #on("bold")#Dicke:#off("bold")# 0 Standardstrichstärke des Endgerätes, ansonsten Strichstärke in
                1/10 mm. 
 
 
         #on("bold")#Linientyp:#off("bold")# 
                0      keine sichtbare Linie 
                1      durchgängige Linie 
                2      gepunktete Linie 
                3      kurz gestrichelte Linie 
                4      lang gestrichelte Linie 
                5      Strichpunktlinie 
                > 5    nicht normierte Linie 
 
         #on("bold")#Verdeckte Linien:#off("bold")# 
                TRUE   Verdeckte Linien werden mitgezeichnet 
                FALSE  Verdeckte Linien werden unterdrückt (nur bei drei-
                       dimensionalen PICTURE) 
 
         Die hier aufgeführten Möglichkeiten müssen nicht an allen graphischen
         Endgeräten vorhanden sein. Der geräteabhängige Graphik-Treiber wählt
         jeweils die bestmögliche Annäherung. 
 
  Fehlerfälle: 
      * pen out of range 
        #on("italics")#pen#off("italics")# muss im Bereich 1-16 sein. 
 
background 
  PROC background (PICFILE VAR p, INT CONST colour) 
  Zweck: Der Hintergrund wird auf die Farbe #on("italics")#colour#off("italics")# (s.o.) gesetzt wenn möglich. 
 
  INT PROC background (PICFILE CONST p): 
  Zweck: Liefert die eingestellte Hintergrundfarbe. 
 
view 
  PROC view (PICFILE VAR p, REAL CONST alpha) 
  Zweck: Setzt den Winkel der Y-Achse zur Senkrechten auf #on("italics")#alpha#off("italics")# Grad, falls
         diese nicht senkrecht zur Betrachtungsebene steht. 
 
  PROC view (PICFILE VAR p, REAL CONST phi, theta) 
  Zweck: Dreidimensionale Bilder werden häufig nicht direkt von vorne dargestellt,
         sondern für die Betrachtung gedreht. Mit der Prozedur #on("italics")#view#off("italics")# kann die
         Betrachtungsrichtung durch die Polarwinkel #on("italics")#phi#off("italics")# und #on("italics")#theta#off("italics")# (im Gradmass)
         angegeben werden. Voreingestellt ist #on("italics")#phi#off("italics")# = 0 und #on("italics")#theta#off("bold")# = 0, d.h. senk-
         recht von oben. 
 
         Im Gegensatz zu #on("italics")#rotate#off("italics")# hat #on("italics")#view#off("italics")# keine Wirkung auf das eigentliche Bild
         (PICFILE), sondern nur auf die gewählte Darstellung. So addieren sich
         zwar aufeinanderfolgende #on("italics")#Rotationen#off("italics")#, #on("italics")#view#off("italics")# aber geht immer von der
         Nullstellung aus. Auch kann das Bild durch eine #on("italics")#Rotation#off("italics")# ganz oder
         teilweise aus oder in das Darstellungsfenster (#on("italics")#window#off("italics")# gedreht werden. Bei
         #on("italics")#view#off("italics")# verändern sich die Koordinaten der Punkte nicht, d. h. das Fenster
         wird mitgedreht. 
 
  PROC view (PICFILE VAR p, REAL CONST x, y, z) 
  Zweck: Wie oben, nur werden die Winkel nicht in Polarkoordinaten angegeben,
         sondern es wird die Blickrichtung als Vektor in Karthesischen Koordina-
         ten angegeben. (Die Länge darf ungleich 1 sein). 
 
viewport 
  PROC viewport (PICFILE VAR p, REAL CONST hormin, hormax, vertmin,
  vertmax) : 1-709 
  Zweck: Die Zeichenfläche auf dem Endgerät, auf dem das Bild dargestellt werden
         soll, wird spezifiziert. Dabei wird sowohl die Größe als auch die relative
         Lage der Zeichenfläche definiert. Der linke untere Eckpunkt der physi-
         kalischen Zeichenfläche des Gerätes hat die Koordinaten (0, 0). Die
         definierte Zeichenfläche erstreckt sich 
 
                #on("italics")#hormin   -  hormax#off("italics")#        in der Horizontalen, 
                #on("italics")#vertmin  -  vertmax#off("italics")#       in der Vertikalen. 
 
         So liegt der linke untere Eckpunkt dann bei (#on("italics")#hormin, hormax#off("italics")#), der rechte
         obere Eckpunkt bei (#on("italics")#hormax, vertmax#off("italics")#). 
 
         Damit sowohl geräteunabhängige als auch maßstabgetreue Zeichnungen
         möglich sind, können die Koordinaten in zwei Arten spezifiziert werden: 
         a)  #on("bold")#Gerätekoordinaten#off("bold")# 
             Die Koordinaten können Werte von 0.0 bis 2.0 annehmen. Dabei
             hat die kürzere Seite der physikalischen Zeichenfläche definitionsge-
             mäß die Länge 1.0. 
         b)  #on("bold")#Absolute Koordinaten#off("bold")# 
             Die Werte werden in #on("italics")#cm#off("italics")# angegeben. Dabei müssen die Maximal-
             werte aber größer als 2.0 sein, da sonst Fall a) angenommen wird. 
 
         Voreingestellt ist 
 
                viewport (0.0, 1.0, 0.0, 1.0) 
 
         d.h. das größtmögliche Quadrat, beginnend mit der linken unteren Ecke
         der physikalischen Zeichenfläche. In vielen Fällen wird diese Einstellung
         ausreichen, so daß der Anwender kein eigenes #on("italics")#viewport#off("italics")# definieren muss. 
 
         Der Abbildungsmaßstab wird durch das Zusammenspiel von #on("italics")#viewport#off("italics")# und
         #on("italics")#window#off("italics")# festgelegt (s. dort). Dabei ist insbesondere darauf zu achten, daß
         winkeltreue Darstellung nur bei gleichen X- und Y-Maßstab möglich
         ist. Da man oft quadratische Fenster (#on("italics")#window#off("italics")#) verwendet, wurde als
         Standardeinstellung auch ein quadratisches #on("italics")#viewport#off("italics")# gewählt. 
 
  Hinweis: Mit der Prozedur #on("italics")#check limit#off("italics")# aus dem PACKET #on("italics")#basis plot#off("italics")# kann die
           Überprüfung der Grenzen des eingestellten #on("italics")#viewport#off("italics")#-Bereiches ein-
           bzw. ausgeschaltet werden. Bei eingeschateter Überprüfung, werden
           Linien, die den Bereich überschreiten, am Rand abgetrennt. 
 
 
window 
  PROC window (PICFILE VAR p, REAL CONST x min, x max, y min, y max) 
  Zweck: Für die Darstellung eines zweidimensionalen Bildes wird das darzustel-
         lende Fenster definiert. Alle Bildpunkte, deren X-Koordinaten im In-
         tervall [#on("italics")#x min, x max#off("italics")#] und deren Y-Koordinaten im Bereich [#on("italics")#y min, y
         max#off("italics")#] liegen, gehören zum definierten Fenster.Vektoren, die außerhalb
         dieses Fensters liegen, gehen über die durch #on("italics")#viewport#off("italics")# Fläche hinaus
         (s.dort). 
 
         Der Darstellungsmaßstab ergibt sich als 
 
         #ub#               x max - x min               #ue# 
          horizontale Seitenlänge der Zeichenfläche 
 
 
         #ub#               y max - y min               #ue# 
           vertikale Seitenlänge der Zeichenfläche 
 
  PROC window (PICFILE VAR p, REAL CONST x min, x max, y min, y max,
                                                       z min, z max) 
 
  Zweck: Für die darstellung eines dreidimensionalen Bildes wird das darzustellende
         Fenster definiert. Alle Bildpunkte, deren X-Koordinaten im Intervall [#on("italics")#x
         min, x max#off("italics")#], deren Y-Koordinaten im Bereich [#on("italics")#y min, y max#off("italics")#] und
         deren Z-Koordinaten im Bereich [#on("italics")#z min, z max#off("italics")#] liegen, gehören zum
         definierten Fenster. Dieses dreidimensionale Fenster (#on("italics")#Quader#off("italics")#) wird ent-
         sprechend der eingestellten Projektionsart (orthographisch, perspektivisch
         oder schiefwinklig) und den Betrachtungswinkeln (s. #on("italics")#view#off("italics")#) auf die spezi-
         fizierte Zeichenfläche abgebildet. 
         Anders als im zweidimensionalen Fall ist das Problem der Maßstaäbe
         nicht mehr nur durch das Zusammenspiel von #on("italics")#window#off("italics")# und #on("italics")#viewport#off("italics")# zu
         beschreiben. Hier spielen auch die Projektionsart und Darstellungswinkel
         herein. 
 
oblique: 
  PROC oblique (PICFILE VAR p, REAL CONST a, b) 
  Zweck: Bei dem (dreidimensionalen) Bild #on("italics")#p#off("italics")# wir #on("underline")#schiefwinklig#off("underline")# als gewünschte
         Projektionsart eingestellt. Dabei ist (#on("italics")#a, b#off("italics")#) der Punkt auf der X-Y-
         Ebene, auf den der Einheitsvektor der Z-Richtung abgebildet werden
         soll. 
 
orthographic 
  PROC orthographic (PICFILE VAR p) 
  Zweck: Bei dem (dreidimensionalen) Bild #on("italics")#p#off("italics")# wir #on("underline")#orthographisch#off("underline")# als gewünschte
         Projektionsart eingestellt. Bei der orthographischen Projektion wird ein
         dreidimensionaler Körper mit parallelen Strahlen senkrecht auf der Pro-
         jektionsebene dabgebildet. 
 
perpective 
  PROC perspective (PICFILE VAR p, REAL CONST cx, cy, cz) 
  Zweck: Bei dem (dreidimensionalen) Bild #on("italics")#p#off("italics")# wir #on("underline")#perspectivisch#off("underline")# als gewünschte
         Projektionsart eingestellt. Der Punkt (#on("italics")#cx, 1/cy, cz#off("underline")#) ist der Fluchtpunkt der
         Projektion, d. h. alle Parallen zur Z-Achse schneiden sich in diesem
         Punkt. 
 
extrema 
  PROC extrema (PICFILE VAR p, REAL VAR x min, x max, y min, y max) 
  Zweck: Die Prozedur liefert die größten und kleinsten Werte des PICFILE. 
 
  PROC extrema (PICFILE VAR p, REAL VAR x min,x max,y min,y max,z
  min,z max) : 1-651 
  Zweck: Die Prozedur liefert die größten und kleinsten Werte des PICFILE. 
 
 
#on("underline")#Prozeduren zur Manipulation von PICFILE#off("underline")# 
:= 
  OP := (PICFILE VAR p, DATASPACE CONST d) 
  Zweck: Assoziert die PICFILE Variable #on("italics")#p#off("italics")# mit dem Datenraum #on("italics")#d#off("italics")# und initialisiert
         die Variable, wenn nötig. 
  Fehlerfälle: 
      * dataspace is no PICFILE 
        Der anzukoppelnde Datenraum hat einen unzulässigen Typ 
 
picture file 
  DATASPACE PROC picture file (TEXT CONST name) 
  Zweck: Assoziaten eines benannten Datenraumes mit einem PICFILE (s.o.). 
 
put 
  PROC put (FILE VAR f, PICFILE VAR p) 
  Zweck: Schreibt den Inhalt eines PICFILE in ein FILE. Die Informationen
         werden im internen Format abgelegt. 
 
get 
  PROC get (PICFILE VAR p, FILE VAR f) 
  Zweck: Liest den Inhalt eines PICFILE aus einem FILE. Die Informationen
         müssen mit #on("italics")#put#off("italics")# geschrieben worden sein. 
  Fehlerfall: 
      *  Picfile overflow 
         Es können nur maximal 1024 Picture (Sätze) in einem PICFILE abgelegt
         werden. 
 
to first pic 
  PROC to first pic (PICFILE VAR p) 
  Zweck: Positioniert auf das erste PICTURE. 
 
to eof 
  PROC to last pic (PICFILE VAR p) 
  Zweck: Positioniert hinter das letzte PICTURE. 
 
to pic 
  PROC to pic (PICFILE VAR p, INT CONST pos) 
  Zweck: Positioniert auf das PICTURE Nummer #on("italics")#pos#off("italics")#. 
  Fehlerfälle: 
      *  Position underflow 
         Es wurde eine Position kleiner Null angegeben. *  Position after
         eof Es wurde versucht, hinter das Ende eines PICFILE zu positionieren 
 
up 
  PROC up (PICFILE VAR p) 
  Zweck: Positioniert genau ein PICTURE zurück. 
  Fehlerfall: 
      *  Position underflow 
         Es wurde versucht, vor das erste PICTURE zu positionieren 
 
  PROC up (PICFILE VAR p, INT CONST n) 
  Zweck: Positioniert genau #on("italics")#n#off("italics")# Picture zurück. 
  Fehlerfall: 
      *  Position underflow 
         Es wurde versucht, vor das erste PICTURE zu positionieren 
 
down 
  PROC down (PICFILE VAR p) 
  Zweck: Positioniert genau ein PICTURE vorwärts. 
  Fehlerfall: 
      *  Position after eof 
         Es wurde versucht, hinter das Ende eines PICFILE zu positionieren 
 
  PROC down (PICFILE VAR p, INT CONST n) 
  Zweck: Positioniert genau #on("italics")#n#off("italics")# Picture vorwärts. 
  Fehlerfall: 
      *  Position after eof 
         Es wurde versucht, hinter das Ende eines PICFILE zu positionieren 
 
is first picture 
  BOOL PROC is first picture (PICFILE CONST p) 
  Zweck: Liefert genau dann #on("italics")#TRUE#off("italics")#, wenn das erste PICTURE erreicht ist. 
 
eof 
  BOOL PROC eof (PICFILE CONST p) 
  Zweck: Liefert genau dann #on("italics")#TRUE#off("italics")#, wenn das Ende eines PICFILE erreicht ist. 
 
picture no 
  INT PROC picture no (PICFILE CONST p) 
  Zweck: Liefert die Nummer des aktuellen PICTURE. 
 
pictures 
  INT PROC pictures (PICFILE CONST p) 
  Zweck: Liefert die Anzahl PICTURE eines PICFILE. 
 
delete picture 
  PROC delete picture (PICFILE VAR p) 
  Zweck: Löscht das aktuelle PICTURE 
 
insert picture 
  PROC insert picture (PICFILE VAR p) 
  Zweck: Fügt ein PICTURE #on("underline")#vor#off("underline")# der aktuellen Position ein. 
 
read picture 
  PROC read picture (PICFILE CONST p, PICTURE VAR pic) 
  Zweck: Liest das aktuelle PICTURE. 
 
write picture 
  PROC write picture (PICFILE VAR p, PICTURE CONST pic) 
  Zweck: Schreibt das PICTURE #on("italics")#pic#off("italics")# auf der aktuellen Position. 
 
put picture 
  PROC write picture (PICFILE VAR p, PICTURE CONST pic) 
  Zweck: Schreibt das PICTURE #on("italics")#pic#off("italics")# hinter das letzte PICTURE des PICFILE.
         Die aktuelle Position wird nicht verändert. 
 
#page# 
                                    #on("italics")#Wo wir sind, da klappt nichts, 
                                    aber wir können nicht überall sein !#off("italics")# 
 
#type ("basker14")# 
#on("bold")#Kurzbeschreibung des Graphik-Editors#off("bold")# 
#type ("basker12")# 
 
In der Kommondozeile werden folgende Informationen angezeigt: 
 
#on("revers")#LEN nnnnn                <...Name...>      DIM n  PEN nn    Picture nnnn
#off("revers")# 
 
 
Folgende Kommandos stehen zur Verfügung: 
 
  PICTURE PROC pic neu 
  PICFILE PROC picfile neu 
  PROC neu zeichnen 
 
  OP UP n         (n PICTURE up) 
  OP DOWN n       (n PICTURE down) 
  OP T n          (to PICTURE n) 
 
  PROC oblique (REAL CONST a, b) 
  PROC orthographic 
  PROC perspective (REAL CONST cx, cy, cz) 
  PROC window (BOOL CONST dev) 
  PROC window (REAL CONST x min, x max, y min, y max) 
  PROC window (REAL CONST x min, x max, y min, y max, z min, z max) 
  PROC viewport (REAL CONST h min, h max, v min, v max) 
  PROC view (REAL CONST alpha) 
  PROC view (REAL CONST phi, theta) 
  PROC view (REAL CONST x, y, z) 
 
  PROC pen (INT CONST n) 
  PROC select pen (INT CONST pen, colour, thickness, line type, BOOL CONST
  hidden) 
  PROC background (INT CONST colour) 
 
  PROC extrema pic 
  PROC extrema picfile 
  PROC selected pen 
 
  PROC rotate (REAL CONST angle) 
  PROC rotate (REAL CONST phi, theta, lambda ) 
  PROC stretch (REAL CONST sx, sy) 
  PROC stretch (REAL CONST sx, sy, sz) 
  PROC translate (REAL CONST dx, dy) 
  PROC translate (REAL CONST dx, dy, dz)