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)
|