summaryrefslogtreecommitdiff
path: root/doc/graphic
diff options
context:
space:
mode:
Diffstat (limited to 'doc/graphic')
-rw-r--r--doc/graphic/Altes Handbuch - Teil 10 - Graphik831
-rw-r--r--doc/graphic/GRAPHIK.book897
-rw-r--r--doc/graphic/graphik beschreibung661
3 files changed, 0 insertions, 2389 deletions
diff --git a/doc/graphic/Altes Handbuch - Teil 10 - Graphik b/doc/graphic/Altes Handbuch - Teil 10 - Graphik
deleted file mode 100644
index 36fa31e..0000000
--- a/doc/graphic/Altes Handbuch - Teil 10 - Graphik
+++ /dev/null
@@ -1,831 +0,0 @@
-#type ("trium10")##limit (13.5)#
-#block##start(2.5,2.5)##pagelength(21.0)##pagenr("%",418)##setcount(22)#
-#headeven#
-% EUMEL-Benutzerhandbuch
-
-
-
-#end#
-#headodd#
- TEIL 10: Graphik %
-
-
-
-#end#
-#type("triumb14")#
-#ib(9)##center#TEIL 10: Graphik#ie(9)#
-#type("trium10")#
-#free(2.0)#
-#on("bold")##ib(9)##type("triumb14")#1. Übersicht#ie(9)#
-#type("trium10")#
-
- #limit(12.0)##on("italics")#Dieser Teil des Benutzer-Handbuchs beschreibt die Graphik-
- Möglichkeiten des EUMEL-Systems. Die Graphik-Pakete ge­
- hören nicht zum EUMEL-Standard, sondern sind Anwender­
- pakete, die im Quellcode ausgeliefert und von jeder Installation
- in das System aufgenommen werden können. Unter Umständen
- müssen Programme erstellt werden, die die Anpassungen für
- spezielle graphische Geräte einer Installation vornehmen.
-#limit(13.5)##off("italics")#
-
-Das Graphik-System ermöglicht es, durch ELAN-Programme geräteunab­
-hängige Informationen für Zeichnungen ("#ib#Graphiken#ie#") zu erstellen. Die Graphik
-erzeugenden Programme brauchen dabei keine gerätespezifischen Größen sowie
-gerätespezifischen Unterprogramme zu enthalten. Sie befassen sich somit
-ausschließlich mit der Erzeugung der problemorientierten Information für die
-Konstruktion einer Zeichnung. Nach der geräteunabhängigen Erzeugung einer
-Graphik kann diese auf unterschiedlichen Geräten ausgegeben werden (z.B. erst
-auf einem Terminal zur Kontrolle und dann auf einem Plotter).
-
-Die EUMEL-Graphik umfaßt zwei- und dreidimensionale Graphik. Dabei
-entspricht die Y-Achse bei der zweidimensionalen Graphik der Z-Achse (Höhe)
-bei der dreidimensionalen Graphik. Im dreidimensionalen Fall sind perspektivi­
-sche, orthografische und schiefwinklige Projektionen mit beliebigen Betrach­
-tungswinkeln möglich.
-
-Bei der EUMEL-Graphik wird streng zwischen Erzeugung und Manipulation von
-Graphiken (Bildern) auf der einen und Darstellung der erzeugten Bilder auf der
-anderen Seite unterschieden. Für die Erzeugung und Manipulation der Graphi­
-ken existiert der Typ PICTURE, für die Darstellung der Bilder gibt es den Typ
-PICFILE. Dabei müssen Ausschnitt, Maßstab, Betrachtungswinkel und Pro­
-jektionsart erst bei der Darstellung festgelegt werden. Diese Konstruktion des
-Graphik-Systems hat folgende Vorteile:
-
-a) Programme, die Graphik-Informationen erzeugen, sind geräteunabhängig.
- Das bedeutet, daß Programmierer sich ausschließlich mit einem logischen
- Problem zu befassen brauchen und nicht mit gerätespezifischen Besonder­
- heiten.
-
-b) Graphiken können auf mehreren unterschiedlich gearteten Geräten mehrmals
- dargestellt werden, ohne daß das erzeugende Programm geändert oder neu
- gestartet werden muß. Z.B. kann ein Programmierer eine Graphik erst auf
- dem Terminal auf Richtigkeit und Größenverhältnisse überprüfen, bevor er die
- Zeichnung auf einem Plotter zeichnen läßt.
-
-c) Graphiken können leicht geändert (z.B. vergrößert oder in eine Richtung
- gestreckt) werden, ohne daß das erzeugende Programm erneut durchlaufen
- werden muß. Zudem können Graphiken aneinander oder übereinander gelegt
- werden.
-
-d) Graphiken mit unterschiedlichen Farben, Strichen usw. können leicht erzeugt
- werden.
-
-e) Der Anschluß von neuen Graphik-Geräten durch Benutzer ist leicht möglich,
- ohne daß die Graphik erzeugenden Programme modifiziert werden müssen.
-
-f) Plotter können wie Drucker an einen SPOOLER gehängt werden.
-
-g) Bilder können als PICFILEs gespeichert und versandt werden.
-#free(2.0)#
-#ib(9)##type("triumb14")#Erzeugung von Bildern#ie(9)#
-#type("trium10")#
-
-Bilder entstehen in Objekten vom Datentyp
-
-#type("modern12")#
- PICTURE
-#type("trium10")#
-
-Diese müssen mit der Prozedur
-
-#type("modern12")#
- nilpicture
-#type("trium10")#
-
-initialisiert werden. Sie enthalten dann ein leeres Bild, dessen Dimension noch
-nicht festgelegt ist. Die Dimension eines PICTUREs wird mit dem ersten
-Schreibzugriff ('move' oder 'draw') festgelegt. Ein PICTURE kann immer nur
-entweder zwei- oder dreidimensional sein. Außerdem kann einem PICTURE mit
-der Prozedur
-
-#type("modern12")#
- pen
-#type("trium10")#
-
-genau ein virtueller Stift zugeordnet oder der aktuelle Stift erfragt werden.
-
-Die Erzeugung eines Bildes basiert auf dem Modell eines Plotters. Der (virtuelle)
-Zeichenstift kann mit
-
-#type("modern12")#
- move
-#type("trium10")#
-
-ohne zu zeichnen an beliebige Stellen gefahren werden (reine Positionierung).
-Mit
-
-#type("modern12")#
- draw
-#type("trium10")#
-
-wird der Stift veranlaßt, eine Linie von der aktuellen zur angegebenen Zielposi­
-tion zu zeichnen. 'move' löst also Bewegungen mit gehobenem, 'draw' solche mit
-gesenktem Stift aus. Um auch 'relatives' Zeichnen zu ermöglichen, existiert die
-Prozedur
-
-#type("modern12")#
- where
-#type("trium10")#
-
-die die aktuelle Stiftposition liefert.
-#free(2.0)#
-#ib(9)##type("triumb14")#Manipulation von Bildern#ie(9)#
-#type("trium10")#
-
-Erstellte Bilder können als Ganzes manipuliert werden. Die Prozeduren
-
-#type("modern12")#
- translate (* verschieben *)
- stretch (* strecken bzw. stauchen *)
- rotate (* drehen *)
- reflect (* spiegeln *)
-#type("trium10")#
-
-verändern jeweils das ganze Bild. Es ist aber auch möglich, mehrere Bilder
-zusammenzufügen. Mit
-
-#type("modern12")#
- CAT
-#type("trium10")#
-
-kann ein weiteres Bild angefügt werden. Dabei müssen allerdings beide
-PICTURE die gleiche Dimension haben. In solchen als ganzes manipulierten
-Bildern kann man ohne Einschränkung mit 'draw' und 'move' weiterzeichnen.
-#free(2.0)#
-#ib(9)##type("triumb14")#Darstellung#ie(9)#
-#type("trium10")#
-
-Für die Darstellung der erzeugten Bilder existiert der Typ
-
-#type("modern12")#
- PICFILE
-#type("trium10")#
-
-Dieser besteht aus max. 128 PICTUREs, die mit den Prozeduren
-
-#type("modern12")#
- put
- get
-#type("trium10")#
-
-eingegeben bzw. ausgegeben werden können. PICFILE wird durch Datenräume
-realisiert, deshalb erfolgt die Assoziation an einen benannten Datenraum ähnlich
-wie beim FILE. Dafür wird die Prozedur
-
-#type("modern12")#
- picture file
-#type("trium10")#
-
-verwandt. Ein neuer PICFILE enthält genau ein leeres PICTURE. Die Darstellung
-der PICFILEs auf Zeichengeräten erfolgt mit der Prozedur
-
-#type("modern12")#
- plot
-#type("trium10")#
-
-Da die Graphiken aber in "Weltkoordinaten" erzeugt werden und die spätere
-Darstellung vollkommen unbeachtet bleibt, müssen gewisse Darstellungspara­
-meter für die Zeichnung gesetzt werden. Diese Parameter werden im PICFILE
-abgelegt und gelten jeweils für den gesamten PICFILE. Dadurch ist es möglich,
-einen PICFILE mit spezifizierter Darstellungsart über einen SPOOLER an einen
-Plotter zu senden oder die bei der letzten Betrachtung gewählte Darstellung mit
-in dem PICFILE gespeichert zu halten. Für die Darstellung können den virtuellen
-Stiften mit der Prozedur
-
-#type("modern12")#
- select pen
-#type("trium10")#
-
-reale Stifte zugeordnet werden. Voreingestellt ist für alle virtuellen Stifte:
-Standardfarbe, Standardstärke, durchgängige Linie.
-
-Indem man einigen virtuellen Stiften den leeren Stift als realen Stift zuordnet,
-kann man einzelne PICTUREs ausblenden. Sowohl bei der Darstellung von
-zwei- als auch dreidimensionaler Graphik kann die gewählte Zeichenfläche auf
-dem Endgerät mit der Prozedur
-
-#type("modern12")#
- viewport
-#type("trium10")#
-
-festgelegt werden. Voreingestellt ist das Quadrat mit der größtmöglichen Seiten­
-länge, d.h. der kürzeren Seite der hardwaremäßigen Zeichenfläche.
-#free(2.0)#
-#ib(9)##type("triumb14")#Darstellung zweidimensionaler Graphik#ie(9)#
-#type("trium10")#
-
-Bei der Darstellung zweidimensionaler Bilder muß der zu zeichnende Ausschnitt
-(das 'Fenster') angegeben werden. Mit der Prozedur
-
-#type("modern12")#
- window
-#type("trium10")#
-
-wird durch Angabe der minimalen und maximalen X- bzw. Y-Koordinaten ein
-Fenster definiert. Da das so definierte Fenster auf die ganze (mit 'viewport'
-definierbare) Zeichenfläche abgebildet wird, ist der Abbildungsmaßstab durch das
-Zusammenspiel von 'viewport' und 'window' bestimmt. Da bei 'viewport' stan­
-dardmäßig das maximale Zeichenquadrat voreingestellt ist, wird in diesem Fall
-durch gleiche X- und Y-Fenstergröße eine winkeltreue Darstellung erreicht.
-#free(2.0)#
-#ib(9)##type("triumb14")#Darstellung dreidimensionaler Graphik#ie(9)#
-#type("trium10")#
-
-Im dreidimensionalen Fall wird das Fenster ebenfalls mit
-
-#type("modern12")#
- window
-#type("trium10")#
-
-definiert, wobei dann allerdings auch der Bereich der dritten Dimension
-(Z-Koordinaten) zu berücksichtigen ist. Da die dreidimensionale Graphik auf
-eine zweidimensionale Fläche projiziert wird, können aber noch weitere Darstel­
-lungsparameter angegeben werden. Der Betrachtungswinkel wird mit Hilfe der
-Prozedur
-
-#type("modern12")#
- view
-#type("trium10")#
-
-angegeben. Zur Spezifikation der gewünschten Projektionsart gibt es
-
-#type("modern12")#
- orthographic (* orthographische Projektion *)
- perspective (* perspektivische Projektion,
- der Fluchtpunkt ist frei wählbar *)
- oblique (* schiefwinklige Projektion *)
-#type("trium10")#
-#free(2.0)#
-#ib(9)##type("triumb14")#Beispiel (Sinuskurve)#ie(9)#
-#type("modern12")#
-
- funktion zeichnen;
- bild darstellen .
-
-funktion zeichen :
- PICTURE VAR pic :: nilpicture;
- REAL VAR x := -pi;
- move (pic, x, sin (x));
- REP x INCR 0.1;
- draw (pic, x, sin (x))
- UNTIL x >= pi PER .
-
-bild darstellen :
- PICFILE VAR p :: picture file ("sinus");
- window (p, -pi, pi, -1.0, 1.0);
- put (p, pic);
- plot (p) .
-#type("trium10")#
-#free(2.0)#
-#ib(9)##type("triumb14")#Beispiel (Würfel)#ie(9)#
-#type("modern12")#
-
- wuerfel zeichen;
- wuerfel darstellen.
-
-wuerfel zeichnen :
- zeichne vorderseite;
- zeichne rueckseite;
- zeichne verbindungskanten.
-
-zeichne vorderseite :
- PICTURE VAR vorderseite :: nilpicture;
- move (vorderseite, 0.0, 0.0, 0.0);
- draw (vorderseite, 1.0, 0.0, 0.0);
- draw (vorderseite, 1.0, 0.0, 1.0);
- draw (vorderseite, 0.0, 0.0, 1.0);
- draw (vorderseite, 0.0, 0.0, 0.0).
-
-zeichne rueckseite :
- PICTURE VAR rueckseite :: translate
- (vorderseite, 0.0, 1.0, 0.0).
-
-zeichne verbindungskanten :
- PICTURE VAR verbindungskanten :: nilpicture;
- move (verbindungskanten, 0.0, 0.0, 0.0);
- draw (verbindungskanten, 0.0, 1.0, 0.0);
-
- move (verbindungskanten, 1.0, 0.0, 0.0);
- draw (verbindungskanten, 1.0, 1.0, 0.0);
-
- move (verbindungskanten, 1.0, 0.0, 1.0);
- draw (verbindungskanten, 1.0, 1.0, 1.0);
-
- move (verbindungskanten, 0.0, 0.0, 1.0);
- draw (verbindungskanten, 0.0, 1.0, 1.0).
-
-wuerfel darstellen :
- PICFILE VAR p := picture file ("wuerfel");
- put (p, vorderseite);
- put (p, rueckseite);
- put (p, verbindungskanten);
- window (p, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0);
- view (p, 0.0, 40.0, 20.0);
- orthographic (p);
- plot (p).
-#type("trium10")#
-#free(2.0)#
-#ib(9)##type("triumb14")#Beschreibung der Graphik-Prozeduren#ie(9)#
-#type("trium10")#
-
- #limit(12.0)##on("italics")#Zweidimensionale PICTUREs brauchen weniger Speicherplatz
- als dreidimensionale. Daher werden in einigen Fehlermeldun­
- gen unterschiedliche Größen angegeben.
-#limit(13.5)##off("italics")#
-
-:=
- OP := (PICTURE VAR dest, PICTURE CONST source)
- Zweck: Zuweisung
-
- OP := (PICFILE VAR dest, DATASPACE CONST source)
- Zweck: Assoziiert die PICFILE Variable 'dest' mit der DATASPACE CONST
- 'source' und initialisiert die PICFILE Variable sofern nötig.
- Fehlerfall:
- * dataspace is no PICFILE
- Der anzukoppelnde Datenraum hat einen falschen Typ.
-
-#ib#CAT#ie#
- OP CAT (PICTURE VAR dest, PICTURE CONST source)
- Zweck: Aneinanderfügen von zwei PICTURE's.
- Fehlerfälle:
- * OP CAT: left dimension <> right dimension
- Es können nur PICTUREs mit gleicher Dimension angefügt werden.
- * OP CAT: Picture overflow
- Die beiden PICTURE überschreiten die maximale Größe eines
- Pictures.
-
-#ib#act picture#ie#
- PICTURE PROC act picture (PICFILE VAR p)
- Zweck: Liefert das PICTURE des PICFILEs 'p', auf das mit 'backward' o.ä.
- positioniert wurde.
-
-#ib#backward#ie#
- PROC backward (PICFILE VAR p)
- Zweck: Positioniert den PICFILE 'p' um ein PICTURE zurück.
- Fehlerfall:
- * backward at begin of file
- Es wurde versucht vor den Anfang des PICFILEs zu positionieren.
-
-#ib#draw#ie#
- PROC draw (PICTURE VAR pic, REAL CONST x, y)
- Zweck: Die Prozedur zeichnet in dem (zweidimensionalen) Bild 'pic' eine
- Linie von der aktuellen Position zur Position (x, y).
- Fehlerfälle:
- * picture overflow
- Zu viele Befehle in einem PICTURE (z. Zeit max. 1927)
- * picture is three dimensional
- Ein PICTURE kann nur entweder zwei- oder dreidimensional sein.
-
- PROC draw (PICTURE VAR pic, REAL CONST x, y, z)
- Zweck: Die Prozedur zeichnet in dem (dreidimensionalen) Bild 'pic' eine
- gerade Linie von der aktuellen Position zur Position (x, y, z).
- Fehlerfälle:
- * picture overflow
- Zu viele Befehle in einem PICTURE (z. Zeit max. 1310)
- * picture is only two dimensional
- Ein PICTURE kann nur entweder zwei- oder dreidimensional sein.
-
- PROC draw (PICTURE VAR pic, TEXT CONST text)
- Zweck: Der angegebene Text wird in das Bild 'pic' eingetragen. Der Anfang
- ist dabei die aktuelle Stiftposition. Diese wird nicht verändert.
- Fehlerfall:
- * picture overflow
- Der Text paßt nicht mehr in das PICTURE.
-
- PROC draw (PICTURE VAR pic, TEXT CONST text,
- REAL CONST angle, height)
- Zweck: Der angegebene Text wird unter dem Winkel 'angle' gegenüber der
- Waagerechten und in der Größe 'height' in das PICTURE 'pic'
- eingetragen. Der Anfang ist dabei die aktuelle Stiftposition. Diese
- wird nicht verändert.
- Fehlerfall:
- * picture overflow
- Der Text paßt nicht mehr in das PICTURE.
-
- PROC draw (PICFILE VAR pic, REAL CONST x, y)
- Zweck: Die Prozedur zeichnet in dem aktuellen (zweidimensionalen)
- PICTURE des PICFILEs 'p' eine gerade Linie. Der (virtuelle) Stift wird
- von der aktuellen Position zur Position (x, y) gefahren. Falls das
- aktuelle PICTURE zu voll ist, wird automatisch auf das nächste
- umgeschaltet.
- Fehlerfälle:
- * picfile overflow
- Das letzte PICTURE ist voll (z. Zeit max. 128 PICTURE)
- * picture is threedimensional
- Das aktuelle PICTURE ist dreidimensional.
-
- PROC draw (PICTFILE VAR pic, REAL CONST x, y, z)
- Zweck: s. o.
- Fehlerfälle:
- * picfile overflow
- Das letzte PICTURE ist voll (z. Zeit max. 128)
- * picfile is only twodimensional
- Das aktuelle PICTURE ist zweidimensional.
-
- PROC draw (PICTFILE VAR pic, TEXT CONST text)
- Zweck: Der angegebene Text wird in das aktuelle PICTURE des PICFILEs 'p'
- eingetragen. Falls das aktuelle PICTURE zu voll ist, wird automatisch
- auf das nächste umgeschaltet. Der Anfang ist dabei die aktuelle
- Stiftposition. Diese wird nicht verändert.
- Fehlerfall:
- * picfile overflow
- Das letzte PICTURE ist voll (z. Zeit max. 128)
-
- PROC draw (PICFILE VAR pic, TEXT CONST text,
- REAL CONST angle, height)
- Zweck: Der angegebene Text wird unter dem Winkel 'angle' gegenüber der
- Waagerechten und in der Größe 'height' in das aktuelle PICTURE
- des PICFILES 'p' eingetragen. Falls das aktuelle PICTURE zu voll ist,
- wird automatisch auf das nächste umgeschaltet. Der Anfang ist
- dabei die aktuelle Stiftposition. Diese wird nicht verändert.
- Fehlerfall:
- * picfile overflow
- Das letzte PICTURE ist voll (z. Zeit max. 128)
-
-#ib#eof#ie#
- BOOL PROC eof (PICFILE CONST p)
- Zweck: Liefert 'TRUE' wenn hinter das Ende des PICFILEs positioniert
- wurde.
-
-#ib#extrema#ie#
- PROC extrema (PICTURE CONST p,
- REAL VAR x min, x max, y min, y max)
- Zweck: Die Prozedur liefert die größten und kleinsten X- und Y-Koordi­
- naten des PICTUREs 'p'. Diese werden in die Parameter 'x min', 'x
- max', 'y min' und 'y max' eingetragen.
-
- PROC extrema (PICTURE CONST p,
- REAL VAR x min, x max, y min, y max, z min, z max)
- Zweck: s.o.
-
- PROC extrema (PICFILE VAR p, REAL VAR x min, x max, y min, y max)
- Zweck: s.o.
-
- PROC extrema (PICFILE VAR p,
- REAL VAR x min, x max, y min, y max, z min, z max)
- Zweck: s.o.
-
-#ib#forward#ie#
- PROC forward (PICFILE VAR p)
- Zweck: Positioniert den PICFILE um ein PICTURE weiter.
- Fehlerfall:
- * picfile overflow
- Es sollte hinter das Ende des PICFILEs positioniert werden.
-
-#ib#get#ie#
- PROC get (PICFILE VAR p, PICTURE VAR pic)
- Zweck: Liest ein PICTURE aus einem PICFILE und positioniert auf das
- Nächste.
- Fehlerfall:
- * input after end of picfile
- Es sollte nach dem Ende des Picfiles gelesen werden.
-
-#ib#move#ie#
- PROC move (PICTURE VAR pic, REAL CONST x, y)
- Zweck: Der (virtuelle) Stift wird zur Position (x, y) gefahren.
- Fehlerfälle:
- * picture overflow
- Zu viele Befehle in einem PICTURE (z. Zeit max. 1927 'moves')
- * picture is three dimensional
- Ein PICTURE kann nur entweder zwei- oder dreidimensional sein.
-
- PROC move (PICTURE VAR pic, REAL CONST x, y, z)
- Zweck: Der (virtuelle) Stift wird zur Position (x, y, z) gefahren.
- Fehlerfälle:
- * picture overflow
- Zu viele Befehle in einem PICTURE (z. Zeit max. 1310)
- * picture is only twodimensional
- Ein PICTURE kann nur entweder zwei- oder dreidimensional sein.
-
- PROC move (PICFILE VAR p, REAL CONST x, y)
- Zweck: Der (virtuelle) Stift wird zur Position (x, y) gefahren. Falls das aktuelle
- PICTURE des PICFILEs 'p' zu voll ist, wird automatisch auf das
- nächste umgeschaltet.
- Fehlerfall:
- * picfile overflow
- Das letzte PICTURE ist voll (z. Zeit max. 128 PICTUREs)
-
- PROC move (PICFILE VAR p, REAL CONST x, y, z)
- Zweck: Der (virtuelle) Stift wird zur Position (x, y, z) gefahren. Falls das
- aktuelle PICTURE des PICFILEs 'p' zu voll ist, wird automatisch auf
- das nächste umgeschaltet.
- Fehlerfall:
- * picfile overflow
- Das letzte PICTURE ist voll (z. Zeit max. 128 PICTUREs)
-
-#ib#nilpicture#ie#
- PICTURE PROC nilpicture
- Zweck: Die Prozedure liefert ein leeres PICTURE zur Initialisierung.
-
-#ib#oblique#ie#
- PROC oblique (PICFILE VAR p, REAL CONST a, b)
- Zweck: Bei dem (dreidimensionalen!) Bild 'p' wird 'schiefwinklig' als
- gewünschte Projektionsart eingestellt. Dabei ist (a, b) der Punkt in
- der X-Y-Ebene, auf den der Einheitsvector in Z-Richtung
- abgebildet werden soll.
-
-#ib#orthographic#ie#
- PROC orthographic (PICFILE VAR p)
- Zweck: Bei dem (dreidimensionalen!) Bild 'p' wird "orthografisch" als Pro­
- jektionsart eingestellt. Bei der orthografischen Projektion wird ein
- dreidimensionaler Körper mit parallelen Strahlen senkrecht auf die
- Projektionsebene abgebildet.
-
-#ib#pen#ie#
- INT PROC pen (PICTURE CONST pic)
- Zweck: Liefert die Nummer des 'virtuellen Stifts'.
-
- PICTURE PROC pen (PICTURE CONST pic, INT CONST pen)
- Zweck: Liefert ein PICTURE mit dem Inhalt 'pic' und dem 'virtuellen Stift' mit
- der Nummer 'pen'. Möglich sind die Nummern 1 - 16.
- Fehlerfälle:
- * PROC pen: pen [No] < 1
- Der gewünschte Stift ist kleiner als 1.
- * PROC pen: pen [No] > 16
- Der gewünschte Stift ist größer als 16.
-
-#ib#perspective#ie#
- PROC perspective (PICFILE VAR p, REAL CONST cx, cy, cz)
- Zweck: Bei den dreidimensionalen PICTUREs des PICFILE's 'p' wird
- "perspektivisch" als gewünschte Projektionsart eingestellt. Der Punkt
- (cx, cy, cz) ist der Fluchtpunkt der Projektion, d.h. alle Parallelen zur
- Blickrichtung schneiden sich in diesem Punkt.
-
-#ib#pic no#ie#
- INT PROC pic no (PICFILE CONST p)
- Zweck: Liefert die Nummer des aktuellen PICTUREs.
-
-#ib#picture file#ie#
- DATASPACE PROC picture file (TEXT CONST name)
- Zweck: Die Prozedur dient zur Assoziation eines benannten Datenraumes mit
- einem PICFILE (s. Operator ':=').
-
-#ib#plot#ie#
- PROC plot (TEXT CONST name)
- Zweck: Der PICFILE mit dem Namen 'name' wird entspechend der angege­
- benen Darstellungsart gezeichnet. Diese Parameter ('perspective',
- 'orthographic', 'oblique', 'view', 'window' etc.) müssen vorher
- eingestellt werden.
- Fehlerfall:
- * FILE does not exist
- Es existiert kein PICFILE mit dem Namen 'name'
-
- PROC plot (PICFILE VAR p)
- Zweck: Der PICFILE 'p' wird entspechend der angegebenen Darstellungsart
- gezeichnet. Diese Parameter müssen vorher eingestellt werden.
-
- #on("bold")#Zweidimensional:
-#off("bold")#
- obligat: 'window' (zweidimensional)
- optional: 'view' (zweidimensional)
- 'select pen'
- 'viewport'
-
- #on("bold")#Dreidimensional:
-#off("bold")#
- obligat: 'window' (dreidimensional)
- optional: 'view' (dreidimensional)
- 'orthographic', 'perspective', 'oblique'
- 'viewport'
- 'select pen'
-
-#ib#put#ie#
- PROC put (PICFILE VAR p, PICTURE CONST pic)
- Zweck: Schreibt ein PICTURE in einen PICFILE und positioniert um eins
- vor.
- Fehlerfall:
- * picfile overflow
- Der PICFILE ist voll. (z. Z. max. 128 PICTURE)
-
-#ib#reset#ie#
- PROC reset (PICFILE VAR p)
- Zweck: Positioniert auf den Anfang eines Picfiles.
-
-#ib#rotate#ie#
- PICTURE PROC rotate (PICTURE CONST pic, REAL CONST alpha)
- Zweck: Das PICTURE 'pic' wird um den Punkt (0, 0) um den Winkel 'alpha'
- (im Gradmaß) im mathematisch positiven Sinn gedreht.
-
- PICTURE PROC rotate (PICTURE CONST pic,
- REAL CONST alpha, beta, gamma)
- Zweck: Das dreidimensionale PICTURE 'pic' wird um den Winkel 'alpha',
- 'beta' oder 'gamma' im mathematisch positiven Sinn gedreht. Der
- Winkel 'alpha' dreht um die X-Achse, der Winkel 'beta' um die
- Y-Achse und 'gamma' um die Z-Achse. Es darf dabei nur jeweils
- ein Winkel von 0.0 verschieden sein. Alle Winkel werden im
- Gradmaß angegeben.
-
-#ib#select pen#ie#
- PROC select pen (PICFILE VAR p,
- INT CONST pen, colour, thickness, linetype)
- Zweck: Für die Darstellung des Bildes 'p' soll dem "virtuellen Stift" 'pen' ein
- realer Stift zugeordnet werden, der möglichst die Farbe 'colour' und
- die Dicke 'thickness' hat und dabei Linien mit dem Typ 'line type'
- zeichnet. Es wird die beste Annäherung für das Ausgabegerät für
- diese Parameter genommen. Dabei gelten folgende Vereinbarun­
- gen:
-
- Farbe: negative Farben setzten den Hintergrund, positive Farben
- zeichnen im Vordergrund.
-
- 0 Löschstift (falls vorhanden)
- 1 Standardfarbe des Endgeräts (schwarz oder weiß)
- 2 rot
- 3 blau
- 4 grün
- 5 schwarz
- 6 weiß > 20 nicht normierte Sonderfarben
-
- Dicke: 0
- Standardstrichstärke des Endgerätes > 0
- Strichstärke in 1/10 mm
-
- Typ:
- 0 keine sichtbare Linie
- 1 durchgängige Linie
- 2 gepunktete Linie
- 3 kurz gestrichelte Linie
- 4 lang gestrichelte Linie
- 5 Strichpunktlinie
-
- Die hier aufgeführten Möglichkeiten müssen nicht an allen grafischen
- Endgeräten vorhanden sein. Der geräteabhängige Graphik-Treiber
- wählt jeweils die für ihn bestmögliche Annäherung.
-
- Fehlerfälle:
- * pen < 1
- * pen > 16
-
-#ib#size#ie#
- INT PROC size (PICFILE CONST p)
- Zweck: Liefert die aktuelle Größe eines PICFILEs in Bytes.
-
-#ib#stretch#ie#
- PICTURE PROC stretch (PICTURE CONST pic, REAL CONST xc, yc)
- Zweck: Das PICTURE 'pic' wird in X-Richtung um den Faktor 'xc', in
- Y-Richtung um den Faktor 'yc' gestreckt (bzw. gestaucht). Dabei
- bewirkt der Faktor
- c > 1 eine Streckung
- 0 < c < 1 eine Stauchung
- c < 0 zusätzlich eine Achsenspiegelung
-
- PICTURE PROC stretch (PICTURE CONST pic, REAL CONST xc, yc, zc)
- Zweck: Das dreidimensionale PICTURE 'pic' wird entsprechend den
- angegeben Faktoren 'xc', 'yc' und 'zc' gestreckt. Wirkung s.o.
-
-#ib#translate#ie#
- PICTURE PROC translate (PICTURE CONST pic, REAL CONST dx, dy)
- Zweck: Das PICTURE 'pic' wird um 'dx' und 'dy' verschoben.
- Fehlerfall:
- * picture is threedimensional
- 'pic' ist dreidimensional.
-
- PICTURE PROC translate (PICTURE CONST pic, REAL CONST dx, dy, dz)
- Zweck: Das PICTURE 'pic' wird um 'dx', 'dy' und 'dz' verschoben.
- Fehlerfall:
- * picture is twodimensional
- Das PICTURE 'pic' ist zweidimensional
-
-#ib#two dimensional#ie#
- PROC two dimensional (PICFILE VAR p)
- Zweck: Setzt als Projektionsart zweidimensional.
-
-#ib#view#ie#
- PROC view (PICFILE VAR p, REAL CONST alpha, phi, theta)
- Zweck: Dreidimensionale Bilder werden häufig nicht direkt von vorne
- dargestellt, sondern für die Betrachtung gedreht. Mit der Prozedur
- 'view' kann diese Betrachtungsrichtung durch die Polarwinkel 'phi'
- und 'theta' angegeben werden. Mit dem Winkel 'alpha' kann dann
- das Bild um den Mittelpunkt der Zeichenfläche gedreht werden.
- Dadurch kann ein Bild auch auf einem Terminal hochkant gestellt
- werden. Voreingestellt ist 'phi = 0, theta = 0 und alpha = 0', d.h.
- direkt von oben.
-
- Im Gegensatz zu 'rotate' hat 'view' keine Wirkung auf das eigentli­
- che Bild (PICFILE), sondern nur auf die gewählte Darstellung. So
- addieren sich zwar aufeinanderfolgende "Rotationen", 'view' aber
- geht immer von der Nullstellung aus. Auch kann das Bild durch eine
- "Rotation" ganz oder teilweise aus oder in das Darstellungsfenster
- ('window') gedreht werden. Bei 'view' verändern sich die Koordina­
- ten der Punkte nicht, d.h. das Fenster wird mitgedreht.
-
-#ib#viewport#ie#
- PROC viewport (PICFILE VAR p,
- REAL CONST hormin, hormax, vertmin, vertmax)
- 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 physikalischen Zeichenfläche des Gerätes hat die
- Koordinaten (0.0, 0.0). Die definierte Zeichenfläche erstreckt sich
-
-#type("modern12")#
- 'hormin' - 'hormax' in der Horizontalen,
- 'vertmin' - 'vertmax' in der Vertikalen.
-#type("trium10")#
-
- So liegt der linke untere Eckpunkt dann bei (hormin, vertmin), der
- rechte obere bei (hormax, vertmax).
-
- Damit sowohl geräteunabhängige als auch maßstabsgerechte
- Zeichnungen möglich sind, können die Koordinaten in zwei Arten
- spezifiziert werden :
-
- a) Gerätekoordinaten
- Die Koordinaten können Werte von 0.0 bis 2.0 annehmen. Dabei
- hat die kürzere Seite der physikalischen Zeichenfläche defini­
- tionsgemäß die Länge 1.0.
-
- b) absolute Koordinaten
- Die Werte werden in cm angegeben. Für die Maximalwerte sind
- nur Werte größer als 2.0 möglich.
-
- Voreingestellt ist
-
-#type("modern12")#
- viewport (0.0, 1.0, 0.0, 1.0),
-#type("trium10")#
-
- d.h. das größtmöglichste Quadrat, beginnend in der linken unteren
- Ecke der physikalischen Zeichenfläche. In vielen Fällen wird diese
- Einstellung ausreichen, so daß der Anwender kein eigenes 'viewport'
- definieren muß.
-
- Der Abbildungsmaßstab wird durch das Zusammenspiel von 'view­
- port' und 'window' festgelegt (siehe dort). Dabei ist insbesondere
- darauf zu achten, daß winkeltreue Darstellungen nur bei gleichem
- X- und Y-Maßstab möglich sind. Da man oft quadratische Fenster
- ('window') verwendet, wurde als Standardfall auch ein quadratisches
- 'viewport' gewählt.
-
-#ib#where#ie#
- PROC where (PICTURE CONST pic, REAL VAR x, y)
- Zweck: Die aktuelle Stiftposition wird in 'x' und 'y' eingetragen.
- Fehlerfall:
- * picture is threedimensional
- Das PICTURE 'pic' ist dreidimensional
-
- PROC where (PICTURE CONST pic, REAL VAR x, y, z)
- Zweck: Die aktuelle Stiftposition wird in 'x', 'y' und 'z' eingetragen.
- Fehlerfall:
- * picture is twodimensional
- Das PICTURE 'pic' ist zweidimensional
-
-#ib#window#ie#
- 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
- darzustellende Fenster definiert. Alle Bildpunkte, deren X-Koordi­
- naten im Intervall [x min, x max] und deren Y-Koordinaten im
- Intervall [y min, y max] liegen, gehören zum definierten Fenster.
- Vektoren, die über dieses Fenster hinausgehen, werden abge­
- schnitten. Dieses Fenster wird auf die spezifizierte Zeichenfläche
- abgebildet. (Das ist standardmäßig das größtmögliche Quadrat auf
- dem ausgewählten Gerät).
-
- Der Darstellungsmaßstab ergibt sich als
-
-#type("modern12")#
- x max - x min
- -----------------------------------------
- horizontale Seitenlänge der Zeichenfläche
-
- y max - y min
- -----------------------------------------
- vertikale Seitenlänge der Zeichenfläche
-#type("trium10")#
-
- Für eine winkeltreue Darstellung müssen X- und Y-Maßstab
- gleich sein! Einfach können winkeltreue Darstellung erreicht
- werden, wenn das Fenster eine quadratische Form hat. Die
- Zeichenfläche ('viewport') ist dementsprechend als Quadrat vorein­
- gestellt.
-
- 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 darzu­
- stellende Fenster definiert. Alle Bildpunkte, deren X-Koordinaten im
- Intervall [x min, x max] und deren Y-Koordinaten im Intervall [y min,
- y max] und deren Z-Koordinaten im Intervall [z min, z max] liegen,
- gehören zum definierten Fenster. Dieses dreidimensionale Fenster
- (Quader) wird entsprechend der eingestellten Projektionsart (ortho­
- grafisch, perspektivisch oder schiefwinklig) und den Betrachtungs­
- winkeln (s. 'view') auf die spezifizierte Zeichenfläche abgebildet. (Das
- ist standardmäßig das größtmögliche Quadrat auf dem ausgewählten
- Gerät.) Linien, die außerhalb dieses Quadrates liegen, werden
- abgeschnitten.
-
- Anders als im zweidimensionalen Fall ist das Problem der Maßstäbe
- nicht mehr nur durch das Zusammenspiel von 'window' und 'view­
- port' zu beschreiben. Hier spielen auch Projektionsart und Dar­
- stellungswinkel eine Rolle. Falls alle Darstellungswinkel den Wert 0.0
- haben, gilt das für den zweidimensionalen Fall gesagte für die Ebene
- (y = 0.0) entsprechend.
-
-#ib#write is possible#ie#
- BOOL PROC write is possible (PICTURE CONST pic, INT CONST space)
- Zweck: Liefert 'TRUE', falls 'space' Bytes Platz in 'pic' vorhanden ist.
-
-
-
-
-
-
diff --git a/doc/graphic/GRAPHIK.book b/doc/graphic/GRAPHIK.book
deleted file mode 100644
index 435d9e4..0000000
--- a/doc/graphic/GRAPHIK.book
+++ /dev/null
@@ -1,897 +0,0 @@
-#type ("times8")##limit (11.0)##start (2.2, 1.5)##pagelength (17.4)##block#
-
-#head#
-#type ("triumb14")#
-#center#EUMEL-Grafik-System
-
-#type ("times8")#
-#end#
-#type ("triumb14")# Teil 10: Graphik#type ("times8")#
-
-
-#type ("trium12")#
-#on("b")#1. Übersicht#off("b")#
-#type ("times8")#
-
-#limit (7.0)##type("times6")#
- #on("i")#Dieser Teil des Benutzer-Handbuchs beschreibt die Graphik-
- Fähigkeiten des EUMEL-Systems. Die Graphik-Pakete gehö­
- ren nicht zum Eumel-Standard, sondern sind Anwenderpake­
- te, die im Quellcode ausgeliefert und von jeder Installation in das
- System aufgenommen werden können. #off("i")#
-#limit (11.0)#
-#foot#
- Eventuell müssen Programme erstellt werden, die die Anpassungen für spezielle graphische Geräte einer Installation
- vornehmen, soweit diese nicht von den EUMEL-Anbietern bezogen werden können.
-#end#
-
-#type("times8")#
- Das #on("b")#Graphik-System#off("b")# ermöglicht es, durch ELAN-Programme geräteunabhängige Infor­
- mationen für Zeichnungen (#on("i")#Graphiken#off("i")#) zu erstellen. Die Graphik erzeugenden Programme
- brauchen dabei keine geräteabhängigen Größen oder Unterprogramme zu enthalten. Sie
- befassen sich somit ausschließlich mit der Erzeugung der problemorientierten Information
- für die Konstruktion einer Zeichnung. Nach der geräteunabhängigen Erzeugung einer
- Graphik kann diese auf unterschiedlichen Geräten ausgegeben werden (z.B. erst auf einem
- Terminal zur Kontrolle und dann auf einem Plotter).
-
- Die EUMEL-Graphik umfaßt zwei- und dreidimensionale Graphik. Im dreidimensiona­
- len Fall sind perspektivische, orthografische und schiefwinklige Projektionen mit beliebi­
- gen Betrachtungswinkeln möglich.
-
- Bei der EUMEL-Graphik wird streng zwischen Erzeugung und Manipulation von Gra­
- phiken auf der einen und der Darstellung der erzeugten Bilder auf der anderen Seite
- unterschieden. Für die Erzeugung und Manipulation der Graphiken wird von den Paketen
- #on("i")#picture#off("i")# und #on("i")#picfile#off("i")# der Datentype #on("b")#PICTURE#off("b")# bzw. #on("b")#PICFILE#off("b")# zur Verfügung gestellt. Dabei
- müssen Ausschnitt, Maßstab, Betrachtungswinkel und Projektionsart erst bei der Darstel­
- lung festgelegt werden. Diese Konstruktion des Graphik-Systems hat folgende Vorteile:
-
- a) Programme, die Graphik-Information erzeugen, sind geräteunabhängig. Das bedeu­
- tet, das der Programmierer sich ausschließlich mit einem logischen Problem befassen
- muß und nicht mit gerätespezifischen Besonderheiten.
-
- b) Graphiken können auf mehreren unterschiedlich gearteten Geräten mehrmals darge­
- stellt werden, ohne daß das erzeugende Programm geändert oder neu gestartet werden
- muß. Z.B. kann ein Programmierer eine Graphik erst auf dem Terminal überprüfen,
- bevor er die Graphik auf einem Plotter zeichnen läßt.
-
- c) Graphiken können leicht geändert (z. B. vergrößert oder in eine Richtung gestreckt
- o.ä.) werden, ohne daß sie erneut erzeugt werden müssen. Zudem können Graphiken
- aneinander oder übereinander gelegt werden.
-
- d) Graphiken mit unterschiedlichen Farben, Strichen usw. können leicht erzeugt werden.
-
- e) Der Anschluß von neuen Graphik.Geräten durch Benutzer ist leicht möglich, ohe daß
- die Graphik-Programme geändert werden müssen.
-
- f) Plotter können wie Drucker an einen Spooler gehängt werden.
-
- g) Bilder können als PICFILEs gespeichert und versandt werden.
-
- h) Es können auch auf Systemen ohne graphische Ausgabegeräte Graphiken erzeugt
- werden.
-
- i) Es können mit einfachen Mitteln universelle Unterprogrammpakete erstellt werden,
- um die Standardzeichnungen (Darstellen einer Funktion, Balken oder Liniendiagram­
- me, Achsen etc.) zu erstellen.
-
-
-#type ("trium12")#
-#on("b")#2. Erzeugung von Bildern#off("b")#
-#type ("times8")#
-
- Bilder entstehen in Objektion vom Datentyp #on("b")#PICTURE#off("b")#. Diese müssen mit der Prozedur
- #on("i")#nilpicture#off("i")# initialisiert werden. Sie enthalten dann ein leeres Bild, dessen Dimension noch
- nicht festgelegt ist. Die Dimension eines #on("i")#PICTURE#off("i")#s wird mit dem ersten Schreibzugriff
- (#on("i")#move, draw#off("i")# o.ä.) festgelegt. Ein #on("i")#PICTURE#off("i")# kann immer nur entweder zwei- oder
- dreidimensional sein.
- Außerdem kann einem #on("i")#PICTURE#off("i")# mit der Prozedur #on("i")#pen#off("i")# genau ein virtueller Stift zugeord­
- net oder der aktuelle Stift erfragt werden (Standardeinstellung: 1).
-
- Für Erzeugung eines Bildes wird ein virtueller Zeichenstift benutzt, dem bei der Darstel­
- lung jeweils genau ein realer Stift zugeordnet wird. Dieser Stift kann mit der Prozedur
- #on("b")#move#off("b")# oder #on("b")#move r #off("b")#auf eine bestimmte Stelle positioniert werden ohne zu zeichnen. Mit
- #on("b")#draw#off("b")# oder #on("b")#draw r#off("b")# wird eine Linie von der letzten Position zur angegebene Position
- gezeichnet. Die aktuelle Stiftposition kann dabei mit #on("b")#where#off("b")# abgefragt werden.
- Außerdem existiert noch die Prozedur #on("b")#draw#off("b")# die einen Text zur Beschriftung der Zeich­
- nung darstellt, sowie #on("b")#bar#off("b")# zum Zeichnen eines Balkens für Balkendiagramme, #on("b")#circle#off("b")# zum
- Zeichnen eines Kreisbogens für Kreisdiagramme und #on("b")#mark#off("b")# zum Markiern von Positionen.
- Dabei wird die aktuelle Stiftposition aber nicht verändert.
-
-#type ("trium12")#
-#on("b")#3. Manipulation von PICTUREs#off("b")#
-#type ("times8")#
-
- Erstellte PICTUREs können auch als Ganzes manipuliert werde. Dazu dienen die Prozedu­
- ren #on("b")#translate, stretch#off("b")# und #on("b")#rotate#off("b")#. Es ist auch möglich mehrere PICTURE mit dem Opera­
- tor #on("b")#CAT#off("b")# aneinanderzufügen, wenn beide PICTURE die gleiche Dimension haben. In
- solcherart manipulierten Bildern kann ohne Einschränkung weitergezeichnet werden,
- solange die maximale Größe nicht überschritten wird.
-
-#type ("trium12")#
-#on("b")#4. Darstellung und Speicherung #off("b")#
-#type ("times8")#
-
- Für die Darstellung und Speicherung der erzeugten Bilder existiert der Typ #on("b")#PICFILE#off("b")#.
- Dieser besteht aus eienm Datenraum mit max. 1024 PICTUREs, die mit den Prozeduren #on("b")#
- delete picture, insert picture, read picture, write picture, get picture#off("b")# und #on("b")#put picture#off("b")# einge­
- geben bzw. ausgegeben werden können.
- Für die Positionierung innerhalb eines PICFILES stehen die Prozeduren #on("b")#to pic, up, down,
- eof, picture no, pictures#off("b")# zur Verfügung.
- Für die Assoziation mit einem benannten Datenraum existiert ähnlich wie beim Datentyp
- FILE die Prozedur #on("b")#picture file#off("b")#; unbenannte Datenräume können mit dem Operator #on("b")#:=#off("b")#
- assoziert werden.
- Die Darstellung des PICFILES auf einem Zeichengerät erfolgt mit der Prozdur #on("b")#plot#off("b")#.
- Da die Graphiken aber in #on("i")#Weltkoordinaten#off("i")# erzeugt werden und die spätere Darstellung
- vollkommen unbeachtet bleibt, müssen gewisse Darstellungsparameter für die Zeichnung
- gesetzt werden. Dies Parameter werden im PICFILE abgelegt und gelten jeweils für alle
- darin enthaltenen PICTURE. Dadurch ist es möglich, einen PICFILE mit spezifierter
- Darstellungsart über einen SPOOLER an einen Plotter zu senden oder die bei der letzten
- Betrachtung gewählte Darstellung beizubehalten oder zu ändern.
- Für die Darstellung können den virtuellen Stiften mit der Prozedur #on("b")#select pen#off("b")# reale Stifte
- zugeordnet werden. Voreingestellt ist für alle virtuellen Stifte die Standardfarbe, Standard­
- stärke und durchgängige Linie. Mit #on("b")#background#off("b")# kann eine bestimmte Hintergrundfarbe
- gewählt werden.
- Indem man einem PICTURE den Stift 0 zuordnet, kann man dieses auch Ausblenden
- wenn es bei dieser Darstellung stört.
- Die Größe der realen Zeichenfläche kann mit #on("b")#viewport#off("b")# eingestellt werden, wobei die
- gesamte Zeichenfäche voreingestellt ist. Dadurch können auch mehrere PICFILE auf ein
- Blatt oder einen Bildschirm gezeichnet werden, wenn man durch Angabe von #on("i")#background
-  (0)#off("i")# das Löschen der Zeichenfläche unterdrückt.
-
-
-#type ("trium12")#
-#on("b")#5. Darstellung zweidimensionaler Graphik#off("b")#
-#type ("times8")#
-
- Bei der Darstellung zweidimensionaler Bilder muß der zu zeichnende Ausschnitt (das
- #on("i")#Fenster#off("i")#) angegeben werden. Mit der Prozedur #on("b")#window#off("b")# wird durch Angabe der minimalen
- und maximalen X- bzw. Y-Koordinaten ein Fenster definiert. Linien, die über dieses
- Fenster hinausgehen, werden abgeschnitten. Dadurch kann man einen beliebigen Detailaus­
- schnitt eines Bildes ausgeben, ohne das Bild neu generieren zu müssen.
- Da das so definierte Fenster auf die mit #on("i")#viewport#off("i")# definierte Zeichenfläche abgebildet wird,
- ist der Abbildungsmaßstab durch das Zusammenspiel von #on("i")#viewport#off("i")# und #on("i")#window#off("i")# bestimmt.
- Wenn eine Winkeltreue Darstellung erreicht werdenn soll, muß das Verhältnis der durch
- #on("i")#viewport#off("i")# eingestellten Breite und Höhe und das Verhältnis des durch #on("i")#window#off("i")# eingestellten
- Ausschnitts gleich sein.
-
-#type ("trium12")#
-#on("b")#6. Darstellung dreidimensionaler Graphik#off("b")#
-#type ("times8")#
-
- Bei dreidimensionalen Zeichnungen wird das Fenster ebenfalls mit #on("b")#window#off("b")# definiert,
- wobei dann allerdings auch der Wertebereich der dritten Dimension (Z-Koordinaten) zu
- berücksichtigen ist. Auch hierbei werden Linien, die über die spezifierte Darstellungs­
- fläche hinausgehen abgeschnitten. Das Abschneiden erfolgt allerdings erst nach der Projek­
- tion auf die Darstellungsfläche, so daß auch Vektoren zu sehen sind, die über das mit
- #on("i")#window#off("i")# angegebene Quader hinausgehen, wenn ihre Projektion innerhalb der Zeichen­
- fläche liegt.
- Da die dreidimensionale Graphik auf eine zweidimensionale Fläche projeziert wird,
- können aber noch weitere Darstellungsparameter angegeben werden. Der Betrachtungswin­
- kel wird mit Hilfe der Prozedur #on("b")#view#off("b")# angegeben. Ebenfalls kann mit #on("b")#view#off("b")# der Winkel der
- Y-Achse zur Horizontalen angegeben werden.
- Zur Spezifikation der gewünschten Projektionsart existieren #on("b")#orthographic#off("b")# (orthographische
- Projektion), #on("b")#perspective#off("b")# (perspektivische Projektion, der Fluchtpunkt ist frei wählbar) und
- #on("b")#oblique#off("b")# (schiefwinklige Projektion).
-
-#page#
-#type ("trium12")#
-#on("b")#7. Beispiele#off("b")#
-#type ("times8")#
-
- #on("u")#Sinuskurve#off("u")#
-
-#type("micro")#
-initialisiere picfile;
-zeichne überschrift;
-zeichne achsen;
-zeichne sinuskurve;
-wähle darstellung;
-plot (p) .
-
-initialisiere picfile:
- PICFILE VAR p :: picture file ("SINUS") .
-
-zeichne überschrift:
- PICTURE VAR überschrift :: nilpicture;
- move (überschrift, -pi/2.0, 1.0);
- draw (überschrift, "sinus (x) [-pi, +pi]", 0.0, 1.0, 0.6);
- put picture (p, überschrift) .
-
- zeichne achsen:
- PICTURE VAR achsen :: nilpicture;
- zeichne x achse;
- zeichne y achse;
- put picture (p, achsen) .
-
- zeichne x achse:
- move (achsen, -pi, 0.0);
- draw (achsen, pi, 0.0) .
-
- zeichne y achse:
- move (achsen, 0.0, -1.0);
- draw (achsen, 0.0, +1.0) .
-
- zeichne sinuskurve:
- PICTURE VAR sinus :: nilpicture;
- REAL VAR x :: -pi;
-
- move (sinus, x, sin (x));
- REP x INCR 0.1;
- draw (sinus, x, sin (x))
- UNTIL x >= pi PER;
-
- put picture (p, sinus) .
-
- wähle darstellung:
- window (p, -pi, pi, -1.0, 1.3);
- viewport (p, 0.0, 0.0, 0.0, 0.0) .
-
-#page#
-#type ("times8")#
- #on("u")#Achsenkreuz#off("u")#
-
-#type("micro")#
-initialisiere picfile;
-zeichne die x achse;
-zeichne die y achse;
-zeichne die z achse;
-stelle das achsenkreuz dar .
-
-initialisiere picfile:
- PICFILE VAR p :: picture file ("KREUZ") .
-
- zeichne die x achse:
- PICTURE VAR x achse := nilpicture;
- move (x achse, -1.0, 0.0, 0.0);
- draw (x achse, "-X", 0.0, 0.0, 0.0);
- draw (x achse, 1.0, 0.0, 0.0);
- draw (x achse, "+X", 0.0, 0.0, 0.0);
- put picture (p, x achse) .
-
- zeichne die y achse:
- PICTURE VAR y achse := nilpicture;
- move (y achse, 0. 0, -1.0, 0.0);
- draw (y achse, "-Y", 0.0, 0.0, 0.0);
- draw (y achse, 0.0, 1.0, 0.0);
- draw (y achse, "+Y", 0.0, 0.0, 0.0);
- put picture (p, y achse) .
-
- zeichne die z achse:
- PICTURE VAR z achse := nilpicture;
- move (z achse, 0. 0, 0.0, -1.0);
- draw (z achse, "-Z", 0.0, 0.0, 0.0);
- draw (z achse, 0.0, 0.0, 1.0);
- draw (z achse, "+Z", 0.0, 0.0, 0.0);
- put picture (p, z achse) .
-
- stelle das achsenkreuz dar:
- viewport (p, 0. 0, 1.0, 0.0, 1.0);
- window (p, -1.1, 1.1, -1.1, 1.1);
- oblique (p, 0.25, 0.15);
- plot (p) .
-
-#foot#
- #type("times6")#
- Diese beiden Beispielprogramme befinden sich ebenfalls auf dem STD-Archive unter dem Namen #on("i")#Beispiel.Sinus#off("i")# und
- #on("i")#Beispiel.Kreuz#off("i")#.
-#end#
-
-#page#
-#type ("triumb14")# Beschreibung der Graphik-Prozeduren
-#type ("times8")#
-
-
-#type ("trium12")#
-#on("b")#1. PICTURE-Prozeduren#off("b")#
-#type ("times8")#
-
-#limit (7.0)##type("times6")#
- #on("i")#Zweidimensionale PICTURES brauchen weniger Speicherplatz
- als dreidimensionale. Daher werden in einigen Fehlermeldungen
- unterschiedliche Größen angegeben.
-
-#limit (11.0)##type("times8")#
-
-#type("times10")##on("b")#:=#off("b")##type("times8")#
- OP := (PICTURE VAR l, PICTURE CONST r)
- Zweck: Zuweisung
-
-#type("times10")##on("b")#CAT#off("b")##type("times8")#
- 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.
-
-#type("times10")##on("b")#nilpicture#off("b")##type("times8")#
- PICTURE PROC nilpicture
- Zweck: Die Prozedur liefert ein leeres PICTURE zur Initialisierung.
-
- PICTURE PROC nilpicture (INT CONST pen)
- Zweck: Die Prozedur liefert ein leeres PICTURE mit dem Stift #on("i")#pen#off("i")# zur Initialisierung.
-
-#type("times10")##on("b")#draw#off("b")##type("times8")#
- PROC draw (PICTURE VAR p, TEXT CONST text, REAL CONST angle, height, ­
- width)
- Zweck: Der angegebene Text wird unter dem Winkel #on("i")#angle#off("i")# gegenüber der Waagerech­
- ten mit der Zeichenhöhe #on("i")#hight#off("i")# und der Breite #on("i")#width#off("i")# gezeichnet. #on("i")#angle#off("i")# wird in
- Winkelgrad angegeben. #on("i")#height#off("i")# und #on("i")#width#off("i")# werden in #on("i")#Prozenten#off("i")# der Breite bzw.
- Höhe der Zeichenfläche angegeben, bei 0 wird
- die Standardhöhe- und breite angenommen.
- Der Anfang ist dabei die aktuelle Stiftposition, die nicht verändert wird. Es könne
- auch die Steuerzeichen ""1"", ""2"", ""3"", ""10"", ""13"" benutzt werden,
- wobei sie immer in der Richtung #on("i")#angle#off("i")# wirken.
- Fehlerfälle:
- * Picture overflow
- Der Text paßt nicht mehr in das PICTURE.
-
-#type("times10")##on("b")#draw#off("b")##type("times8")#
- 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
-
-#type("times10")##on("b")#draw r#off("b")##type("times8")#
- 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
-
-#type("times10")##on("b")#move#off("b")##type("times8")#
- 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
-
-#type("times10")##on("b")#move r#off("b")##type("times8")#
- 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
-
-
-#type("times10")##on("b")#bar#off("b")##type("times8")#
- 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("i")#pattern#off("i")#:
- 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
- > 8 = nicht normiertes Sondermuster
- Die aktuelle Stiftposition wird dabei nicht verändert.
- Fehlerfälle:
- * Picture overflow
- Zu viele Befehle in einem PICTURE
- * Picture is three dimensional
-
- PROC bar (PICTURE VAR p, REAL CONST from, to, hight, INT CONST pattern):
- Zweck: Die Prozedur zeichnet einen Balken von der Position #on("i")#from#off("i")# zur Position #on("i")#to#off("i")# und der
- Höhe #on("i")#height#off("i")# mit dem Muster #on("i")#pattern#off("i")#.
- s.o.
-
-#type("times10")##on("b")#circle#off("b")##type("times8")#
- PROC circle (PICTURE VAR p, REAL CONST radius, from, to, INT CONST pattern)
- Zweck: Die Prozedur zeichnet an der aktuellen Position ein Kreissegment vom Winkel
- #on("i")#from#off("i")# bis #on("i")#to#off("i")# (im Gradmaß) mit dem Muster #on("i")#pattern#off("i")# (s.o.). Der #on("i")#radius#off("i")# wird in
- Prozenten der Diagonalen der Zeichenfläche angegeben.
- Die aktuelle Stiftposition wird dabei nicht verändert. Dieses Kreissegment ist in
- jedem Fall 2-dimensional, so das es durch Drehungen nicht verändert wird.
- Fehlerfälle:
- * Picture overflow
- Zu viele Befehle in einem PICTURE
- * Picture is three dimensional
-
-#type("times10")##on("b")#mark#off("b")##type("times8")#
- PROC mark (PICTURE VAR p, REAL CONST size, INT CONST no)
- Zweck: Es wird ein Marker mit der Größe #on("i")#size#off("i")# in Prozenten der Diagonalen der Zeichen­
- fläche an der aktuellen Stiftposition ausgegeben, ohne diese zu verändern. Es
- sollten dabei mindestens 10 verschiedene Marker gewählt werden können.
- Fehlerfälle:
- * Picture overflow
- Zu viele Befehle in einem PICTURE
-
-#type("times10")##on("b")#dim#off("b")##type("times8")#
- INT PROC dim (PICTURE CONST pic)
- Zweck: Liefert die Dimension eines PICTURE.
-
-#type("times10")##on("b")#pen#off("b")##type("times8")#
- INT PROC pen (PICTURE CONST p)
- Zweck: Liefert den virtuellen Stift des PICTURE
-
- PICTURE PROC pen (PICTURE CONST p, INT CONST pen)
- Zweck: Setzen des (virtuellen) Stiftes eines PICTURE.
- Bei #on("i")#pen#off("i")# = 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.
-
-#type("times10")##on("b")#extrema#off("b")##type("times8")#
- 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
-
-#type("times10")##on("b")#where#off("b")##type("times8")#
- PROC where (PICTURE CONST p, REAL VAR x, y, z)
- Zweck: Die Prozedur liefert die aktuelle Stiftposition.
- Fehlerfälle:
- * Picture is two dimensional
-
- PROC where (PICTURE CONST p, REAL VAR x, y, z)
- Zweck: Die Prozedur liefert die aktuelle Stiftposition. Fehlerfälle:
- * Picture is three dimensional
-
-#type("times10")##on("b")#rotate#off("b")##type("times8")#
- PROC rotate (PICTURE VAR p, REAL CONST angle)
- Zweck: Das PICTURE wird um den Punkt (0, 0) um den Winkel #on("i")#angle#off("i")# (im Gradmaß) im
- mathematisch positiven Sinn gedreht.
-
- PROC rotate (PICTURE CONST p, REAL CONST phi, theta, lambda)
- Zweck: Das PICTURE wird um den Winkel #on("i")#lambda#off("i")# um die Drehachse #on("i")#(phi, theta)#off("i")# ge­
- dreht.
-
-#type("times10")##on("b")#stretch#off("b")##type("times8")#
- PROC stretch (PICTURE VAR pic, REAL CONST sx, sy)
- Zweck: Das PICTURE wird in X-Richtung um den Faktor #on("i")#sx#off("i")#, in Y-Richtung um den
- Faktor #on("i")#sy#off("i")# gestreckt (bzw. gestaucht). Dabei bewirkt der Faktor
- s > 1 eine Streckung
- 0 < s < 1 eine Stauchung
- s < 0 zusätzlich eine Achsenspiegelung.
- 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
-
-#type("times10")##on("b")#translate#off("b")##type("times8")#
- PROC translate (PICTURE VAR p, REAL CONST dx, dy)
- Zweck: Das PICTURE wird um #on("i")#dx#off("i")# und #on("i")#dy#off("i")# verschoben. Fehlerfälle:
- * Picture is three dimensional
-
- PROC translate (PICTURE VAR p, REAL CONST dx, dy, dz)
- Zweck: Das PICTURE wird um #on("i")#dx, dy#off("i")# und #on("i")#dz#off("i")# verschoben. Fehlerfälle:
- * Picture is two dimensional
-
-
-#type ("trium12")#
-#on("b")#2. PICFILE-Prozeduren#off("b")#
-#type ("times8")#
-
-#type("times10")##on("b")#plot#off("b")##type("times8")#
- PROC plot (TEXT CONST name)
- Zweck: Der PICFILE mit dem Namen #on("i")#name#off("i")# wird entsprechend der angegebenen Dar­
- stellungsart gezeichnet. Diese Parameter (#on("i")#perspective, orthographic, oblique, view,
- window etc.#off("i")#) müssen vorher eingestellt werden.
- Fehlerfälle:
- * PICFILE does not exist
- Es existiert kein PICFILE mit dem Namen #on("i")#name#off("i")#
-
- PROC plot (PICFILE VAR p)
- Zweck: Der PICFILE #on("i")#p#off("i")# wird entsprechend der angegebenen Darstellungsart gezeichnet.
- Diese Parameter müssen vorher eingestellt werden:
-
- #on("b")#zweidimensional:#off("b")#
- obligat: #on("i")#window#off("i")# (zweidimensional)
- optional: #on("i")#view#off("i")# (zweidimensional)
- #on("i")#viewport#off("i")#
- #on("i")#select pen#off("i")#
-
- #on("b")#dreidimensional:#off("b")#
- obligat: #on("i")#window#off("i")# (dreidimensional)
- optional: #on("i")#view#off("i")# (dreidimensional)
- #on("i")#orthographic | perspective | oblique#off("i")#
- #on("i")#viewport#off("i")#
- #on("i")#select pen#off("i")#
-
-
-#type("times10")##on("b")#select pen#off("b")##type("times8")#
- PROC select pen (PICFILE VAR p, INT CONST pen, colour, thickness, line type)
- Zweck: Für die Darstellung des Bildes #on("i")#p#off("i")# soll dem #on("i")#virtuellen#off("i")# Stift #on("i")#pen#off("i")# ein realer Stift
- zugeordnet werden, der möglichst die Farbe #on("i")#colour#off("i")# und die Dicke #on("i")#thickness#off("i")# hat
- und dabei Linien mit dem Typ #on("i")#line type#off("i")# zeichnet. Es wird die beste Annäherung
- für das Ausgabegerät genommen.
- Dabei gelten folgende Vereinbarungen:
-
- #on("b")#Farbe:#off("b")# 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("b")#Dicke:#off("b")# 0 Standardstrichstärke des Endgerätes
- > 0 Strichstärke in 1/10 mm.
-
-
- #on("b")#Linientyp:#off("b")#
- 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
-
-
- Die hier aufgeführten Möglichkeiten müssen nicht an allen graphischen Endge­
- räten vorhanden sein. Der geräteabhängige Graphik-Treiber wählt jeweils die
- bestmögliche Annäherung.
-
- Fehlerfälle:
- * pen out of range
- #on("i")#pen#off("i")# muss im Bereich 1-16 sein.
-
-#type("times10")##on("b")#background#off("b")##type("times8")#
- PROC background (PICFILE VAR p, INT CONST colour)
- Zweck: Der Hintergrund wird auf die Farbe #on("i")#colour#off("i")# (s.o.) gesetzt wenn möglich.
- Bei der Angabe #on("i")#background (p, 0)#off("i")# wird das Löschen des Bildschirms unterdrückt,
- so daß das Zeichen mehrerer PICFILE auf einem Blatt möglich wird.
-
- INT PROC background (PICFILE CONST p):
- Zweck: Liefert die eingestellte Hintergrundfarbe.
-
-#type("times10")##on("b")#view#off("b")##type("times8")#
- PROC view (PICFILE VAR p, REAL CONST alpha)
- Zweck: Setzt den Winkel der Y-Achse zur Senkrechten auf #on("i")#alpha#off("i")# Grad, falls diese nicht
- senkrecht auf der Betrachtungsebene steht.
-
- PROC view (PICFILE VAR p, REAL CONST phi, theta)
- Zweck: Dreidimensionale Bilder werden häufig nicht direkt von vorne dargestellt, son­
- dern für die Betrachtung gedreht. Mit der Prozedur #on("i")#view#off("i")# kann die Betrachtungs­
- richtung durch die Polarwinkel #on("i")#phi#off("i")# und #on("i")#theta#off("i")# (im Gradmass) angegeben werden.
- Voreingestellt ist #on("i")#phi#off("i")# = 0 und #on("i")#theta#off("i")# = 0, d.h. senkrecht von oben (Die #on("i")#X-
- Achse#off("i")# bildet die Horizontale und die #on("i")#Y-Achse#off("i")# bildet die Vertikale).
- Im Gegensatz zu #on("i")#rotate#off("i")# hat #on("i")#view#off("i")# keine Wirkung auf das eigentliche Bild (die
- PICTURE werden nicht verändert), sondern nur auf die gewählte Darstellung. So
- addieren sich zwar aufeinanderfolgende #on("i")#Rotationen#off("i")#, #on("i")#view#off("i")# aber geht immer von der
- Nullstellung aus. Auch kann das Bild durch eine #on("i")#Rotation#off("i")# ganz oder teilweise aus
- oder in das Darstellungsfenster (#on("i")#window#off("i")# gedreht werden. Bei #on("i")#view#off("i")# 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 Koordinaten angegeben.
- (Der Betrachtungsvektor muß nicht normiert sein).
-
-#type("times10")##on("b")#viewport#off("b")##type("times8")#
- PROC viewport (PICFILE VAR p, REAL CONST hormin, hormax, vertmin, vertmax)
- 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 physikalischen Zeichen­
- fläche des Gerätes hat die Koordinaten (0, 0). Die definierte Zeichenfläche er­
- streckt sich
-
- #on("i")#hormin - hormax#off("i")# in der Horizontalen,
- #on("i")#vertmin - vertmax#off("i")# in der Vertikalen.
-
- So liegt der linke untere Eckpunkt dann bei (#on("i")#hormin, hormax#off("i")#), der rechte obere
- Eckpunkt bei (#on("i")#hormax, vertmax#off("i")#).
-
- Damit sowohl geräteunabhängige als auch maßstabgetreue Zeichnungen möglich
- sind, können die Koordinaten in drei Arten spezifiziert werden:
- a) #on("b")#Gerätekoordinaten#off("b")#
- Die Koordinaten können Werte von 0.0 bis 2.0 annehmen. Dabei hat die
- kürzere Seite der physikalischen Zeichenfläche definitionsgemäß die Länge
- 1.0.
- b) #on("b")#Absolute Koordinaten#off("b")#
- Die Werte werden in #on("i")#cm#off("i")# angegeben. Dabei müssen die Maximalwerte aber
- größer als 2.0 sein, da sonst Fall a) angenommen wird.
- c) #on("b")#Maximale Zeichenfläche#off("b")# Bei der Angabe (0.0, 0.0, 0.0, 0.0) wird die maxi­
- male physikalische Zeichenfläche eingestellt.
-
- Voreingestellt ist
- viewport (0.0, 0.0, 0.0, 0.0)
- d.h. die größtmögliche physikalische Zeichenfläche, beginnend mit der linken
- unteren Ecke.
- Der Abbildungsmaßstab wird durch das Zusammenspiel von #on("i")#viewport#off("i")# und
- #on("i")#window#off("i")# festgelegt (s. dort). Dabei ist insbesondere darauf zu achten, daß winkel­
- treue Darstellung nur bei gleichen Verhältnissen von X-Bereich und Breite bzw.
- von Y-Bereich und Höhe möglich ist.
-
-
-#type("times10")##on("b")#window#off("b")##type("times8")#
- 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 darzustellende
- Fenster definiert. Alle Bildpunkte, deren X-Koordinaten im Intervall [#on("i")#x min, x
- max#off("i")#] und deren Y-Koordinaten im Bereich [#on("i")#y min, y max#off("i")#] liegen, gehören zum
- definierten Fenster.Vektoren, die außerhalb dieses Fensters liegen, gehen über die
- durch #on("i")#viewport#off("i")# Fläche hinaus und werden abgeschnitten.
-
- 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("i")#x min, x max#off("i")#],
- deren Y-Koordinaten im Bereich [#on("i")#y min, y max#off("i")#] und deren Z-Koordinaten im
- Bereich [#on("i")#z min, z max#off("i")#] liegen, gehören zum definierten Fenster. Dieses dreidi­
- mensionale Fenster (#on("i")#Quader#off("i")#) wird entsprechend der eingestellten Projektionsart
- (orthographisch, perspektivisch oder schiefwinklig) und den Betrachtungswinkeln
- (s. #on("i")#view#off("i")#) auf die spezifizierte Zeichenfläche abgebildet.
- Anders als im zweidimensionalen Fall ist das Problem der Maßstaäbe nicht mehr
- nur durch das Zusammenspiel von #on("i")#window#off("i")# und #on("i")#viewport#off("i")# zu beschreiben. Hier
- spielen auch die Projektionsart und Darstellungswinkel herein.
-
-#type("times10")##on("b")#oblique#off("b")##type("times8")#
- PROC oblique (PICFILE VAR p, REAL CONST a, b)
- Zweck: Bei dem (dreidimensionalen) Bild #on("i")#p#off("i")# wird #on("u")#schiefwinklig#off("u")# als gewünschte Projek­
- tionsart eingestellt. Dabei ist (#on("i")#a, b#off("i")#) der Punkt auf der X-Y-Ebene, auf den der
- EinheitsVektor der Z-Richtung abgebildet werden soll.
-
-#type("times10")##on("b")#orthographic#off("b")##type("times8")#
- PROC orthographic (PICFILE VAR p)
- Zweck: Bei dem (dreidimensionalen) Bild #on("i")#p#off("i")# wird #on("u")#orthographisch#off("u")# als gewünschte Projek­
- tionsart eingestellt. Bei der orthographischen Projektion wird ein dreidimensio­
- naler Körper mit parallelen Strahlen senkrecht auf der Projektionsebene abge­
- bildet.
-
-#type("times10")##on("b")#perpective#off("b")##type("times8")#
- PROC perspective (PICFILE VAR p, REAL CONST cx, cy, cz)
- Zweck: Bei dem (dreidimensionalen) Bild #on("i")#p#off("i")# wird #on("u")#perspektivisch#off("u")# als gewünschte Projek­
- tionsart eingestellt. Der Punkt (#on("i")#cx, 1/cy, cz#off("i")#) ist der Fluchtpunkt der Projektion,
- d. h. alle Parallen zur Z-Achse schneiden sich in diesem Punkt.
-
-#type("times10")##on("b")#extrema#off("b")##type("times8")#
- 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)
- Zweck: Die Prozedur liefert die größten und kleinsten Werte des PICFILE.
-
-#type ("trium12")#
-#on("b")#3. Prozeduren zur Manipulation von PICFILE#off("b")#
-#type("times 8")#
-
-#type("times10")##on("b")#:=#off("b")##type("times8")#
- OP := (PICFILE VAR l, PICFILE CONST r)
- Zweck: Zuweisung des PIFILEs #on("i")#r#off("i")# an das PICFILE #on("i")#l#off("i")#
-
- OP := (PICFILE VAR p, DATASPACE CONST d)
- Zweck: Assoziert die PICFILE Variable #on("i")#p#off("i")# mit dem Datenraum #on("i")#d#off("i")# und initialisiert die
- Variable, wenn nötig.
- Fehlerfälle:
- * dataspace is no PICFILE
- Der anzukoppelnde Datenraum hat einen unzulässigen Typ
-
-#type("times10")##on("b")#picture file#off("b")##type("times8")#
- DATASPACE PROC picture file (TEXT CONST name)
- Zweck: Assoziaten eines benannten Datenraumes mit einem PICFILE (s.o.).
-
-#type("times10")##on("b")#to pic#off("b")##type("times8")#
- PROC to pic (PICFILE VAR p, INT CONST pos)
- Zweck: Positioniert auf das PICTURE Nummer #on("i")#pos#off("i")#.
- Fehlerfälle:
- * Position underflow
- Es wurde eine Position kleiner Null angegeben.
- * Position after eof
- Es wurde versucht, hinter das Ende eines PICFILE zu positionieren. Die letzte
- erlaubte Position ist #on("i")#pictures (p)+1#off("i")#.
-
-#type("times10")##on("b")#up#off("b")##type("times8")#
- 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("i")#n#off("i")# Picture zurück.
- Fehlerfall:
- * Position underflow
- Es wurde versucht, vor das erste PICTURE zu positionieren
-
-#type("times10")##on("b")#down#off("b")##type("times8")#
- 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. Die letzte
- erlaubte Position ist #on("i")#pictures (p)+1#off("i")#.
-
- PROC down (PICFILE VAR p, INT CONST n)
- Zweck: Positioniert genau #on("i")#n#off("i")# Picture vorwärts.
- Fehlerfall:
- * Position after eof
- Es wurde versucht, hinter das Ende eines PICFILE zu positionieren Die letzte
- erlaubte Position ist #on("i")#pictures (p)+1#off("i")#.
-
-#type("times10")##on("b")#delete picture#off("b")##type("times8")#
- PROC delete picture (PICFILE VAR p)
- Zweck: Löscht das aktuelle PICTURE
-
-#type("times10")##on("b")#insert picture#off("b")##type("times8")#
- PROC insert picture (PICFILE VAR p)
- Zweck: Fügt ein PICTURE #on("u")#vor#off("u")# der aktuellen Position ein.
-
-#type("times10")##on("b")#read picture#off("b")##type("times8")#
- PROC read picture (PICFILE CONST p, PICTURE VAR pic)
- Zweck: Liest das aktuelle PICTURE.
-
-#type("times10")##on("b")#write picture#off("b")##type("times8")#
- PROC write picture (PICFILE VAR p, PICTURE CONST pic)
- Zweck: Schreibt das PICTURE #on("i")#pic#off("i")# auf der aktuellen Position.
-
-#type("times10")##on("b")#put picture#off("b")##type("times8")#
- PROC put picture (PICFILE VAR p, PICTURE CONST pic)
- Zweck: Schreibt das PICTURE #on("i")#pic#off("i")# an die aktuelle Position und erhöht diese um 1.
-
-#type("times10")##on("b")#get picture#off("b")##type("times8")#
- PROC get picture (PICFILE VAR p, PICTURE VAR pic)
- Zweck: Liest das PICTURE #on("i")#pic#off("i")# an dir aktuellen Position und erhöht diese um 1.
-
-#type("times10")##on("b")#eof#off("b")##type("times8")#
- BOOL PROC eof (PICFILE CONST p)
- Zweck: Liefert genau dann #on("i")#TRUE#off("i")#, wenn das Ende eines PICFILE erreicht ist.
-
-#type("times10")##on("b")#picture no#off("b")##type("times8")#
- INT PROC picture no (PICFILE CONST p)
- Zweck: Liefert die Nummer des aktuellen PICTURE.
-
-#type("times10")##on("b")#pictures#off("b")##type("times8")#
- INT PROC pictures (PICFILE CONST p)
- Zweck: Liefert die Anzahl PICTURE eines PICFILE.
-
-
-#page#
-#type ("trium12")#
-#on("b")#4. Auslieferungsumfang#off("b")#
-#type ("times8")#
-
- Die EUMEL-GRAPHIK wird auf einer Diskette mit folgendem Inhalt ausgeliefert.
- Archive #on("i")#Graphik#off("i")#:
-
- "gen Graphik"
- "gen Plotter"
- "GRAPHIK.book"
- "GRAPHIK.Picfile"
- "GRAPHIK.Transform"
- "GRAPHIK.Plot"
- "GRAPHIK.Plotter"
- "GRAPHIK.Server"
- "GRAPHIK.vektor plot"
- "ZEICHENSATZ"
- "PC.plot"
- "HP7475.plot"
- "Beispiel.Kreuz"
- "Beispiel.Sinus"
-
-
-
- #on("u")#Dateiinhalte#off("u")#
-
- 1. "gen Graphik" Installationsprogramm für Terminals
- 2. "gen Plotter" Installationsprogramm für Plotter
- 3. "GRAPHIK.book" enthält diese Beschreibung.
- 4. "GRAPHIK.Picfile" enthält die Pakete #on("i")#picture#off("i")# und #on("i")#picfile#off("i")#.
- 5. "GRAPHIK.Transform" stellt das Paket #on("i")#transformation#off("i")# zur Verfügung, in dem
- interne Prozeduren zur Projektion definiert werden.
- 6. "GRAPHIK.Plot" definiert die Prozedur #on("i")#plot#off("i")# zur Darstellung eines
- PICFILES auf dem Terminal
- 7. "GRAPHIK.Plotter" definiert die Prozedur #on("i")#plotter#off("i")# zur Darstellung eines
- PICFILES auf dem Plotter
- 8. "GRAPHIK.Server" Server für einen Plotter-Spool
- 9. "GRAPHIK.vektor plot" enthält Hilfsprogramme, die bei der Erstellung einer
- eigenen Terminalanpassung benutzt werden können.
- 10. "ZEICHENSATZ" enthält einen Zeichensatz für Terminals die im Graphik
- Modus keinen Text ausgeben können.
- 11. "PC.plot" Terminalanpassung für IBM-PC und ähnliche.
- 12. "HP7475.plot" Terminalanpassung für HP7474-Plotter und Geräte mit
- HP-GL.
- 13. "Beispiel.Kreuz" Beispielprogramm
- 14. "Beispiel.Sinus" Beispielprogramm
-
-#type ("trium12")#
-#on("b")#5. Installation#off("b")#
-#type ("times8")#
-
-
- In der Datei #on("i")#gen Graphik#off("i")# ist ein Installationspragramm enthalten. Nach dem Starten des
- Programms mit #on("i")#run ("gen Graphik")#off("i")# fragt es nach dem Dateinamen der Terminalanpas­
- sung.
- Steht keine Terminalanpassung für ein Endgerät zur Verfügung (und kann auch nicht
- beschafft werden) so kann man durch Insertieren der Datei #on("i")#GRAPHIK.Picfile#off("i")# lediglich die
- Leistungen der Pakete #on("i")#Picture#off("i")# und #on("i")#Picfile#off("i")# nutzen, ohne die erzeugten Graphiken darstellen
- zu können.
- Zur Benutzung eines #on("i")#Plotters#off("i")# über einen Spooler wird die Datei #on("i")#gen Plotter#off("i")# gestartet.
-
-
- Beispiel:
- 1. archive ("Graphik")
- 2. fetch all (archive)
- 3. release (archive)
- 4. run ("gen Graphik")
- <-- PC.Plot
-
-
-#type ("trium12")#
-#on("b")#6. Besonderheiten der PC.plot-Anpassung#off("b")#
-#type ("times8")#
-
-
- Da der IBM-PC verschiedene Graphik- und Text-Modi kennt, wird durch das Pro­
- gramm #on("i")#PC.plot#off("i")# die Prozedur #on("i")#graphik#off("i")# zusätzlich zur Verfügung gestellt. Sie erlaubt es den
- PC in verschiedenen Graphik-Modi zu betreiben.
-
- PROC graphik (INT CONST modus, pause)
-
- Modus: 0 --- Keine Graphik (normaler Textmodus)
- 1 --- hochauflösende Graphik, 50 Zeilen,
- 640 * 400 Punkte, einfarbig
- 2 --- hochauflösende Graphik, 25 Zeilen,
- 640 * 400 Punkte, einfarbig
- 3 --- mittlere Auflösung, 640 * 200 Punkte, 3 Farben
- 4 --- IBM-PC Auflösung, 320 * 200 Punkte, 3 Farben.
-
- Pause: Da der PC bei #on("i")#end plot#off("i")# wieder in den Normalmodus umschaltet und die Graphik
- dann nicht mehr zu sehen ist, kann man eine #on("i")#pause#off("i")# angeben. Die hier eingestellte
- Zeit ist aber nicht die Länge der Pause, sondern der Kehrwert der Blinkfrequenz
- proportional.
-
-
diff --git a/doc/graphic/graphik beschreibung b/doc/graphic/graphik beschreibung
deleted file mode 100644
index 53ebe49..0000000
--- a/doc/graphic/graphik beschreibung
+++ /dev/null
@@ -1,661 +0,0 @@
-#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)
-