diff options
Diffstat (limited to 'doc/graphic/Altes Handbuch - Teil 10 - Graphik')
| -rw-r--r-- | doc/graphic/Altes Handbuch - Teil 10 - Graphik | 831 | 
1 files changed, 0 insertions, 831 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.  -  -  -  -  -  - | 
