home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-10-03 | 68.0 KB | 2,361 lines |
- .pl 79
- .m1 2
- .m2 2
- .m3 2
- .m4 2
- .rm 70
- .nf
- .pc #
- .sp 24
- S G L
-
- Scientific Graphics Library
-
-
-
- Autor: Joachim Tworz
- Lange Furche 3
- 7400 Tⁿbingen
- West Germany
-
- Bitnet: PETWKA1@DTUZDV5A
-
- Institut fⁿr Theoretische Astrophysik
- Auf der Morgenstelle 12c
- 7400 Tⁿbingen
-
- Copyright: Alle die Bibliothek beinhaltenden Dateien k÷nnen kopiert und
- weiterverbreitet werden.
- Eine kommerzielle Nutzung der Bibliothek und Teilen davon ist
- ausgeschlossen.
- Fehler/─nderungen/Verbesserungen bitte dem Autor mitteilen.
- Erweiterungen sind erwⁿnscht !
-
- Tⁿbingen, 17. 10. 1988
-
-
-
- .bp
- ----------------------------------------------------------------------
- Inhalt:
- ----------------------------------------------------------------------
-
- 1. ........................................................... Vorwort
- 2. ................................................ Konzeption von SGL
- 3. ........................................ Aufbau eines SGL-Programms
- 4. ....................................... Beschreibung der Funktionen
-
- Anhang:
-
- A ................................ Alphabetische Liste der Funktionen
- B ................................... Erstellen der Graphikbibliothek
- C ..................................................Umfang des Pakets
- .bp
- .fo ; ;[ # ];
- ----------------------------------------------------------------------
- 1. Vorwort
- ----------------------------------------------------------------------
-
- Das vorliegende Paket entstand aus dem Bedⁿrfniss, wissenschaftliche
- Grafiken auf dem Amiga darzustellen. Dabei stellte sich die Frage, ob
- das Packet als geschlossenes Programm (wie zB. Egraph) oder als Bib-
- liothek konzipiert werden sollte. Ein Programm ist in der Bedienung
- einfacher und fⁿr den Benutzer leichter zu erlernen als der Umgang
- mit einer Bibliothek. Jedoch gibt eine Bibliothek mehr FlexibilitΣt
- und erm÷glicht es, den Bedⁿrfnissen angepasste Programme selbst zu
- entwickeln, was schlie▀lich den Ausschlag gab, ein Bibliothekskonzept
- zu verwirklichen.
- Als Vorbild diente dabei das an der UniversitΣt Stuttgart entwickelte
- Grafikpaket PICASSO. Die vorliegende Version 1.0 von SGL hat in etwa
- die gleichen M÷glichkeiten wie sie der 2D-Teil von PICASSO bietet. Es
- wurde jedoch darauf geachtet, da▀ einige MΣngel, die PICASSO aufweist
- vermieden wurden. Als Programmiersprache fand C Verwendung. Das Paket
- wurde mit dem Aztec Compiler Version 3.6 der Fa. Manx entwickelt.
- Zur Zeit besteht die Bibliothek aus ca 45 Funktionen, wovon ca 30 dem
- Benutzer direkt zur Verfⁿgung stehen.
-
- Das Schwergewicht der Bibliothek wurde auf das Zeichnen von Kurven und
- deren Interpolation gelegt;dementsprechend ist die Zahl der dafⁿr vor-
- gesehenen Funktionen relativ gro▀. Um eine m÷glichst hohe FlexibilitΣt
- zu erreichen, wurden aber auch ganz elementare Funktionen zum Zeichnen
- von einfachen Linien und Figuren beigefⁿgt.
-
- Fⁿr die Zukunft sind ein 3D-Teil und gerΣteunabhΣngige Schriftfonts
- (Vektorfonts) vorgesehen.
-
- .bp
- .he ;2.; ;Konzeption von SGL
- 2. Konzeption von SGL
-
-
- Die in SGL enthaltenen Funktionen k÷nnen grob in zwei Klassen unter-
- teilt werden:
-
- 1. Benutzerfunktionen
-
- 2. Kernfunktionen
-
- Die erste Klasse kann von einem Programm direkt aufgerufen werden,wΣh-
- rend die zweite Klasse Hilfsfunktionen beinhaltet, die von denen der
- ersten Klasse gerbraucht werden. Alle Funktionen wurden so geschrie-
- ben, da▀ ihre Anordnung in der Bibliothek so gewΣhlt werden kann, da▀
- jeder Single Pass Linker mit einem Durchlauf auskommt.
-
- Entsprechend ihrer Aufgabenstellung werden die Funktionen in verschie-
- dene Kategorien eingeteilt:
-
- * Initialisierung
-
- * Rahmen, Bild und Skalierung
-
- * Achsen und Raster
-
- * Zeichnen von Linien
-
- * Zeichnen von Figuren
-
- * Zeichnen von Kurven
-
- * Schreiben von Texten
-
- * Setzen und ─ndern von Parametern und Einstellungen
-
- * Kernfunktionen
-
-
- Fast alle Funktionen besitzen eine Parameterliste, ⁿber die ihr Ver-
- halten gesteuert wird. Die Reihenfolge, in der man Funktionen aufru-
- fen kann ist, wie man sich denken kann, nicht immer beliebig. Am An-
- fang einer jeden Funktion wird deshalb ⁿberprⁿft, ob die Funktion auf-
- gerufen werden kann oder ob sonstige Fehler auftraten. Trat ein Feh-
- ler auf, dann wird eine Meldung der Form
-
- Funktionsname: Fehlerbeschreibung
-
- auf die Datei <sgl.log> geschrieben und ein entsprechender Rⁿckgabe-
- wert gesetzt. Wie auf Rⁿckgabewerte reagiert wird, bleibt jedem selbst
- ⁿberlassen. Es werden bewu▀t keine Sprⁿnge (exit) aus dem Programm
- vorgenommen um dem Benutzer Gelegenheit zu geben, ein Programm ord-
- nungsgemΣ▀ zu beenden.
-
- Jede mit dem Paket erzeugte Graphik kann als IFF-Datei unter dem Namen
- <sgl.iff> abgespeichert werden.
-
- Um eine Grafik auf einem AusgabegerΣt (Drucker) auszugeben, wird das
- AmigaDOS-Kommando <GraphicDump> verwendet (das ⁿber ein entsprechendes
- Menⁿ aktiviert wird).
-
- Gleitkommaoperationen werden in doppelter Genauigkeit (64 Bit) durch-
- gefⁿhrt, Integerzahlen vom Typ <int> sind 32 Bit lang.
-
- .bp
- .he ;3.; ;Aufbau eines SGL-Programms
- 3. Aufbau eines SGL-Programms
-
-
- Jedes die SGL-Bibliothek benutzende Programm wird in bestimmten Teilen
- mehr oder weniger denselben Aufbau haben. Das liegt daran, da▀ be-
- stimmte Funktionen immer in der gleichen Reihenfolge aufgerufen werden
- mⁿssen (Initialisierung, Rahmengr÷▀e, Bildgr÷▀e etc.).
-
- Nachdem das Packet mit der Funktion INITIALIZE() initialisiert wurde,
- mu▀ die Gr÷▀e des Bildes und innerhalb dessen ein Bereich, in dem ge-
- zeichnet werden soll angegeben werden. Die dafⁿr vorgesehenen Funktio-
- nen FRAME() und PICTURE() erwarten diese Angaben nicht notwendigerwei-
- se in Pixelkoordinaten; es sind beliebige Einheiten wΣhlbar, die dann
- intern in Pixelkoordinaten umgerechnet werden. Die Verbindung zwischen
- dem eigenen Wertebereich (etwa bei einer Kurve, die man zeichnen will)
- und dem des durch PICTURE() festgelegten, wird mit der Funktion
- REGION() hergestellt. Schlie▀lich mu▀ zur Ausgabe der Graphik noch ein
- Fenster bereitgestellt werden,was mit der Funktion MKWIND() geschieht.
- Damit k÷nnte ein Programm das folgende Aussehen haben:
-
-
- main()
- {
- .
- .
- INITIALIZE(Bildschirmaufl÷sung,Fehlerausgabe);
- FRAME(Rahmenbreite,Rahmenh÷he);
- PICTURE(Bildbreite,Bildh÷he,X-Versatz,Y-Versatz);
- REGION(Xmin,Xmax,Ymin,Ymax);
- MKWIND();
- .
- .
- weitere SGL-Funktionen
- .
- .
- FINISH();
- .
- .
- }
-
-
- Ganz wichtig ist es, am Ende die Funktion FINISH() aufzurufen. Sie
- sorgt dafⁿr, da▀ alle wΣhrend des Programmlaufs ge÷ffneten AmigaDOS-
- Bibliotheken, Schriftfonts, Dateien etc. wieder geschlossen werden.
-
- .bp
- .he ;4.; ;Funktionen
- 4. Beschreibung der Funktionen
-
-
- Die Beschreibung der Funktionen erfolgt in einem einheitlichen Format:
-
- I. Funktionsbeschreibung
- II. Funktionstyp
- III. Syntax fⁿr den Aufruf
- IV. Typ der ▄bergabeparameter
- V. Parameterbeschreibung
- VI. Rⁿckgabewerte
- VII. Vorraussetzungen zum Aufruf der Funktion
- VIII. Weitere Hinweise
-
- Im nachfolgenden werden die Funktionen in die Kategorien
-
- (1S) Initialisierung
- (2S) Rahmen, Bild und Skalierung
- (3S) Achsen und Raster
- (4S) Zeichnen von Linien
- (5S) Zeichnen von Figuren
- (6S) Zeichnen von Kurven
- (7S) Schreiben von Texten
- (8S) Setzen und ─ndern von Parametern
- (9S) Mathematische Funktionen
-
- unterteilt.
-
- **********************************************************************
- !!! Der ▄bersicht halber werden Funktionsnamen in Gro▀buchstaben ge-
- schrieben. Bei Benutzung in eigenen Programmen, mⁿssen die Namen klein
- geschrieben werden.
- **********************************************************************
-
- .bp
- .he ;4.1;Funktionen;Initialisierung
- INITIALIZE()......................................................(1S)
-
-
- Bevor eine Funktion aus SGL benutzt werden kann, mu▀ eine Initialisie-
- rung der Bibliothek vorgenommen werden. Das geschieht mit
-
- int INITIALIZE();
-
- INITIALIZE(Mode,Fehler)
-
- int Mode;
- int Fehler;
-
-
- Parameter:
-
- Mode Definiert die Bildschirmaufl÷sung.
-
- 0: 640x400 High Resolution Interlace
- 1: 640x200 High Resolution Non Interlace
- 2: 320x400 Low Resolution Interlace
- 3: 320x200 Low Resolution Non Interlace
-
- Fehler Steuert die Fehlerausgabe auf die Protokolldatei.
-
- 0: Ausgabe erfolgt in deutscher Sprache
- 1: Ausgabe erfolgt in englischer Sprache
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler beim ÷ffnen der Protokolldatei
-
-
- .bp
- MKWIND()..........................................................(1S)
-
-
- Die Ausgabe einer Graphik erfolgt immer auf dem Bildschirm. Dazu mu▀
- ein Fenster bereitgestellt werden mit
-
- int MKWIND();
-
- MKWIND()
-
-
- Die Funktion ben÷tigt keine Argumente, da alle erforderlichen Parameter
- durch INITIALIZE() besetzt werden.
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- -1: Fehler beim ╓ffnen von <intuition.library>
- -2: Fehler beim ╓ffnen von <graphics.library>
- -3: Fehler beim ╓ffnen von <diskfont.library>
- -4: Fehler beim ╓ffnen eines neuen Screens
- -5: Fehler beim ╓ffnen eines neuen Windows
- -6: Die Funktion wurde schon aufgerufen
-
- Funktionen die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE()
-
- Nach Aufruf steht ein Menue zur Verfⁿgung, das mit der Funktion FINISH
- aktiviert wird.
-
- Menuepunkte: SAVE: Speichert eine Grafik als IFF (ILBM) Datei.
-
- PRINT: Macht eine Hardcopy der Grafik. (mittels Graphic-
- dump, large format)
-
- CLOSE: Schlie▀t den Grafikbildschirm.
-
-
- Siehe auch: INITIALIZE()[1S]
-
- .bp
- FINISH()..........................................................(1S)
-
-
- Die Funktion sorgt fⁿr eine ordnungsgemΣ▀e Beendigung eines SGL-Pro-
- gramms. Mit ihr werden alle durch die ⁿbrigen Funktionen ge÷ffneten
- Bibliotheken, Schriftfonts, Fenster, Dateien etc. wieder geschlossen.
-
- void FINISH()
-
- FINISH()
-
- Parameter: keine
-
- Rⁿckgabewert: keiner
-
- Siehe auch: MKWIND()[1S]
- .bp
- .he ;4.2;Funktionen;Rahmen, Bild, Skalierung
- FRAME()...........................................................(2S)
-
-
- Bevor Linien, Kurven etc. gezeichnet werden k÷nnen, mu▀ ein Rahmen de-
- finiert werden, innerhalb dessen dann gezeichnet wird. Das geschieht
- mit
-
- void FRAME();
-
- FRAME(Breite, H÷he)
-
- double Breite;
- double H÷he;
-
-
- Parameter:
-
- Breite Breite des Rahmens in beliebigen Einheiten
-
- H÷he H÷he des Rahmens in beliebigen Einheiten
-
-
- Rⁿckgabewert: keiner
-
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE()
-
-
- Mit dem Aufruf wird ein Koordinatensystem "frame" definiert, dessen
- Ursprung die linke, untere Rahmenecke bildet.
- Wenn die Funktion nicht aufgerufen wird, dann ist der Rahmen mit einer
- Voreinstellung von 320x210 mm (ca. Din A4) besetzt.
-
- .bp
- PICTURE().........................................................(2S)
-
-
- Innerhalb des mit FRAME() festgelegten Rahmens wird zusΣtzlich noch
- ein Bildebereich definiert. Das kann dazu dienen, mehrere kleine Bil-
- der innerhalb eines Rahmens zu zeichnen oder um den n÷tigen Platz fⁿr
- Texte, Achsenbeschriftungen etc. zu schaffen.
-
- void PICTURE();
-
- PICTURE(Breite, H÷he, X-offset, Y-offset)
-
- double Breite;
- double H÷he;
- double X-offset;
- double Y-offset;
-
-
- Parameter:
-
- Breite Breite des Bildes
-
- H÷he H÷he des Bildes
-
- X-offset Horizontaler Abstand des Bildes von der linken, un-
- teren Rahmenecke
-
- Y-offset Vertikaler Abstand des Bildes von der linken, unteren
- Rahmenecke
-
- Die Einheiten, in der die Parameter angegeben werden, mⁿssen mit denen
- von FRAME() ⁿbereinstimmen.
-
-
- Rⁿckgabewert: keiner
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME()
-
-
- Wird die Funktion nicht aufgerufen, dann sind die Parameter ebenfalls
- mit einer Voreinstellung besetzt. Wenn die Dimensionen des Rahmens
- ⁿberschritten werden, dann wird automatisch verkleinert. Mit PICTURE()
- wird ein Koordinatensystem "picture" definiert, dessen Ursprung die
- linke, untere Bildecke bildet.
-
- Siehe auch: FRAME()[2S]
-
- .bp
- REGION()..........................................................(2S)
-
-
- Um die n÷tigen Skalierungsfaktoren auf der x- und y-Achse zu erhalten,
- mu▀ der darzustellende Wertebereich auf den Achsen (etwa bei einer
- Kurve) bekannt sein. Dazu dient die Funktion
-
- void REGION();
-
- REGION(X-min, X-max, Y-min, Y-max)
-
- double X-min;
- double X-max;
- double Y-min;
- double X-max;
-
-
- Parameter:
-
- X-min Minimaler Wert auf der x-Achse
-
- X-max Maximaler Wert auf der x-Achse
-
- Y-min Minimaler Wert auf der y-Achse
-
- Y-max Maximaler Wert auf der y-Achse
-
-
- Rⁿckgabewert: keiner
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE()
-
-
- Anhand des Wertebereichs auf den Achsen werden alle n÷tigen Skalenfak-
- toren berechnet. Die Skalierung wird dabei mit dem Bildbereich vorge-
- nommen. Die Funktion mu▀ auch dann aufgerufen werden,wenn sich Skalen-
- faktoren von 1.0 zwischen PICTURE() und REGION() ergeben.
- Mit Aufruf der Funktion wird ein drittes Koordinatensystem "region"
- definiert, dessen Ursprung mit dem von "picture" identisch ist, jedoch
- mit den hier definierten Ma▀einheiten rechnet. Die Funktion prⁿft
- auch, ob fⁿr die Achsen ein logarithmischer Ma▀stab m÷glich ist und
- setzt fⁿr jede Achse eine entsprechende interne Markierung.
-
- Siehe auch: PICTURE()[2S]
-
- .bp
- .he ;4.3;Funktionen;Achsen und Raster
- AUTOSCL().........................................................(3S)
-
- Um der Tatsache Rechnung zu tragen, da▀ man oft nicht wei▀, wie eine
- zu zeichnende Kurve aussieht, man insbesondere ihre Extrema nicht
- kennt, wurde eine autmoatisch skalierende Funktion eingebaut. Mit ihr
- erⁿbrigt sich der Aufruf von REGION() und der Achsenroutinen.
- Die Funktion bestimmt zuerst die Extrema, errechnet daraus eine gⁿn-
- stige Beschriftung der Achsen im linearen Ma▀stab und zeichnet damit
- ein Diagramm ohne! die Kurve einzutragen.
-
- int AUTOSCL();
-
- AUTOSCL(n, x, y)
-
- int n;
- double x[n];
- double y[n];
-
-
- Parameter:
-
-
- n Anzahl der Stⁿtzstellen der Kurve
-
- x x-Koordinaten der Kurve
-
- y y-Koordinaten der Kurve
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
-
- Funktionen, die zuvor aufgerufen mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE(), MKWIND()
-
-
- Anhand der berechneten Extrema ruft die Funktion REGION() auf und
- berechnet eine Einheit so, da▀ ca. 5 bis 10 Ticks auf einer Achse
- gezeichnet und beschriftet werden. Die Beschriftung erfolgt bei
- Vielfachen einer Zehnerpotenz von 1, 0.5, 0.25 bzw. 0.2. Der Werte-
- bereich, der REGION() ⁿbergeben wird, ist gegenⁿber dem der Kurve so
- erweitert, da▀ immer ein Tick am Anfang und am Ende einer Achse zu
- liegen kommt.
-
- Es ist klar, da▀ eine automatisch arbeitende Funktion nicht perfekt
- sein kann, wenn der Aufwand in ertrΣglichen Grenzen gehalten werden
- soll. Die Beschriftung erfolgt im Dezimalformat, wobei die erforder-
- liche Mindestanzahl von Dezimalstellen berechnet wird. Diese Methode
- versagt natⁿrlich, wenn die Anzahl der Ziffern so gro▀ wird, da▀ sie
- sich gegenseitig ⁿberlappen. Um in solchen FΣllen dennoch Informa-
- tionen ⁿber die Kurve zu erhalten, werden die Koordinaten des gr÷▀-
- ten und kleinsten Wertes auf die Protokolldatei <sgl.log> geschrie-
- ben.
-
- Siehe auch: LINAX()[3S], LOGAX()[3S], REGION()[2S]
-
- .bp
- GRID()............................................................(3S)
-
-
- Zeichnet Rasterlinien senkrecht zu einer Achse
-
- int GRID();
-
- GRID(Achse, Einheit)
-
- char Achse[2];
- double Einheit;
-
- Parameter:
-
- Achse Achse, bei der Rasterlinien gezeichnet werden sollen
-
- "XG": senkrecht zur x-Achse
-
- "YG": senkrecht zur y-Achse
-
- Einheit Die Interpretation hΣngt davon ab, welcher Ma▀stab fⁿr
- die spezifizerte Achse eingestellt ist. Im Fall eines
- linearen Ma▀stabs werden Rasterlinien bei ganzzahligen
- Vielfachen von Einheit gezeichnet. Beim logarith-
- mischen Ma▀stab wird Einheit in eine Integerzahl umge-
- wandelt und dann als Anzahl von Rasterlinien zwischen
- zwei benachbarten Dekaden interpretiert, wobei eine
- Dekadenposition mit inbegriffen ist. Mit Anzahl = 1.0
- werden Rasterlinien nur an den Dekaden gezeichnet.
-
- Rⁿckgabewert: 0: Kein Fehler
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE(), MKWIND(), LINAX() bzw. LOGAX(),
- AUTOSCL() oder REGION()
-
- Aus dem gesagten ergibt sich, da▀ der Ma▀stab zuvor mit LINAX() oder
- LOGAX() festgelegt werden mu▀.
-
- Siehe auch: LINAX()[3S], LOGAX()[3S], SETPEN()[8S]
-
- .bp
- LINAX()...........................................................(3S)
-
-
- Legt einen linearen Ma▀stab fⁿr eine Achse fest, zeichnet eine Achse,
- Achsenticks mit oder ohne Beschriftung.
-
- int LINAX();
-
- LINAX(Achse, Richtung, LΣnge, Einheit, Text)
-
- char Achse[2];
- int Richtung;
- int Text;
- double LΣnge;
- double Einheit;
-
-
- Parameter:
-
- Achse Achse, die gezeichnet werden soll.
-
- "XL" x-Achse unten
-
- "XU" x-Achse oben
-
- "YL" y-Achse links
-
- "YU" y-Achse rechts
-
- Richtung Richtung der Achsenticks
-
- -1: Ticks nach innen gerichtet (ins Bild hinein)
-
- 1: Ticks nach au▀en gerichtet (vom Bild weg)
-
- LΣnge LΣnge der Ticks in durch FRAME() definierten Einheiten.
- Mit LΣnge = 0.0 werden keine Ticks gezeichnet; Rich-
- tung wird in diesem Fall ignoriert.
-
- Einheit Bei ganzzahligen Vielfachen von Einheit werden Ticks
- gezeichnet.
-
- Beispiel: Der Skalenbereich gehe von 0.0 bis 10.0. Mit
- Einheit = 2.5 werden Ticks bei 0.0, 2.5, 5.0, 7.5 und
- 10.0 gezeichnet.
-
- Text Steuert die Beschriftung der Ticks
-
- 0: Keine Beschriftung
-
- 1: Ticks werden beschriftet
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND()
-
- Die Funktion kann natⁿrlich mehrere Male aufgerufen werden. Das ist
- dann sinnvoll, wenn man Achsen sowohl links und rechts bzw. unten und
- oben haben will oder in einem groben Raster Ticks beschriftet und in
- einem feineren Raster nur Ticks ohne Beschriftung zeichnet.
- Eine Achsenlinie wird bei mehreren Aufrufen mit gleichem Parameter
- Achse nur beim ersten Aufruf gezeichnet. Das gibt die M÷glichkeit,
- unterschiedliche Farben fⁿr die Achse und die Ticks zu wΣhlen.
- Die Beschriftung erfolgt im Dezimalformat. Mit der Funktion SETFMT()
- kann die Anzahl der Dezimalstellen eingestellt werden. Voreingestellt
- ist eine Stelle. Wenn die Beschriftung zu dicht gewΣhlt wurde, dann
- wird so beschriftet, da▀ keine ▄berlappung stattfindet.
-
- Siehe auch: REGION()[2S], LOGAX()[3S], SETPEN()[8S], SETFMT()[8S]
-
- .bp
- LOGAX()...........................................................(3S)
-
-
- Legt einen logarithmischen Ma▀stab (Basis 10) fⁿr eine Achse fest,
- zeichnet eine Achse, Achsenticks mit oder ohne Beschriftung, wenn der
- Wertebereich auf der spezifizierten Achse das zulΣ▀t.
-
- int LOGAX();
-
- LOGAX(Achse, Richtung, LΣnge, Anzahl, Text)
-
- char Achse[2];
- int Richtung;
- int Anzahl;
- int Text;
- double LΣnge;
-
-
- Parameter:
-
- Achse Achse, die gezeichnet werden soll.
-
- "XL" x-Achse unten
-
- "XU" x-Achse oben
-
- "YL" y-Achse links
-
- "YU" y-Achse rechts
-
- Richtung Richtung der Achsenticks
-
- -1: Ticks nach innen gerichtet (ins Bild hinein)
-
- 1: Ticks nach au▀en gerichtet (vom Bild weg)
-
- LΣnge LΣnge der Ticks in durch FRAME() definierten Einheiten.
- Mit LΣnge = 0.0 werden keine Ticks gezeichnet; Rich-
- tung wird in diesem Fall ignoriert.
-
- Anzahl Zahl der Ticks zwischen zwei benachbarten Dekaden, wo-
- bei eine Dekadenposition mit inbegriffen ist.
- Mit Anzahl = 1 werden Ticks nur an den Dekaden gezeich-
- net.
-
- Text Steuert die Beschriftung der Dekaden, wenn Anzahl = 1
- gesetzt wurde. Ansonsten wird Text ignoriert. Die Be-
- schriftung derfolgt in der Form 10 "hoch" n, wobei n
- eine ganze Zahl ist.
-
- 0: Keine Beschriftung
-
- 1: Dekaden werden beschriftet, wenn Anzahl = 1
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND()
-
- Wie auch bei LINAX() kann die Funktion aus den dort genannten Grⁿnden
- mehrere Male aufgerufen werden.
- Eine Achsenlinie wird bei mehreren Aufrufen mit gleichem Parameter
- Achse nur beim ersten Aufruf gezeichnet. Das gibt die M÷glichkeit,
- unterschiedliche Farben fⁿr die Achse und die Ticks zu wΣhlen.
-
- Siehe auch: REGION()[2S], LINAX()[3S], SETPEN()[8S]
-
- .bp
- .he ;4.4;Funktionen;Linien
- MOVETO()..........................................................(4S)
-
-
- Positioniert den Zeichenstift an einer bestimmten Stelle.
-
- int MOVETO();
-
- MOVETO(X-Position, Y-Position)
-
- double X-Position;
- double Y-Position;
-
-
- Parameter:
-
- X-Position x-Koordinate der anzufahrenden Position
-
- Y-Position y-Koordinate der anzufahrenden Position
-
-
- Rⁿckgabewert: 0: kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), MKWIND(), FRAME(),
- [PICTURE(), REGION()], [LINAX(), LOGAX()]
-
- Die Position bezieht sich auf das Koordinatensystem das zum Zeitpunkt
- des Aufrufs eingestellt ist; es mⁿssen deshalb nicht notwendigerweise
- alle oben genannten Funktionen zuvor aufgerufen werden.
-
- Siehe auch: FRAME()[2S], PICTURE()[2S], REGION()[2S], SETMODE()[8S],
- SETREF()[8S]
-
- .bp
- DRAWTO()..........................................................(4S)
-
-
- Zeichnet eine Linie von der gegenwΣrtigen Stiftposition zur angegebe-
- nen.
-
- int DRAWTO();
-
- DRAWTO(X-Position, Y-Position)
-
- double X-Position;
- double Y-Position;
-
-
- Parameter:
-
- X-Position x-Koordinate des Endpunkts der Linie
-
- Y-Position y-Koordinate des Endpunkts der Linie
-
-
- Rⁿckgabewert: 0: kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), MKWIND(), FRAME(),
- [PICTURE(), REGION()], [LINAX(), LOGAX()]
-
- Die Koordinaten beziehen sich auf das Koordinatensystem das zum Zeit-
- punkt des Aufrufs eingestellt ist; es mⁿssen deshalb nicht notwen-
- digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
-
- Siehe auch: FRAME()[2S], PICTURE()[2S], REGION()[2S], SETMODE()[8S],
- SETREF()[8S] SETPEN()[8S]
-
- .bp
- LINE()............................................................(4S)
-
-
- Zeichnet eine Linie.
-
- int LINE();
-
- LINE(X-Anfang, Y-Anfang,X-Ende,Y-Ende)
-
- double X-Anfang;
- double X-Ende;
- double Y-Anfang;
- double Y-Ende;
-
-
- Parameter:
-
- X-Anfang x-Koordinate des Anfangspunkts der Linie
-
- Y-Anfang y-Koordinate des Anfangspunkts der Linie
-
- X-Ende x-Koordinate des Endpunkts der Linie
-
- Y-Ende y-Koordinate des Endpunkts der Linie
-
- Rⁿckgabewert: 0: kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), MKWIND(), FRAME(),
- [PICTURE(), REGION()], [LINAX(), LOGAX()]
-
- Die Koordinaten beziehen sich auf das Koordinatensystem das zum Zeit-
- punkt des Aufrufs eingestellt ist; es mⁿssen deshalb nicht notwen-
- digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
-
- Siehe auch: FRAME()[2S], PICTURE()[2S], REGION()[2S], SETMODE()[8S],
- SETREF()[8S] SETPEN()[8S] MOVETO()[4S], DRAWTO()[4S]
-
-
- Alle Linien werden wenn n÷tig an den Bildbegrenzungen abgeschnitten.
- Welche Begrenzung dies ist, hΣngt davon ab, wie die Begrenzungsⁿber-
- wachung eingestellt ist. (siehe bei PWATCH()[8S])
-
- .bp
- .he ;4.5;Funktionen;Figuren
- RECTAN()..........................................................(5S)
-
-
- Zeichnet ein Rechteck.
-
-
- int RECTAN();
-
- RECTAN(xu, yu, xo, yo)
-
- double xu;
- double xo;
- double yu;
- double yo;
-
-
- Parameter:
-
- xu x-Koordinate des linken, unteren Eckpunkts
-
- yu y-Koordinate des linken, unteren Eckpunkts
-
- xo x-Koordinate des rechten, oberen Eckpunkts
-
- yo y-Koordinate des rechten, oberen Eckpunkts
-
-
- Rⁿckgabewert: 0: kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), MKWIND(), FRAME(),
- [PICTURE(), REGION()], [LINAX(), LOGAX()]
-
- Die Koordinaten beziehen sich auf das Koordinatensystem das zum Zeit-
- punkt des Aufrufs eingestellt ist; es mⁿssen deshalb nicht notwen-
- digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
-
- Siehe auch: FRAME()[2S], PICTURE()[2S], REGION()[2S], SETMODE()[8S],
- SETREF()[8S] SETPEN()[8S] MOVETO()[4S], DRAWTO()[4S]
-
-
- .bp
- POLYGON().........................................................(5S)
-
-
- Zeichnet einen beliebigen offenen oder geschlossenen Polygonzug.
-
-
- int POLYGON();
-
- POLYGON(X-Feld, Y-Feld, Anzahl)
-
- double X-Feld[Anzahl];
- double Y-Feld[Anzahl];
- int Anzahl;
-
-
- Parameter:
-
- X-Feld x-Koordinaten der Eckpunkte des Polygonzugs
-
- Y-Feld y-Koordinaten der Eckpunkte des Polygonzugs
-
- Anzahl Zahl der Eckpunkte
-
-
- Rⁿckgabewert: 0: kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), MKWIND(), FRAME(),
- [PICTURE(), REGION()], [LINAX(), LOGAX()]
-
- Die Koordinaten beziehen sich auf das Koordinatensystem das zum Zeit-
- punkt des Aufrufs eingestellt ist; es mⁿssen deshalb nicht notwen-
- digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
-
- Siehe auch: FRAME()[2S], PICTURE()[2S], REGION()[2S], SETMODE()[8S],
- SETREF()[8S] SETPEN()[8S]
-
-
- .bp
- POLYFILL()........................................................(5S)
-
-
- Zeichnet einen beliebigen, geschlossenen Polygonzug und fⁿllt diesen
- mit einer Farbe oder mit einem Farbmuster aus.
-
- int POLYFILL();
-
- POLYFILL(Anzahl,X-Feld, Y-Feld, Stift-Nr)
-
- int Anzahl;
- double X-Feld[Anzahl];
- double Y-Feld[Anzahl];
- int Stift-Nr;
-
- Parameter:
-
- X-Feld x-Koordinaten der Eckpunkte des Polygonzugs
-
- Y-Feld y-Koordinaten der Eckpunkte des Polygonzugs
-
- Anzahl Zahl der Eckpunkte
-
- Stift-Nr Nummer des Farbstifts,mit dem der Polygonzug ausgefⁿllt
- werden soll. (Erlaubt sind Werte zwischen 1 und 12)
-
-
- Rⁿckgabewert: 0: kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), MKWIND(), FRAME(),
- [PICTURE(), REGION()], [LINAX(), LOGAX()]
-
- Die Koordinaten beziehen sich auf das Koordinatensystem das zum Zeit-
- punkt des Aufrufs eingestellt ist; es mⁿssen deshalb nicht notwen-
- digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
- Die Farbbesetzung der Stifte kann man bei SETPEN()[8S] entnehmen. Soll
- das Polygon mit einem Farbmuster gefⁿllt werden, dann kann ein sol-
- ches mit der Funktion SETPAT()[8S] eingestellt bzw. definiert werden.
- Sollte Bei der Angabe der Eckpunkte der erste und der letzte nicht
- ⁿbereinstimmen, dann wird das Polygon automatisch geschlossen.
-
-
- Siehe auch: FRAME()[2S], PICTURE()[2S], REGION()[2S], SETMODE()[8S],
- SETREF()[8S] SETPEN()[8S] SETPAT()[8S]
-
-
- Alle Figuren werden wenn n÷tig an den Bildbegrenzungen abgeschnitten.
- Welche Begrenzung dies ist, hΣngt davon ab, wie die Begrenzungsⁿber-
- wachung eingestellt ist. (siehe bei PWATCH()[8S])
-
- .bp
- .he ;4.6;Funktionen;Kurven
- SNCURVE().........................................................(6S)
-
-
- Zeichnet eine Kurve deren Werte an den Stⁿtzstellen x[i] gegeben sind,
- wobei zwischen den Stⁿtzstellen mittels kubischer, nichtperiodischer
- Polynomsplines interpoliert wird. Als Randbedingung wird
-
- dy dy
- --(x = x[0]) = --(x = x[n-1]) = 0.0
- dx dx
-
- verwendet.
-
- int SNCURVE();
-
- SNCURVE(n,x,y)
-
- int n;
- double x[n];
- double y[n];
-
- Parameter:
-
- n Anzahl der Stⁿtzstellen
-
- x Monoton steigende x-Koordinaten der Stⁿtzstellen
-
- y Zugeh÷rige y-Koordinaten der Stⁿtzstellen
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- -i: Monotoniefehler (x[i] < x[i-1])
- 2: Zahl der Stⁿtzpunkte zu klein (n < 3)
- 3: Nicht genⁿgend temporΣrer Speicherplatz
- >3: Fehler bei Berechnung der Polynomkoeffizienten
-
- 9998: Interner Fehler (Transformationsfehler)
- 9999: Falsche Reihenfolge von Funktionsaufrufen
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
- AUTOSCL()
-
- Die Funktion interpretiert Koordinatenangaben bezⁿglich des Koordina-
- tensystems "region".
-
- Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
-
- .bp
- SPCURVE().........................................................(6S)
-
-
- Zeichnet eine Kurve deren Werte an den Stⁿtzstellen x[i] gegeben sind,
- wobei zwischen den Stⁿtzstellen mittels kubischer, periodischer Poly-
- nomsplines interpoliert wird. Als Randbedingung mu▀
-
- y(x[0]) = y(x[n-1])
-
- erfⁿllt sein.
-
- int SPCURVE();
-
- SPCURVE(n,x,y)
-
- int n;
- double x[n];
- double y[n];
-
- Parameter:
-
- n Anzahl der Stⁿtzstellen
-
- x Monoton steigende x-Koordinaten der Stⁿtzstellen
-
- y Zugeh÷rige y-Koordinaten der Stⁿtzstellen
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler bei Berechnung der Polynomkoeffizienten
- 3: Eingabedaten nichtperiodisch
- 4: Zahl der Stⁿtzpunkte zu klein (n < 3)
- 5: Nicht genⁿgend temporΣrer Speicherplatz
- 6: Monotoniefehler
- 10: Falsche Reihenfolge von Funktionsaufrufe
-
- 9998: Interner Fehler (Transformationsfehler)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
- AUTOSCL()
-
- Die Funktion interpretiert Koordinatenangaben bezⁿglich des Koordina-
- tensystems "region".
-
- Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
-
- .bp
- SACURVE().........................................................(6S)
-
-
- Zeichnet eine Me▀kurve mit vorgegebener Standardabweichung, wobei mit
- polynominalen Ausgleichssplines 3. Grades gearbeitet wird.
-
- int SACURVE();
-
- SACURVE(n,x,y,w)
-
- int n;
- double x[n];
- double y[n];
- double w;
-
- Parameter:
-
- n Anzahl der Stⁿtzstellen
-
- x Monoton steigende x-Koordinaten der Stⁿtzstellen
-
- y Zugeh÷rige y-Koordinaten der Stⁿtzstellen
-
- w Standardabweichung
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Zahl der Stⁿtzpunkte zu klein (n < 3)
- 2: Monotoniefehler
- 3: Standardabweichung kleiner 0.0
- 4: Nicht genⁿgend temporΣrer Speicherplatz
- 5: Fehler bei Berechnung der Polynomkoeffizienten
-
- 9998: Interner Fehler (Transformationsfehler)
- 9999: Falsche Reihenfolge von Funktionsaufrufe
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
- AUTOSCL()
-
- Die Funktion interpretiert Koordinatenangaben bezⁿglich des Koordina-
- tensystems "region".
-
- Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
-
- .bp
- SRCURVE().........................................................(6S)
-
-
- Zeichnet eine Kurve deren Werte an den Stⁿtzstellen x[i] gegeben sind,
- wobei zwischen den Stⁿtzstellen mittels gebrochen rationaler Funktio-
- nen interpoliert wird.
-
- int SRCURVE();
-
- SRCURVE(n,x,y)
-
- int n;
- double x[n];
- double y[n];
-
- Parameter:
-
- n Anzahl der Stⁿtzstellen
-
- x Monoton steigende x-Koordinaten der Stⁿtzstellen
-
- y Zugeh÷rige y-Koordinaten der Stⁿtzstellen
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler bei Berechnung der Polynomkoeffizienten
- 2: Zahl der Stⁿtzpunkte zu klein (n < 3)
- 3: Nicht genⁿgend temporΣrer Speicherplatz
- 10: Falsche Reihenfolge von Funktionsaufrufen
- -i: Monotoniefehler (x[i] < x[i-1])
-
- 9998: Interner Fehler (Transformationsfehler)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
- AUTOSCL()
-
- Die Funktion interpretiert Koordinatenangaben bezⁿglich des Koordina-
- tensystems "region".
-
- Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
-
- .bp
- STCURVE().........................................................(6S)
-
-
- Zeichnet eine Kurve deren Werte an den Stⁿtzstellen x[i] gegeben sind,
- wobei zwischen den Stⁿtzstellen mittels parametrischer, kubischer Po-
- lynomsplines interpoliert wird. Da die Kurve parametrisiert wird, mu▀
- die Monotoniebedingung fⁿr die Stⁿtzstellen nicht mehr erfⁿllt sein.
-
- int STCURVE();
-
- STCURVE(n,x,y)
-
- int n;
- double x[n];
- double y[n];
-
- Parameter:
-
- n Anzahl der Stⁿtzstellen
-
- x x-Koordinaten der Stⁿtzstellen
-
- y Zugeh÷rige y-Koordinaten der Stⁿtzstellen
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Zahl der Stⁿtzpunkte zu klein (n < 3)
- >4: Fehler bei Berechnung der Polynomkoeffizienten
- 99: Nicht genⁿgend temporΣrer Speicherplatz
-
- 9998: Interner Fehler (Transformationsfehler)
- 9999: Falsche Reihenfolge von Funktionsaufrufen
-
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
- AUTOSCL()
-
- Die Funktion interpretiert Koordinatenangaben bezⁿglich des Koordina-
- tensystems "region".
-
- Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
-
- .bp
- .he ;4.7;Funktionen;Texte
- HTEXT()...........................................................(7S)
-
-
- Schreibt einen Text an eine spezifizierte Position innerhalb der
- Zeichnung.
-
- int HTEXT();
-
- HTEXT(X-Position,Y-Position,Position, String)
-
- double X-Position;
- double Y-Position;
- char *Position;
- char *String;
-
- Parameter:
-
- X-Position x-Koordinate der Textstelle
-
- Y-Position y-Koordinate der Textstelle
-
- Position Interpretation der obigen Koordinatenangaben
-
- "LB" (left bottom) Textanfang unten
- "LM" (left mid) Textanfang Mitte
- "LT" (left top) Textanfang oben
- "MB" (mid bottom) Textmitte unten
- "MM" (mid mid) Textmitte Mitte
- "MB" (mid top) Textmitte oben
- "RB" (right bottom) Textende unten
- "RM" (right mid) Textende Mitte
- "RT" (right top) Textende oben
-
- String Zeichenkette, die geschrieben werden soll
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), MKWIND(),
- [PICTURE()], [REGION()],LINAX(), LOGAX(), AUTOSCL()]
-
- Die Koordinaten beziehen sich auf das Koordinatensystem das zum Zeit-
- punkt des Aufrufs eingestellt ist; es mⁿssen deshalb nicht notwen-
- digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
- Die Stiftfarbe und der Textfont hΣngen von der Einstellung zum Zeit-
- punkt des Aufrufes ab.
-
- Siehe auch: SETPEN()[8S], SETFONT()[8S], SETSTYLE()[8S]
-
- .bp
- .he ;4.8;Funktionen;─ndern von Einstellungen
- PWATCH()..........................................................(8S)
-
-
- Schaltet die Feldgrenzenⁿberwachung ein und aus.
-
- void PWATCH();
-
- PWATCH(Status)
-
- char Status[2];
-
-
- Parameter:
-
- Status Zustand der ▄berwachung.
-
- "ON" eingeschaltet
- "OF" ausgeschaltet
-
-
- Rⁿckgabewert: keiner
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE(), FRAME(), [PICTURE()], [REGION()]
-
-
- Die Wirkung der ▄berwachung hΣngt vom Koordinatensystem ab, das zum
- Zeitpunkt des Aufrufes eingestellt ist. Im eingeschalteten Zustand
- werden Linien, Figuren, Texte etc. an den durch das Koordinatensystem
- definierten Begrenzungen abgeschnitten. Im Falle von Linien und Figu-
- ren wird ein Vektorclipping, im Falle von ausgefⁿllten, geschlossenen
- Figuren ein Polygonclipping durchgefⁿhrt.
-
- Siehe auch: FRAME()[2S], PICTURE()[2S], REGION()[2S]
-
-
- .bp
- SETDASH().........................................................(8S)
-
-
- Einstellung von Strichlierungsmustern bei Linien und Kurven
-
- int SETDASH();
-
- SETDASH(Muster)
-
- int Muster;
-
-
- Parameter:
-
- Muster Nummer des Strichlierungsmusters
-
- 0: Durchgezogene Linie. Pattern = 0xFFFF
-
- 1: Punktierte Linie. Pattern = 0xCCCC
-
- 2: Strichlierte Linie. Pattern = 0xFF00
-
- 3: Punkt-Strichlierte Linie. Pattern = 0xF0C3
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE() MKWIND()
-
- Die Wirkung erstreckt sich auf alle danach aufgerufenen Funktionen,die
- Linien und Kurven zeichnen. (LINE, DRAWTO, POLYGON, ##CURVE) Funktio-
- nen, die Kurven zeichnen, setzen "Muster" auf 0 zurⁿck.
-
- .bp
- SETFMT()..........................................................(8S)
-
-
- Legt die Anzahl der Dezimalstellen bei der Beschriftung von Achsen-
- ticks fest.
-
- int SETFMT();
-
- SETFMT(nx, ny)
-
- int nx;
- int ny;
-
-
- Parameter:
-
- nx Anzahl Dezimalstellen fⁿr x-Achse
-
- ny Anzahl Dezimalstellen fⁿr y-Achse
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE()
-
- Wenn die Funktion nicht aufgerufen wird, ist "nx" und "ny" mit 1 vor-
- eingestellt.
-
- Siehe auch: LINAX()[3S], LOGAX()[3S]
-
-
- .bp
- SETFONT().........................................................(8S)
-
-
- WΣhlt einen Schriftfont fⁿr Beschriftungen mit der Funktion HTEXT().
-
-
- int SETFONT();
-
- SETFONT(Name, H÷he)
-
- char Name[];
- unsigned short H÷he;
-
-
- Parameter:
-
- Name Name des Schriftfonts (z.B. "topaz.font")
-
- H÷he H÷he des Schriftfonts in Pixels
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE() MKWIND()
-
- Es k÷nnen dabei alle Fonts angewΣhlt werden, die sich auf dem jeweils
- benutzten Fonts-Directory befinden.
-
- Siehe auch: HTEXT()[7S]
-
- .bp
- SETMARK().........................................................(8S)
-
-
- Markiert gegebene Punkte mit einem Symbol.
-
-
- int SETMARK();
-
- SETMARK(Nummer, Gr÷▀e, X-Feld, Y-Feld, Anzahl)
-
- int Nummer;
- int Anzahl;
- double Gr÷▀e;
- double X-Feld[Anzahl];
- double Y-Feld[Anzahl];
-
-
- Parameter:
-
- Nummer Nr. Des Symbols
-
- 0: Gleichseitiges Dreieck mit Spitze nach oben
-
- 1: Gleichseitiges Dreieck mit Spitze nach unten
-
- 2: Zwei mit einer Spitze aufeinanderzeigende, vertikal
- stehende, gleichseitige Dreiecke
-
- 3: rechtwinkliges Kreuz (senkrecht stehend)
-
- 4: Zwei mit einer Spitze aufeinanderzeigende, horizon-
- tal liegende, gleichseitige Dreiecke
-
- Gr÷▀e Gr÷▀e des Symbols in durch FRAME definierten Einheiten
-
- X-Feld x-Koordinaten der zu markierenden Punkte
-
- Y-Feld y-Koordinaten der zu markierenden Punkte
-
- Anzahl Anzahl der zu markierenden Punkte
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE() FRAME() [PICTURE() REGION()] MKWIND()
-
- Siehe auch: FRAME()[2S]
-
- .bp
- SETMODE().........................................................(8S)
-
-
- Schaltet die verschiedenen Koordinatensysteme ein.
-
- int SETMODE();
-
- SETMODE(System)
-
- char System[];
-
-
- Parameter:
-
-
- System Einzuschaltendes Koordinatensystem
-
- "FRA": Schaltet ins Koordinatensystem "frame", dessen
- Ursprung in der linken, unteren durch FRAME de-
- finierten Rahmenecke liegt.
-
- "PIC": Schaltet ins Koordinatensystem "picture",dessen
- Ursprung in der linken, unteren durch PICTURE
- definierten Bildecke liegt.
-
- "REG": Schaltet ins Koordinatensystem "region", dessen
- Ursprung mit dem von "picture" identisch ist,
- jedoch mit den durch REGION definierten Ma▀ein-
- heiten rechnet.
-
- "REF": Schaltet kein Koordinatensystem ein, sondern
- verschiebt den Ursprung des eingestellten Sys-
- tems zur jeweils aktuellen Stiftposition. Diese
- Einstellung ist sehr hilfreich beim Schreiben
- von Texten (Indizes),da relativ zum zuletzt ge-
- schriebenen Zeichen positioniert werden kann.
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE() FRAME() [PICTURE() REGION()] MKWIND()
-
- Siehe auch: FRAME()[2S] PICTURE()[2S] REGION()[2S] SETREF()[8S]
-
- .bp
- SETPAT()..........................................................(8S)
-
-
- Setzt ein Fⁿllmuster, das bei der Funktion POLYFILL verwendet wird.
-
- int SETPAT();
-
- SETPAT(Nummer, Pattern, Anzahl)
-
- int Nummer;
- int Anzahl;
- unsigned short Pattern[Anzahl];
-
-
- Parameter:
-
-
- Nummer Nr. des Fⁿllmusters
-
- -1: Ein eigenes Muster wird im Feld "Pattern" ⁿberge-
- ben.
-
- 0: Bitmuster: 1. Bitplane 1010101010101010
-
- 1: Bitmuster: 1. Bitplane 1010101010101010
- 2. Bitplane 0101010101010101
-
- 2: Bitmuster: 1. Bitplane 1100110011001100
- 2. Bitplane 0011001100110011
-
- 3: Bitmuster: 1. Bitplane 1111111111111111
- 2. Bitplane 0011111111111100
- 3. Bitplane 0000111111110000
- 4. Bitplane 0000001111000000
-
-
- Pattern Eigenes Patternfeld. Jedes Feldelement definiert ein
- Bitmuster fⁿr eine Bitplane. Wird ignoriert, wenn
- Nummer != -1.
-
- Anzahl Anzahl der Elemente des Patternfelds "Pattern". Mu▀
- eine ganzzahlige Potenz von 2 sein. Wird ignoriert,
- wenn Nummer != -1.
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE() MKWIND()
-
- Siehe auch: POLYFILL()[5S] SETPEN()[8S]
-
- .bp
- SETPEN()..........................................................(8S)
-
-
- WΣhlt einen Farbstift zum Schreiben und Zeichnen aus.
-
- int SETPEN();
-
- SETPEN(Nummer)
-
- int Nummer;
-
-
- Parameter:
-
-
- Nummer Nr. des Farbstifts. (1 <= Nummer <= 12). Damit k÷nnen
- die Farbregister 4-15 angewΣhlt werden. Die ersten 4
- bleiben unverΣndert. Die Stifte sind mit folgenden
- RGB-Werten vorbesetzt (hexadezimal):
-
- Nr. R G B Farbe
-
- 1 0 0 0 schwarz
- 2 1 1 1 ^
- 3 2 2 2 |
- 4 3 3 3 |
- 5 4 4 4 |
- 6 5 5 5 | Graut÷ne
- 7 6 6 6 |
- 8 7 7 7 |
- 9 8 8 8 |
- 10 A A A |
- 11 C C C |
- 12 E E E wei▀
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE() MKWIND()
-
- Siehe auch: SETRGB()[8S]
-
- .bp
- SETREF()..........................................................(8S)
-
-
- Setzt den Referenzpunkt,bezⁿglich dem Koordinatenangaben interpretiert
- werden. Damit ist es m÷glich, den Ursprung der Koordinatensysteme
- "frame", "picture" und "region" zu Σndern.
-
- int SETREF();
-
- SETREF(X-Ref, Y-Ref)
-
- double X-Ref;
- double Y-Ref;
-
-
- Parameter:
-
-
- X-Rref x-Koordinate des Referenzpunktes
-
- Y-Rref y-Koordinate des Referenzpunktes
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE()
-
- Die Interpretation der Koordinaten hΣngt davon ab,welches Koordinaten-
- system zum Zeitpunkt des Aufrufs eingeschaltet ist. Der Aufruf wirkt
- (ⁿber Transformation) auf alle Koordinatensysteme.
-
- Siehe auch: FRAME()[2S] PICTURE()[2S] REGION()[2S]
-
- .bp
- SETRGB()..........................................................(8S)
-
-
- ─ndert die Farbe eines Zeichenstifts.
-
- int SETRGB();
-
- SETRGB(Stift, Rot, Grⁿn, Blau)
-
- int Stift;
- unsigned short Rot;
- unsigned short Grⁿn;
- unsigned short Blau;
-
-
- Parameter:
-
- Stift Nr. des Farbstifts. (0 ... 15). Dabei korrospondieren
- die Nummern 4 ... 15 mit 1 ... 12 der Funktion SETPEN.
-
- Rot Rotanteil (0-15)
-
- Grⁿn Grⁿnanteil (0-15)
-
- Blau Blauanteil (0-15)
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE() MKWIND()
-
- Siehe auch: SETPEN()[8S]
-
- .bp
- SETSTYLE()........................................................(8S)
-
-
- ─ndert den Schriftstil bei mit der Funktion HTEXT geschriebenem Text.
-
- int SETSTYLE();
-
- SETSTYLE(Stil)
-
- char Stil[2];
-
-
- Parameter:
-
-
- Stil Stil des zu schreibenden Textes
-
- "IT" Italic
-
- "BF" Fett gedruckt. (bold)
-
- "NM" Normal
-
-
- Rⁿckgabewert: 0: Kein Fehler aufgetreten
- 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
-
- Funktionen, die zuvor aufgerufen werden mⁿssen:
-
- INITIALIZE() MKWIND()
-
- Die Funktion wirkt auf den Schriftfont, der zum Zeitpunkt des Aufrufs
- eingestellt ist.
-
- Siehe auch: SETFONT()[8S]
-
- .bp
- .he ;4.9; ;Mathematische Funktionen
- ----------------------------------------------------------------------
- 4.9 Mathematische Funktionen
- ----------------------------------------------------------------------
-
-
- Die in diesem Kapitel zu besprechenden Funktionen stellen ausnahmslos
- Kernfunktionen dar. Sie sind jedoch so allgemein geschrieben, da▀ sie
- auch fⁿr eigene Zwecke verwendet werden k÷nnen.In erster Linie handelt
- es sich um Interpolations- und Clippingverfahren.
- Interpolationsfunktionen mittels kubischer Splines sind weitgehend an-
- hand des Buches
-
- Formelsammlung zur Numerischen Mathematik mit C-Programmen
-
- aus der Reihe BI Hochschultaschenbⁿcher gewonnen worden. Dort finden
- sich auch ausfⁿhrliche Hinweise zur Theorie der Splinefunktionen.
- .bp
- .he ;4.9;Funktionen;Mathematische Funktionen
- SPL().............................................................(9S)
-
- Berechnet interpolierende Polynomsplines 3. Grades zu einer Kurve, de-
- ren Werte an den Stⁿtzstellen x[i], i = 0 ... n-1 gegeben sind.
-
- int SPL();
-
- SPL(n, x, y, Bedng_a, Bedng_b, Typ, b, c, d)
-
-
- Parameter:
-
- a) Eingabe
-
- Name Typ/LΣnge Bedeutung
- ---------------------------------------------------------------------
- n int/ - Anzahl der Stⁿtzstellen der Kurve.
- x double/[n] Monoton steigende x-Koordinaten der Kurve.
- y double/[n] Zugeh÷rige y-Koordinaten der Kurve.
- Bedng_a double/ - Randbedingung in x[0].
- Bedng_b double/ - Randbedingung in x[n-1].
- Typ int/ - Typ der Randbedingung.
- 0: Not a knot Bedingung
- 1: 1. Ableitung
- 2: 2. Ableitung
- 3: 3. Ableitung
-
-
- b) Ausgabe:
-
- b, c, d double/[n] Spline Koeffizienten (a = y)
- ---------------------------------------------------------------------
-
- Funktionsaufrufe: TRDIAG()
-
- Rⁿckgabewert: 0: Kein Fehler
- -i: Monotoniefehler x[i] < x[i-1]
- 1: Falscher Wert fⁿr "Typ"
- 2: n < 3
- 3: Nicht genⁿgend temporΣrer Speicherplatz
- >3: Fehler bei der Diagonalisierung
-
- Der Speicherplatz fⁿr die Splinekoeffizienten mu▀ in der rufenden Ein-
- heit bereitgestellt werden.
-
- .bp
- ASPL()............................................................(9S)
-
-
- Berechnet interpolierende Polynomsplines 3. Grades zu einer Me▀kurve
- mit gegebener Standardabweichung.
-
-
- int aspl();
-
- aspl(n, x, y, w, a, b, c, d)
-
-
- Parameter:
-
- a) Eingabe
-
- Name Typ/LΣnge Bedeutung
- ---------------------------------------------------------------------
- n int/ - Anzahl der Me▀werte (n > 6).
- x double/[n] Monoton steigende x-Koordinaten der Me▀-
- werte.
- y double/[n] Zugeh÷rige y-Koordinaten.
- w double/ - Standardabweichung.
-
- b) Ausgabe:
-
- a,b,c,d double/[n] Spline Koeffizienten.
- ---------------------------------------------------------------------
-
- Funktionsaufrufe: BNDIAG()
-
- Rⁿckgabewert: 0: Kein Fehler
- 1: n <= 6
- 2: Monotoniefehler x[i] < x[i-1]
- 3: w <= 0.0
- 4: Nicht genⁿgend temporΣrer Speicherplatz
- 5: Fehler wΣhrend Diagonalisierung
-
-
- Der Speicherplatz fⁿr die Splinekoeffizienten mu▀ in der rufenden Ein-
- heit bereitgestellt werden.
-
- .bp
- PSPL()............................................................(9S)
-
-
- Berechnet interpolierende, periodische Polynomsplines 3. Grades zu ei-
- ner Kurve, deren Werte an den Stⁿtzstellen x[i], i = 0 ... n-1 gegeben
- sind.
-
- int PSPL();
-
- PSPL(n, x, y, b, c, d)
-
-
- Parameter:
-
- a) Eingabe
-
- Name Typ/LΣnge Bedeutung
- ---------------------------------------------------------------------
- n int/ - Anzahl der Stⁿtzstellen der Kurve.
- x double/[n] Monoton steigende x-Koordinaten der Kurve.
- y double/[n] Zugeh÷rige y-Koordinaten der Kurve.
-
- b) Ausgabe:
-
- b, c, d double/[n] Spline Koeffizienten (a = y)
- ---------------------------------------------------------------------
-
- Funktionsaufrufe: TZDIAG()
-
- Rⁿckgabewert: 0: Kein Fehler
- 1: Fehler wΣhrend Diagonalisierung
- 3: Eingabedaten nicht periodisch (y[n-1] != y[0])
- 4: n < 3
- 5: Nicht genⁿgend temporΣrer Speicherplatz
- 6: Monotoniefehler x[i] < x[i-1]
-
-
- Der Speicherplatz fⁿr die Splinekoeffizienten mu▀ in der rufenden Ein-
- heit bereitgestellt werden.
-
- .bp
- TSPL()............................................................(9S)
-
-
- Berechnet parametrische, kubische Polynomsplines zu einer Kurve die an
- den Stⁿtzstellen x[i], i = 0 ... n-1 gegeben ist. Dabei kann gewΣhlt
- werden, ob die Kurvenparameter t[i] berechnet werden sollen oder vorge-
- geben sind.
-
- int TSPL()
-
- TSPL(n, x, y, Typ, Bdng_a, Bdng_b, Bdng_t, t, bx, cx, dx, by, cy, dy)
-
-
- Parameter:
-
- a) Eingabe
-
- Name Typ/LΣnge Bedeutung
- ---------------------------------------------------------------------
- n int/ - Anzahl der Stⁿtzstellen der Kurve.
- x double/[n] x-Koordinaten der Kurve.
- y double/[n] Zugeh÷rige y-Koordinaten der Kurve.
- Typ int/ - Art der Randbedingung.
- 0: not a knot Bedingung
- 1: 1. Ableitung nach dem Parameter t
- 2: 2. Ableitung nach dem Parameter t
- 3: Periodischer Spline
- 4: Vorgabe der Ableitungen dy/dx
- Bdng_a double/[2] Randbedingung in x[0]
- Bdng_b double/[2] Randbedingung in x[n-1]
- Bdng_t int/ - Vorgabe der Kurvenparameter t.
- 0: t[i] werden berechnet
- !=0: t[i] werden vorgegeben
- t double/[n] Kurvenparameter t, wenn Bdng_t != 0 in
- streng monotoner Anordnung.
-
- b) Ausgabe:
-
- t double/[n] Kurvenparameter t. (wenn Bdng_t = 0)
- bx,cx,dx double/[n] Splinekoeffizienten der Komponente x
- by,cy,dy double/[n] Splinekoeffizienten der Komponente y
- ---------------------------------------------------------------------
-
- Funktionsaufrufe: SPL(), PSPL()
-
- Rⁿckgabewert: 0: Kein Fehler
- -i: Monotoniefehler t[i] < t[i-1]
- 1: n < 3
- 2: Falscher Wert fⁿr Randbedingung
- 3: x[n-1] != x[0] wenn Typ = 3
- 4: y[n-1] != y[0] wenn Typ = 3
- >5: Fehler in SPL oder PSPL aufgetreten
-
-
- Der Speicherplatz fⁿr die Splinekoeffizienten mu▀ in der rufenden Ein-
- heit bereitgestellt werden.
-
- .bp
- EVALSP()..........................................................(9S)
-
-
- Berechnet den Funktionswert eines Polynomsplines 3. Grades und seine
- nichttrivialen Ableitungen.
-
- double EVALSP();
-
- EVALSP(n, xx, a, b, c, d, x, Abl)
-
-
- Parameter:
-
- a) Eingabe
-
- Name Typ/LΣnge Bedeutung
- ---------------------------------------------------------------------
- n int/ - Anzahl der Stⁿtzstellen.
- xx double/ - x-Wert, an der der Funktionswert gesucht
- wird.
- a,b,c,d double/[n-1] Splinekoeffizienten.
- x double/[n] Stⁿtzstellen auf der x-Achse.
-
- b) Ausgabe
-
- Abl double/[3] Die ersten 3 Ableitungen an der Stelle xx.
- ----------------------------------------------------------------------
-
- Funktionsaufrufe: keine
-
- Rⁿckgabewert: Funktionswert an der Stelle xx
-
- Die Splinekoeffizienten mⁿssen zuvor mit SPL() oder PSPL() berechnet
- werden.
-
- .bp
- EVALSPT().........................................................(9S)
-
-
- Berechnet den Funktionswert eines parametrischen Splines 3. Grades und
- seine nichttrivialen Ableitungen.
-
- int EVALSPT();
-
- EVALSPT(n, tt, t, ax, bx, cx, dx, ay, by, cy, dy, sx, sy, Abl)
-
-
- Parameter:
-
- a) Eingabe
-
- Name Typ/LΣnge Bedeutung
- ---------------------------------------------------------------------
- n int/ - Anzahl der Stⁿtzstellen.
- tt double/ - Parameterwert t, an der die Funktionswerte
- sx = x(t) und sy = y(t) berechnet werden
- sollen.
- t double/[n] Parameterwerte an den Stⁿtzstellen.
- ax,bx,cx double/[n] Splinekoeffizienten der x-Komponente.
- ay,by,cy double/[n] Splinekoeffizienten der y-Komponente.
-
- b) Ausgabe
-
- sx double/ - Funktionswert der x-Komponente an der
- Stelle tt. (x = x(tt))
- sy double/ - Funktionswert der y-Komponente an der
- Stelle tt. (y = y(tt))
- Abl double/[2][3] Ableitungswerte.
- Abl[0][i], i = 0 ... 2 enthΣlt die x-Kom-
- ponenten der ersten drei Ableitungen.
- Abl[1][i], i = 0 ... 2 enthΣlt die y-Kom-
- ponenten der ersten drei Ableitungen.
- ---------------------------------------------------------------------
-
- Funktionsaufrufe: EVALSP()
-
- Rⁿckgabewert: keiner
-
- Die Splinekoeffizienten mⁿssen zuvor mit TSPL() berechnet werden.
-
- .bp
- RFINT()...........................................................(9S)
-
-
- Interpoliert eine Kurve, deren Werte an den Stⁿtzstellen x[i], i=1...n
- gegeben sind mittels rationaler Funktionen. Der Orginalcode stammt aus
- dem
-
- Informal report LA-6903-MS von Gerald I. Kerley
-
- Los Alamos scientific laboratory vom August 1977.
-
- double RFINT();
-
- RFINT(n, x, y, xx)
-
-
- Parameter:
-
- a) Eingabe
-
- Name Typ/LΣnge Bedeutung
- ---------------------------------------------------------------------
- n int/ - Anzahl der Stⁿtzstellen.
- x double/[n] x-Koordinaten der Stⁿtzstellen. (monoton)
- y double/[n] zugeh÷rige y-Koordinaten
- xx double/ - x-Wert, an dem der Funktionswert gesucht
- wird.
- ---------------------------------------------------------------------
-
- Funktionsaufrufe: keine
-
- Rⁿckgabewert: Funktionswert an der Stelle xx.
-
- .bp
- PCLIP()...........................................................(9S)
-
-
- Beschneidet ein geschlossenes Polygon gegenⁿber einem rechtwinkligen
- Fenster. Dabei kommt die Sutherland Hodgman Methode zur Anwendung. Die
- Methode basiert darauf, da▀ das Polygon gegenⁿber jeder Fensterseite
- beschnitten wird. Nach jedem Schritt entsteht (eventuell) ein neues
- Polygon,mit dem die Prozedur mit der nΣchsten Fensterseite wiederholt
- wird, bis zuletzt ein Polygon resultiert, das nicht mehr ⁿber die
- Fensterbegrenzungen hinausragt. (Oder nichts ⁿbrig bleibt, wenn das
- Polygon ganz au▀erhalb des Begrenzungsfensters liegt)
-
- int PCLIP();
-
- PCLIP(n_alt, n_neu, x_alt, y_alt, x_neu, y_neu, wx, wy)
-
-
- Parameter:
-
- a) Eingabe
-
- Name Typ/LΣnge Bedeutung
- ---------------------------------------------------------------------
- n_alt int/ - Zahl der Ecken des Orginalpolygons.
- x_alt double/[n_alt] x-Koordinaten der Ecken (sortiert).
- y_alt double/[n_alt] y-Koordinaten der Ecken (sortiert).
- wx,wy dounle/[5] Koordinaten der Ecken des Begrenzungsfen-
- sters, wobei wx[0]=wx[4] und wy[0]=wy[4]
- sein mu▀.
-
- b) Ausgabe:
-
- n_neu int/ - Anzahl der Ecken des beschnittenen Poly-
- gons
- x_neu double/[n_neu] x-Koordinaten der Ecken des beschnittenen
- Polygons.
- y_neu double/[n_neu] y-Koordinaten der Ecken des beschnittenen
- Polygons.
- ---------------------------------------------------------------------
-
- Funktionsaufrufe: keine
-
- Rⁿckgabewert: i: Anzahl der Ecken des beschnittenen Polygons
- -1: n_neu zu klein (Speicherplatz)
-
- Der Speicherplatz fⁿr die Koordinaten der neuen Polygonecken mu▀ in
- der rufenden Einheit bereitgestellt werden.
-
- .bp
- VCLIP()...........................................................(9S)
-
-
- Beschneidet eine Linie gegenⁿber einem gegebenen rechtwinkligen Fen-
- ster. Dabei wird die Cohen-Sutherland Methode benutzt.
-
- int VCLIP();
-
- VCLIP(x, y)
-
- extern double pclip[];
-
- Parameter:
-
- a) Eingabe
-
- Name Typ/LΣnge Bedeutung
- ---------------------------------------------------------------------
- x double/[2] x-Koordinate des Anfangs- und Endpukts der
- Linie.
- y double/[2] y-Koordinate des Anfangs- und Endpukts der
- Linie.
-
- b) Ausgabe
-
- x double/[2] x-Koordinate des Anfangs- und Endpukts der
- beschnitten Linie.
- y double/[2] y-Koordinate des Anfangs- und Endpukts der
- bescnittenen Linie.
- ---------------------------------------------------------------------
-
- Funktionsaufrufe: keine
-
- Rⁿckgabewert: 0: Linie liegt au▀erhalb des Begrenzungsfensters
- 1: Ganze Linie oder Teil davon liegt innerhalb
- des Begrenzungsfensters.
-
- In der rufenden Einheit mu▀ ein globaler Vektor definiert sein,der
- die Fensterbegrenzung in der Form zweier gegenⁿberliegender Ecken
- enthΣlt:
-
- double pclip[4];
-
- pclip[0] ... x-Koordinate der linken, unteren Fensterecke
- pclip[1] ... zugeh÷rige y-Koordinate
-
- pclip[2] ... x-Koordinate der gegenⁿberliegenden Ecke
- pclip[3] ... zugeh÷rige y-Koordinate
-
- .bp
- .he ;Anhang A;Liste der Funktionen;Anhang A
- Anhang A: Alphabetische Liste der Funktionen
-
-
- Funktion Typ ruft auf Status Kategorie
- ----------------------------------------------------------------------
- aspl int bndiag K 9S
- autoscl int linax,region,setmode U 2S
- bndiag int ---- K --
- drawto int bwatch, trans U 4S
- evalsp precsn ---- K 9S
- evalspt int evalsp K 9S
- finish void save_iff U 1S
- frame void ---- U 2S
- grid int ---- U 3S
- htext int trans U 7S
- ierror void ---- K --
- initialize int ---- U 1S
- intnum precsn ---- K --
- linax int intnum, setdash, pwatch U 3S
- line int ---- U 4S
- logax int intnum, setdash, pwatch U 3S
- mkwind int ---- U 1S
- moveto int trans U 4S
- pclip int ---- K 9S
- picture void ---- U 2S
- polyfill int pclip,polygon,trans U 5S
- polygon int moveto, drawto, setdash U 5S
- pspl int tzdiag K 9S
- pwatch void ---- U 8S
- rectan int moveto, drawto, pwatch U 5S
- region void ---- U 2S
- rfint precsn ---- K 9S
- sacurve int aspl,evalsp,moveto,drawto,setdash U 6S
- save_iff int compress_row K --
- setdash int ---- U 8S
- setfmt void ---- U 8S
- setfont int ---- U 8S
- setmark int trans U 8S
- setmode int pwatch U 8S
- setpat int ---- U 8S
- setpen int ---- U 8S
- setref int trans U 8S
- setrgb int ---- U 8S
- setstyle int ---- U 8S
- sncurve int spl,evalsp,moveto,drawto,setdash U 6S
- spcurve int pspl,evalsp,moveto,drawto,setdash U 6S
- spl int trdiag K 9S
- srcurve int rfint,moveto,drawto,setdash U 6S
- stcurve int tspl,evalspt U 6S
- trans int ---- K --
- trdiag int ---- K --
- tspl int spl,pspl K 9S
- tzdiag int ---- K --
- vclip int ---- K 9S
- ----------------------------------------------------------------------
- U ... Benutzerfunktion
- K ... Kernfunktion
-
- * Der Typ "precsn" ist eine (Macroprozessor)Definition fⁿr "double"
-
- .bp
- .he ;Anhang B;Erstellen der Grafikbibkiothek;Anhang B
- Anhang B: Erstellen der Grafikbibliothek
-
-
- Zum Erstellen der Grafikbibliothek anhand der Quelldateien mu▀ vorhan-
- den sein:
-
- a) 1 Amiga 500/1000/2000 mit mindestens 512 kB Ram,2 Diskettenlaufwer-
- ken oder einer Festplatte.
-
- b) Manx Aztec C-Compiler Version 3.4 oder spΣter. (Developers Version)
- Alle Funktionen wurden mit der Version 3.6a im Zusammenhang mit dem
- Source Level Debugger (Quellebenenentlauser) SDB entwickelt, soll-
- ten aber auch unter 3.4 laufen.
-
- optional:
-
- c) 1 Kanne Kaffee, Tee oder 1 Kasten Bier. (je nach Neigung)
-
- d) Viel Geduld.
-
- e) 1 R÷hrchen Beruhigungstabletten, (man beachte jedoch Wechselwirkung
- mit c) weil die Sache sowiso nicht so funktioniert wie nachfolgend
- beschrieben
-
- Die Beschreibung geht von 2 Diskettenlaufwerken aus. Auf der System-
- diskette (in Laufwerk df0:) sollten
-
- der Compiler cc
- der Assembler as
- der Bibliotheksverwalter lb
- das Utility make
- die Kommandos copy,delete,echo
-
- vorhanden sein. Wenn sich die Diskette mit dem Namen sgl: im Lauf-
- werk df1: befindet, dann mⁿssen vom CLI aus die Kommandos
-
- 1> cd sgl:sources
-
- 1> make -f <makefile>
-
- eingegeben werden.
-
- Unter <makefile> sind verschiedene Versionen vorhanden:
-
- 1.) make_sgl Gleitkommazahlen sind vom Typ double
- Integers vom Typ int sind 32 Bit lang ( +l - Option
- beim compilieren eingeschaltet)
- Es wird das small data und small code Modell verwen-
- det. (Siehe Kapitel 1.4 cc.7 im Compiler Handbuch)
-
- 2.) make_sgll Wie oben, jedoch wird das large data und large memo-
- ry Modell verwendet. (+C und +D Optionen beim compi-
- lieren sind eingeschaltet)
-
- 3.) make_sgl8 Wie 1), jedoch wird mit der +f8 - Option compiliert.
- Dadurch wird ein vorhandener Mathematik Koprozessor
- 68881 von Motorola unterstⁿtzt
-
- 4.) make_sgl8l Wie 2) + 3)
-
-
- Es werden zuerst alle Quelldateien compiliert und dann in eine Biblio-
- thek (auf der Ram Disk) geschrieben. Nachdem die Bibliothek komplett
- ist, wird sie von der Ram Disk in das Directory "sgl:slibs" kopiert
- und anschlie▀end von der Ram Disk entfernt.
-
- Wenn man will,kann die -n - Option zur Unterstⁿtzung des Source Level
- Debuggers "sdb" eingeschaltet werden. (Das ist ab der Compiler Version
- 3.6a m÷glich) Dazu mu▀ in den <makefile>-Dateien die Zeile
-
- "DEBUG =" in "DEBUG = -n"
-
- abgeΣndert werden. Beim Binden mit ld mu▀ dann die -g - Option einge-
- gechaltet sein. (Damit er÷ffnet sich die M÷glichkeit, herauszufinden,
- warum die Funktionen nicht das tun was in der Beschreibung steht)
-
- .bp
- .he ;Anhang C;Umfang des Paketes;Anhang C
- Anhang C: Umfang des Pakets
-
- Das Paket besteht aus einer Diskette mit folgendem Inhalt:
-
-
- Name der Diskette: SGL
-
- SGL:
-
- copyright (Textdatei)
- docs (Directory)
- examples (Directory)
- fonts (Directory)
- readme Allgemeine Informationen (Textdatei)
- slibs (Directory)
- sources (Directory)
-
- SGL:docs
-
- readme (Textdatei)
- sgl_g.doc Dokumentation (Nroff-Formatierte TextDatei)
- sgl_g.nro Dokumentation (Unformatierte Textdatei)
-
- SGL:examples
-
- readme (Textdatei)
- ex1.c Beispiel - Grafikprogramm 1 (C-Datei)
- ex1 Ausfⁿhrbares Programm dazu
- ex2.c Beispiel - Grafikprogramm 2 (C-Datei)
- ex2 Ausfⁿhrbares Programm dazu
- ex3.c Beispiel - Grafikprogramm 3 (C-Datei)
- ex3 Ausfⁿhrbares Programm dazu
- graph.c Beispiel - Grafikprogramm 4 (C-Datei)
- graph Ausfⁿhrbares Programm dazu
- graph.dat Eingabedatei zu graph (Textdatei)
- wave_00.res
- wave_01.res Kurven zu graph (Textdateien)
-
- SGL:fonts
-
- readme (Textdatei)
- greek (Directory)
- greek.font Grichischer Schriftfont (Fontdatei)
-
- greek/
-
- 8 (Fontdatei)
-
-
- SGL:slibs
-
- sgl.lib Bibliothek (BinΣrdatei)
- sgll.lib Bibliothek (BinΣrdatei)
-
- SGL:sources
-
- amiga.h aspl.c autoscl.c bndiag.c
- drawto.c evalsp.c evalspt.c finish.c
- frame.c gfunc.h globals.h grid.c
- htext.c ierror.c init.h initialize.c
- intnum.c linax.c line.c logax.c
- make_sgl make_sgl8 make_sgl8l make_sgll
- mkwind.c moveto.c pclip.c picture.c
- polyfill.c polygon.c pspl.c pwatch.c
- rectan.c region.c rfint.c sacurve.c
- save_iff.c setdash.c setfmt.c setfont.c
- setmark.c setmode.c setpat.c setpen.c
- setref.c setrgb.c setstyle.c sncurve.c
- spcurve.c spl.c srcurve.c stcurve.c
- trans.c trdiag.c tspl.c tzdiag.c
- vclip.c
-
- Alle .c und .h - Dateien, makefile - Dateien wie unter Anhang B be-
- schrieben.
-
- .bp
-