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