home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / lang / sgl.lzh / DOCS / SGL_G.NRO < prev   
Encoding:
Text File  |  1988-10-03  |  68.0 KB  |  2,361 lines

  1. .pl 79
  2. .m1 2
  3. .m2 2
  4. .m3 2
  5. .m4 2
  6. .rm 70
  7. .nf
  8. .pc #
  9. .sp 24
  10.                                  S G L
  11.  
  12.                        Scientific Graphics Library
  13.  
  14.  
  15.  
  16. Autor:     Joachim Tworz
  17.            Lange Furche 3
  18.            7400 Tⁿbingen
  19.            West Germany
  20.  
  21. Bitnet:    PETWKA1@DTUZDV5A    
  22.  
  23.            Institut fⁿr Theoretische Astrophysik
  24.            Auf der Morgenstelle 12c
  25.            7400 Tⁿbingen
  26.  
  27. Copyright: Alle die Bibliothek beinhaltenden Dateien k÷nnen  kopiert und
  28.            weiterverbreitet werden.
  29.            Eine kommerzielle Nutzung der Bibliothek und Teilen davon ist
  30.            ausgeschlossen.
  31.            Fehler/─nderungen/Verbesserungen bitte dem Autor mitteilen.
  32.            Erweiterungen sind erwⁿnscht !
  33.  
  34.            Tⁿbingen, 17. 10. 1988
  35.  
  36.  
  37.  
  38. .bp
  39. ----------------------------------------------------------------------
  40. Inhalt:
  41. ----------------------------------------------------------------------
  42.  
  43. 1. ........................................................... Vorwort
  44. 2. ................................................ Konzeption von SGL
  45. 3. ........................................ Aufbau eines SGL-Programms
  46. 4. ....................................... Beschreibung der Funktionen
  47.  
  48. Anhang:
  49.  
  50. A  ................................ Alphabetische Liste der Funktionen
  51. B  ................................... Erstellen der Graphikbibliothek
  52. C  ..................................................Umfang des Pakets
  53. .bp
  54. .fo ; ;[ # ];
  55. ----------------------------------------------------------------------
  56. 1. Vorwort
  57. ----------------------------------------------------------------------
  58.  
  59. Das vorliegende Paket entstand  aus dem  Bedⁿrfniss, wissenschaftliche
  60. Grafiken auf dem Amiga darzustellen. Dabei stellte sich die  Frage, ob
  61. das Packet als geschlossenes Programm (wie zB. Egraph)  oder  als Bib-
  62. liothek konzipiert werden sollte.  Ein Programm ist in  der  Bedienung
  63. einfacher und fⁿr den  Benutzer leichter zu  erlernen als  der  Umgang
  64. mit einer Bibliothek. Jedoch  gibt eine  Bibliothek mehr  FlexibilitΣt
  65. und  erm÷glicht es, den  Bedⁿrfnissen angepasste  Programme  selbst zu 
  66. entwickeln, was schlie▀lich den Ausschlag gab,  ein Bibliothekskonzept
  67. zu verwirklichen.
  68. Als Vorbild diente dabei das an der UniversitΣt  Stuttgart entwickelte
  69. Grafikpaket PICASSO. Die vorliegende Version 1.0  von SGL hat in  etwa
  70. die gleichen M÷glichkeiten wie sie der 2D-Teil von PICASSO  bietet. Es
  71. wurde jedoch darauf geachtet, da▀ einige MΣngel, die PICASSO  aufweist
  72. vermieden wurden. Als Programmiersprache fand C Verwendung.  Das Paket
  73. wurde mit dem Aztec Compiler Version 3.6 der Fa. Manx entwickelt.
  74. Zur Zeit besteht die Bibliothek aus ca 45 Funktionen, wovon ca 30  dem
  75. Benutzer direkt zur Verfⁿgung stehen.
  76.  
  77. Das Schwergewicht der Bibliothek wurde auf das Zeichnen von Kurven und
  78. deren Interpolation gelegt;dementsprechend ist die Zahl der dafⁿr vor-
  79. gesehenen Funktionen relativ gro▀. Um eine m÷glichst hohe FlexibilitΣt
  80. zu erreichen, wurden aber auch ganz elementare Funktionen zum Zeichnen
  81. von einfachen Linien und Figuren beigefⁿgt.
  82.  
  83. Fⁿr die Zukunft sind ein  3D-Teil und  gerΣteunabhΣngige  Schriftfonts 
  84. (Vektorfonts) vorgesehen.
  85.  
  86. .bp
  87. .he ;2.; ;Konzeption von SGL
  88. 2. Konzeption von SGL
  89.  
  90.  
  91. Die in SGL enthaltenen  Funktionen k÷nnen grob  in zwei Klassen unter-
  92. teilt werden:
  93.   
  94.   1. Benutzerfunktionen
  95.  
  96.   2. Kernfunktionen
  97.  
  98. Die erste Klasse kann von einem Programm direkt aufgerufen werden,wΣh-
  99. rend die zweite Klasse  Hilfsfunktionen beinhaltet, die  von denen der
  100. ersten Klasse gerbraucht werden. Alle Funktionen  wurden so  geschrie-
  101. ben, da▀ ihre Anordnung in der Bibliothek so gewΣhlt  werden kann, da▀ 
  102. jeder Single Pass Linker mit einem  Durchlauf  auskommt.
  103.  
  104. Entsprechend ihrer Aufgabenstellung werden die Funktionen in verschie-
  105. dene Kategorien eingeteilt:
  106.  
  107.   * Initialisierung
  108.  
  109.   * Rahmen, Bild und Skalierung
  110.  
  111.   * Achsen und Raster
  112.  
  113.   * Zeichnen von Linien
  114.  
  115.   * Zeichnen von Figuren
  116.  
  117.   * Zeichnen von Kurven
  118.  
  119.   * Schreiben von Texten
  120.  
  121.   * Setzen und ─ndern von Parametern und Einstellungen
  122.  
  123.   * Kernfunktionen
  124.  
  125.  
  126. Fast alle Funktionen besitzen eine  Parameterliste, ⁿber die ihr  Ver-
  127. halten gesteuert wird. Die Reihenfolge, in der man  Funktionen  aufru-
  128. fen kann ist, wie man sich denken kann, nicht immer  beliebig.  Am An-
  129. fang einer jeden Funktion wird deshalb ⁿberprⁿft, ob die Funktion auf-
  130. gerufen werden kann oder ob sonstige Fehler  auftraten. Trat ein  Feh-
  131. ler auf, dann wird eine Meldung der Form
  132.  
  133.   Funktionsname: Fehlerbeschreibung
  134.  
  135. auf die Datei  <sgl.log>  geschrieben und ein entsprechender Rⁿckgabe-
  136. wert gesetzt. Wie auf Rⁿckgabewerte reagiert wird, bleibt jedem selbst
  137. ⁿberlassen. Es werden bewu▀t  keine Sprⁿnge  (exit)  aus dem  Programm
  138. vorgenommen um dem Benutzer Gelegenheit zu  geben, ein  Programm  ord-
  139. nungsgemΣ▀ zu beenden.
  140.  
  141. Jede mit dem Paket erzeugte Graphik kann als IFF-Datei unter dem Namen
  142. <sgl.iff> abgespeichert werden.
  143.  
  144. Um eine Grafik auf einem AusgabegerΣt  (Drucker)  auszugeben, wird das 
  145. AmigaDOS-Kommando <GraphicDump> verwendet (das ⁿber ein entsprechendes
  146. Menⁿ aktiviert wird).
  147.  
  148. Gleitkommaoperationen werden in doppelter Genauigkeit (64 Bit)  durch-
  149. gefⁿhrt, Integerzahlen vom Typ <int> sind 32 Bit lang.
  150.  
  151. .bp
  152. .he ;3.; ;Aufbau eines SGL-Programms
  153. 3. Aufbau eines SGL-Programms
  154.  
  155.  
  156. Jedes die SGL-Bibliothek benutzende Programm wird in bestimmten Teilen
  157. mehr oder weniger denselben  Aufbau haben.  Das liegt  daran, da▀  be-
  158. stimmte Funktionen immer in der gleichen Reihenfolge aufgerufen werden 
  159. mⁿssen (Initialisierung, Rahmengr÷▀e, Bildgr÷▀e etc.).
  160.  
  161. Nachdem das Packet mit der Funktion  INITIALIZE() initialisiert wurde,
  162. mu▀ die Gr÷▀e des Bildes und innerhalb dessen ein  Bereich, in dem ge-
  163. zeichnet werden soll angegeben werden. Die dafⁿr vorgesehenen Funktio-
  164. nen FRAME() und PICTURE() erwarten diese Angaben nicht notwendigerwei-
  165. se in Pixelkoordinaten; es sind beliebige Einheiten wΣhlbar, die  dann
  166. intern in Pixelkoordinaten umgerechnet werden. Die Verbindung zwischen
  167. dem eigenen Wertebereich (etwa bei einer Kurve, die man zeichnen will)
  168. und dem  des  durch  PICTURE()  festgelegten, wird  mit  der  Funktion
  169. REGION() hergestellt. Schlie▀lich mu▀ zur Ausgabe der Graphik noch ein
  170. Fenster bereitgestellt werden,was mit der Funktion MKWIND() geschieht.
  171. Damit k÷nnte ein Programm das folgende Aussehen haben:
  172.  
  173.  
  174.   main()
  175.   {
  176.     .
  177.     .
  178.     INITIALIZE(Bildschirmaufl÷sung,Fehlerausgabe);
  179.     FRAME(Rahmenbreite,Rahmenh÷he);
  180.     PICTURE(Bildbreite,Bildh÷he,X-Versatz,Y-Versatz);
  181.     REGION(Xmin,Xmax,Ymin,Ymax);
  182.     MKWIND();
  183.     .
  184.     .
  185.     weitere SGL-Funktionen
  186.     .
  187.     .
  188.     FINISH();
  189.     .
  190.     .
  191.   }
  192.  
  193.  
  194. Ganz wichtig ist es, am Ende die  Funktion  FINISH()  aufzurufen.  Sie 
  195. sorgt dafⁿr, da▀ alle wΣhrend des Programmlaufs  ge÷ffneten  AmigaDOS-
  196. Bibliotheken, Schriftfonts, Dateien etc. wieder geschlossen werden. 
  197.  
  198. .bp
  199. .he ;4.; ;Funktionen
  200. 4. Beschreibung der Funktionen
  201.  
  202.  
  203. Die Beschreibung der Funktionen erfolgt in einem einheitlichen Format:
  204.  
  205.    I. Funktionsbeschreibung
  206.   II. Funktionstyp
  207.  III. Syntax fⁿr den Aufruf
  208.   IV. Typ der ▄bergabeparameter
  209.    V. Parameterbeschreibung
  210.   VI. Rⁿckgabewerte
  211.  VII. Vorraussetzungen zum Aufruf der Funktion
  212. VIII. Weitere Hinweise
  213.  
  214. Im nachfolgenden werden die Funktionen in die  Kategorien
  215.  
  216.   (1S) Initialisierung
  217.   (2S) Rahmen, Bild und Skalierung
  218.   (3S) Achsen und Raster
  219.   (4S) Zeichnen von Linien
  220.   (5S) Zeichnen von Figuren
  221.   (6S) Zeichnen von Kurven
  222.   (7S) Schreiben von Texten
  223.   (8S) Setzen und ─ndern von Parametern
  224.   (9S) Mathematische Funktionen
  225.  
  226. unterteilt.
  227.  
  228. **********************************************************************
  229. !!! Der ▄bersicht halber werden Funktionsnamen in  Gro▀buchstaben  ge-
  230. schrieben. Bei Benutzung in eigenen Programmen, mⁿssen die Namen klein
  231. geschrieben werden.
  232. **********************************************************************
  233.  
  234. .bp
  235. .he ;4.1;Funktionen;Initialisierung
  236. INITIALIZE()......................................................(1S)
  237.  
  238.  
  239. Bevor eine Funktion aus SGL benutzt werden kann, mu▀ eine Initialisie-
  240. rung der Bibliothek vorgenommen werden. Das geschieht mit
  241.  
  242. int INITIALIZE();
  243.  
  244. INITIALIZE(Mode,Fehler)
  245.  
  246.  int Mode;
  247.  int Fehler;
  248.  
  249.  
  250. Parameter:
  251.  
  252.   Mode          Definiert die Bildschirmaufl÷sung.
  253.  
  254.                 0: 640x400 High Resolution Interlace
  255.                 1: 640x200 High Resolution Non Interlace
  256.                 2: 320x400 Low Resolution Interlace
  257.                 3: 320x200 Low Resolution Non Interlace
  258.  
  259.   Fehler        Steuert die Fehlerausgabe auf die Protokolldatei.
  260.  
  261.                 0: Ausgabe erfolgt in deutscher Sprache
  262.                 1: Ausgabe erfolgt in englischer Sprache
  263.  
  264.  
  265. Rⁿckgabewert:   0: Kein Fehler aufgetreten
  266.                 1: Fehler beim ÷ffnen der Protokolldatei
  267.  
  268.  
  269. .bp
  270. MKWIND()..........................................................(1S)
  271.  
  272.  
  273. Die Ausgabe einer Graphik erfolgt immer auf dem Bildschirm.  Dazu  mu▀ 
  274. ein Fenster bereitgestellt werden mit
  275.  
  276. int MKWIND();
  277.  
  278. MKWIND()
  279.  
  280.  
  281. Die Funktion ben÷tigt keine Argumente, da alle erforderlichen Parameter
  282. durch INITIALIZE() besetzt werden.
  283.  
  284. Rⁿckgabewert:   0: Kein Fehler aufgetreten
  285.                -1: Fehler beim ╓ffnen von <intuition.library>
  286.                -2: Fehler beim ╓ffnen von <graphics.library>
  287.                -3: Fehler beim ╓ffnen von <diskfont.library>
  288.                -4: Fehler beim ╓ffnen eines neuen Screens
  289.                -5: Fehler beim ╓ffnen eines neuen Windows
  290.                -6: Die Funktion wurde schon aufgerufen
  291.  
  292. Funktionen die zuvor aufgerufen werden mⁿssen:
  293.  
  294. INITIALIZE()
  295.  
  296. Nach Aufruf steht ein Menue zur Verfⁿgung, das mit der Funktion FINISH
  297. aktiviert wird.
  298.  
  299. Menuepunkte:  SAVE: Speichert eine Grafik als IFF (ILBM) Datei.
  300.  
  301.              PRINT: Macht eine Hardcopy der Grafik.  (mittels Graphic-
  302.                     dump, large format)
  303.  
  304.              CLOSE: Schlie▀t den Grafikbildschirm.
  305.  
  306.  
  307. Siehe auch: INITIALIZE()[1S]
  308.  
  309. .bp
  310. FINISH()..........................................................(1S)
  311.  
  312.  
  313. Die Funktion sorgt fⁿr eine ordnungsgemΣ▀e Beendigung  eines  SGL-Pro-
  314. gramms. Mit ihr werden alle durch die  ⁿbrigen  Funktionen  ge÷ffneten
  315. Bibliotheken, Schriftfonts, Fenster, Dateien etc. wieder  geschlossen.
  316.  
  317. void FINISH()
  318.  
  319. FINISH()
  320.  
  321. Parameter: keine
  322.  
  323. Rⁿckgabewert: keiner
  324.  
  325. Siehe auch: MKWIND()[1S]
  326. .bp
  327. .he ;4.2;Funktionen;Rahmen, Bild, Skalierung
  328. FRAME()...........................................................(2S)
  329.  
  330.  
  331. Bevor Linien, Kurven etc. gezeichnet werden k÷nnen, mu▀ ein Rahmen de-
  332. finiert werden, innerhalb dessen dann gezeichnet wird.  Das  geschieht
  333. mit
  334.  
  335. void FRAME();
  336.  
  337. FRAME(Breite, H÷he)
  338.  
  339.  double Breite;
  340.  double H÷he;
  341.  
  342.  
  343. Parameter:
  344.  
  345.   Breite        Breite des Rahmens in beliebigen Einheiten
  346.  
  347.   H÷he          H÷he des Rahmens in beliebigen Einheiten
  348.  
  349.  
  350. Rⁿckgabewert:   keiner
  351.  
  352.  
  353. Funktionen, die zuvor aufgerufen werden mⁿssen:
  354.  
  355. INITIALIZE()
  356.  
  357.  
  358. Mit dem Aufruf wird ein Koordinatensystem  "frame"  definiert,  dessen
  359. Ursprung die linke, untere Rahmenecke bildet.
  360. Wenn die Funktion nicht aufgerufen wird, dann ist der Rahmen mit einer
  361. Voreinstellung von 320x210 mm (ca. Din A4) besetzt.
  362.  
  363. .bp
  364. PICTURE().........................................................(2S)
  365.  
  366.  
  367. Innerhalb des mit FRAME() festgelegten Rahmens  wird  zusΣtzlich  noch
  368. ein Bildebereich definiert. Das kann dazu dienen, mehrere kleine  Bil-
  369. der innerhalb eines Rahmens zu zeichnen oder um den n÷tigen  Platz fⁿr
  370. Texte, Achsenbeschriftungen etc. zu schaffen.
  371.  
  372. void PICTURE();
  373.  
  374. PICTURE(Breite, H÷he, X-offset, Y-offset)
  375.  
  376.  double Breite;
  377.  double H÷he;
  378.  double X-offset;
  379.  double Y-offset;
  380.  
  381.  
  382. Parameter:
  383.  
  384.   Breite        Breite des Bildes
  385.  
  386.   H÷he          H÷he des Bildes
  387.  
  388.   X-offset      Horizontaler Abstand des  Bildes  von der  linken, un-
  389.                 teren Rahmenecke
  390.  
  391.   Y-offset      Vertikaler Abstand des Bildes von der linken,  unteren
  392.                 Rahmenecke
  393.  
  394. Die Einheiten, in der die Parameter angegeben werden, mⁿssen mit denen
  395. von FRAME() ⁿbereinstimmen.
  396.  
  397.  
  398. Rⁿckgabewert:   keiner
  399.  
  400. Funktionen, die zuvor aufgerufen werden mⁿssen:
  401.  
  402. INITIALIZE(), FRAME()
  403.  
  404.  
  405. Wird die Funktion nicht aufgerufen, dann sind die Parameter  ebenfalls
  406. mit einer Voreinstellung  besetzt.  Wenn die  Dimensionen des  Rahmens 
  407. ⁿberschritten werden, dann wird automatisch verkleinert. Mit PICTURE()
  408. wird ein Koordinatensystem "picture" definiert,  dessen  Ursprung  die
  409. linke, untere Bildecke bildet.
  410.  
  411. Siehe auch: FRAME()[2S]
  412.  
  413. .bp
  414. REGION()..........................................................(2S)
  415.  
  416.  
  417. Um die n÷tigen Skalierungsfaktoren auf der x- und y-Achse zu erhalten,
  418. mu▀ der darzustellende Wertebereich  auf  den  Achsen  (etwa bei einer 
  419. Kurve) bekannt sein. Dazu dient die Funktion
  420.  
  421. void REGION();
  422.  
  423. REGION(X-min, X-max, Y-min, Y-max)
  424.  
  425.  double X-min;
  426.  double X-max;
  427.  double Y-min;
  428.  double X-max;
  429.  
  430.  
  431. Parameter:
  432.  
  433.   X-min         Minimaler Wert auf der x-Achse
  434.  
  435.   X-max         Maximaler Wert auf der x-Achse
  436.  
  437.   Y-min         Minimaler Wert auf der y-Achse
  438.  
  439.   Y-max         Maximaler Wert auf der y-Achse
  440.  
  441.   
  442. Rⁿckgabewert:   keiner
  443.  
  444. Funktionen, die zuvor aufgerufen werden mⁿssen:
  445.  
  446. INITIALIZE(), FRAME(), PICTURE()
  447.  
  448.  
  449. Anhand des Wertebereichs auf den Achsen werden alle n÷tigen Skalenfak-
  450. toren berechnet. Die Skalierung wird dabei mit dem  Bildbereich vorge-
  451. nommen. Die Funktion mu▀ auch dann aufgerufen werden,wenn sich Skalen-
  452. faktoren von 1.0 zwischen PICTURE() und REGION() ergeben.
  453. Mit Aufruf der Funktion wird  ein drittes  Koordinatensystem  "region"
  454. definiert, dessen Ursprung mit dem von "picture" identisch ist, jedoch
  455. mit den hier  definierten  Ma▀einheiten  rechnet.  Die  Funktion prⁿft
  456. auch, ob fⁿr die Achsen ein logarithmischer Ma▀stab  m÷glich  ist  und
  457. setzt fⁿr jede Achse eine entsprechende interne Markierung. 
  458.  
  459. Siehe auch: PICTURE()[2S]
  460.  
  461. .bp
  462. .he ;4.3;Funktionen;Achsen und Raster
  463. AUTOSCL().........................................................(3S)
  464.  
  465. Um der Tatsache Rechnung zu tragen, da▀ man oft nicht wei▀,  wie  eine 
  466. zu zeichnende Kurve  aussieht, man  insbesondere  ihre  Extrema  nicht
  467. kennt, wurde eine autmoatisch skalierende  Funktion eingebaut. Mit ihr
  468. erⁿbrigt sich der Aufruf von REGION() und der Achsenroutinen.
  469. Die Funktion bestimmt zuerst die Extrema, errechnet daraus  eine  gⁿn-
  470. stige Beschriftung der Achsen im linearen Ma▀stab und  zeichnet  damit
  471. ein Diagramm ohne! die Kurve einzutragen.
  472.  
  473. int AUTOSCL();
  474.  
  475. AUTOSCL(n, x, y)
  476.  
  477.  int    n;
  478.  double x[n];
  479.  double y[n];
  480.  
  481.  
  482. Parameter:
  483.  
  484.  
  485.   n             Anzahl der Stⁿtzstellen der Kurve
  486.  
  487.   x             x-Koordinaten der Kurve
  488.  
  489.   y             y-Koordinaten der Kurve
  490.  
  491.  
  492. Rⁿckgabewert:   0: Kein Fehler aufgetreten
  493.                 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  494.  
  495.  
  496. Funktionen, die zuvor aufgerufen mⁿssen:
  497.  
  498. INITIALIZE(), FRAME(), PICTURE(), MKWIND()
  499.  
  500.  
  501. Anhand der berechneten Extrema ruft die Funktion  REGION()  auf  und
  502. berechnet eine Einheit so, da▀ ca. 5 bis 10 Ticks  auf  einer  Achse  
  503. gezeichnet und beschriftet  werden.  Die  Beschriftung  erfolgt  bei
  504. Vielfachen einer Zehnerpotenz von 1, 0.5, 0.25 bzw. 0.2.  Der Werte-
  505. bereich, der REGION() ⁿbergeben wird, ist gegenⁿber dem der Kurve so
  506. erweitert, da▀ immer ein Tick am Anfang und am Ende einer  Achse  zu
  507. liegen kommt.
  508.  
  509. Es ist klar, da▀ eine automatisch arbeitende Funktion nicht  perfekt
  510. sein kann, wenn der Aufwand in ertrΣglichen Grenzen gehalten  werden
  511. soll. Die Beschriftung erfolgt im Dezimalformat, wobei die erforder-
  512. liche Mindestanzahl von Dezimalstellen berechnet wird. Diese Methode
  513. versagt natⁿrlich, wenn die Anzahl der Ziffern so gro▀ wird, da▀ sie
  514. sich gegenseitig ⁿberlappen. Um in solchen FΣllen  dennoch  Informa-
  515. tionen ⁿber die Kurve zu erhalten, werden die Koordinaten des  gr÷▀-
  516. ten und kleinsten Wertes auf die Protokolldatei <sgl.log>  geschrie-
  517. ben.
  518.  
  519. Siehe auch: LINAX()[3S], LOGAX()[3S], REGION()[2S]
  520.  
  521. .bp
  522. GRID()............................................................(3S)
  523.  
  524.  
  525. Zeichnet Rasterlinien senkrecht zu einer Achse
  526.  
  527. int GRID();
  528.  
  529. GRID(Achse, Einheit)
  530.  
  531.  char   Achse[2];
  532.  double Einheit;
  533.  
  534. Parameter:
  535.  
  536.   Achse         Achse, bei der Rasterlinien gezeichnet werden sollen
  537.  
  538.                 "XG": senkrecht zur x-Achse
  539.  
  540.                 "YG": senkrecht zur y-Achse
  541.  
  542.   Einheit       Die Interpretation hΣngt davon ab, welcher Ma▀stab fⁿr
  543.                 die spezifizerte Achse eingestellt ist. Im Fall  eines
  544.                 linearen Ma▀stabs werden Rasterlinien bei ganzzahligen
  545.                 Vielfachen  von  Einheit  gezeichnet.  Beim  logarith-
  546.                 mischen Ma▀stab wird Einheit in eine Integerzahl umge-
  547.                 wandelt und  dann als Anzahl von Rasterlinien zwischen
  548.                 zwei benachbarten  Dekaden  interpretiert, wobei  eine
  549.                 Dekadenposition  mit inbegriffen ist. Mit Anzahl = 1.0
  550.                 werden Rasterlinien nur an den Dekaden gezeichnet.
  551.  
  552. Rⁿckgabewert:   0: Kein Fehler
  553.                 1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  554.  
  555.  
  556. Funktionen, die zuvor aufgerufen werden mⁿssen:
  557.  
  558. INITIALIZE(), FRAME(), PICTURE(), MKWIND(), LINAX() bzw. LOGAX(),
  559. AUTOSCL() oder REGION()
  560.  
  561. Aus dem gesagten ergibt sich, da▀ der Ma▀stab zuvor mit  LINAX()  oder
  562. LOGAX() festgelegt werden mu▀.
  563.  
  564. Siehe auch: LINAX()[3S], LOGAX()[3S], SETPEN()[8S]
  565.  
  566. .bp
  567. LINAX()...........................................................(3S)
  568.  
  569.  
  570. Legt einen linearen Ma▀stab fⁿr eine Achse fest, zeichnet  eine Achse, 
  571. Achsenticks mit oder ohne Beschriftung.
  572.  
  573. int LINAX();
  574.  
  575. LINAX(Achse, Richtung, LΣnge, Einheit, Text)
  576.  
  577.  char   Achse[2];
  578.  int    Richtung;
  579.  int    Text;
  580.  double LΣnge;
  581.  double Einheit;
  582.  
  583.  
  584. Parameter:
  585.  
  586.   Achse         Achse, die gezeichnet werden soll.
  587.  
  588.                 "XL" x-Achse unten
  589.  
  590.                 "XU" x-Achse oben
  591.  
  592.                 "YL" y-Achse links
  593.  
  594.                 "YU" y-Achse rechts
  595.  
  596.   Richtung      Richtung der Achsenticks
  597.  
  598.                -1: Ticks nach innen gerichtet (ins Bild hinein)
  599.  
  600.                 1: Ticks nach au▀en gerichtet (vom Bild weg)
  601.  
  602.   LΣnge        LΣnge der Ticks in durch FRAME() definierten Einheiten.
  603.                Mit LΣnge = 0.0 werden  keine  Ticks  gezeichnet; Rich-
  604.                tung wird in diesem Fall ignoriert.
  605.  
  606.   Einheit      Bei ganzzahligen  Vielfachen  von  Einheit werden Ticks
  607.                gezeichnet.
  608.             
  609.                Beispiel: Der Skalenbereich gehe von 0.0 bis 10.0.  Mit
  610.                Einheit = 2.5 werden Ticks bei  0.0, 2.5, 5.0, 7.5  und
  611.                10.0 gezeichnet.
  612.  
  613.   Text         Steuert die Beschriftung der Ticks
  614.  
  615.                0: Keine Beschriftung
  616.  
  617.                1: Ticks werden beschriftet
  618.                
  619.  
  620. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  621.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  622.  
  623.  
  624. Funktionen, die zuvor aufgerufen werden mⁿssen:
  625.  
  626. INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND()
  627.  
  628. Die Funktion kann natⁿrlich mehrere Male aufgerufen  werden.  Das  ist
  629. dann sinnvoll, wenn man Achsen sowohl links und rechts bzw. unten  und
  630. oben haben will oder in einem groben Raster Ticks beschriftet  und  in
  631. einem feineren Raster nur Ticks ohne Beschriftung zeichnet.
  632. Eine Achsenlinie wird bei  mehreren  Aufrufen mit  gleichem  Parameter 
  633. Achse nur beim ersten Aufruf gezeichnet.  Das  gibt  die  M÷glichkeit,
  634. unterschiedliche Farben fⁿr die Achse und die Ticks zu wΣhlen.
  635. Die Beschriftung erfolgt im Dezimalformat. Mit der  Funktion  SETFMT()
  636. kann die Anzahl der Dezimalstellen eingestellt werden.  Voreingestellt
  637. ist eine Stelle. Wenn die Beschriftung zu dicht  gewΣhlt  wurde,  dann 
  638. wird so beschriftet, da▀ keine ▄berlappung stattfindet.
  639.  
  640. Siehe auch: REGION()[2S], LOGAX()[3S], SETPEN()[8S], SETFMT()[8S]
  641.  
  642. .bp
  643. LOGAX()...........................................................(3S)
  644.  
  645.  
  646. Legt einen logarithmischen Ma▀stab (Basis 10)  fⁿr  eine  Achse  fest,
  647. zeichnet eine Achse, Achsenticks mit oder ohne Beschriftung, wenn  der
  648. Wertebereich auf der spezifizierten Achse das zulΣ▀t.
  649.  
  650. int LOGAX();
  651.  
  652. LOGAX(Achse, Richtung, LΣnge, Anzahl, Text)
  653.  
  654.  char   Achse[2];
  655.  int    Richtung;
  656.  int    Anzahl;
  657.  int    Text;
  658.  double LΣnge;
  659.  
  660.  
  661. Parameter:
  662.  
  663.   Achse         Achse, die gezeichnet werden soll.
  664.  
  665.                 "XL" x-Achse unten
  666.  
  667.                 "XU" x-Achse oben
  668.  
  669.                 "YL" y-Achse links
  670.  
  671.                 "YU" y-Achse rechts
  672.  
  673.   Richtung      Richtung der Achsenticks
  674.  
  675.                -1: Ticks nach innen gerichtet (ins Bild hinein)
  676.  
  677.                 1: Ticks nach au▀en gerichtet (vom Bild weg)
  678.  
  679.   LΣnge        LΣnge der Ticks in durch FRAME() definierten Einheiten.
  680.                Mit LΣnge = 0.0 werden  keine  Ticks  gezeichnet; Rich-
  681.                tung wird in diesem Fall ignoriert.
  682.  
  683.   Anzahl       Zahl der Ticks zwischen zwei benachbarten Dekaden,  wo-
  684.                bei eine Dekadenposition mit inbegriffen ist.
  685.                Mit Anzahl = 1 werden Ticks nur an den Dekaden gezeich-
  686.                net.
  687.  
  688.   Text         Steuert die Beschriftung der Dekaden,  wenn  Anzahl = 1
  689.                gesetzt wurde. Ansonsten wird Text  ignoriert.  Die Be-
  690.                schriftung derfolgt in  der  Form  10 "hoch" n, wobei n 
  691.                eine ganze Zahl ist.
  692.  
  693.                0: Keine Beschriftung
  694.  
  695.                1: Dekaden werden beschriftet, wenn Anzahl = 1
  696.  
  697.  
  698. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  699.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  700.  
  701. Funktionen, die zuvor aufgerufen werden mⁿssen:
  702.  
  703. INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND()
  704.  
  705. Wie auch bei LINAX() kann die Funktion aus den dort genannten  Grⁿnden
  706. mehrere Male aufgerufen werden.
  707. Eine Achsenlinie wird bei  mehreren  Aufrufen mit  gleichem  Parameter 
  708. Achse nur beim ersten Aufruf gezeichnet.  Das  gibt  die  M÷glichkeit,
  709. unterschiedliche Farben fⁿr die Achse und die Ticks zu wΣhlen.
  710.  
  711. Siehe auch: REGION()[2S], LINAX()[3S], SETPEN()[8S]
  712.  
  713. .bp
  714. .he ;4.4;Funktionen;Linien
  715. MOVETO()..........................................................(4S)
  716.  
  717.  
  718. Positioniert den Zeichenstift an einer bestimmten Stelle.
  719.  
  720. int MOVETO();
  721.  
  722. MOVETO(X-Position, Y-Position)
  723.  
  724.  double X-Position;
  725.  double Y-Position;
  726.  
  727.  
  728. Parameter:
  729.  
  730.   X-Position   x-Koordinate der anzufahrenden Position
  731.  
  732.   Y-Position   y-Koordinate der anzufahrenden Position
  733.  
  734.  
  735. Rⁿckgabewert:  0: kein Fehler aufgetreten
  736.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  737.  
  738.  
  739. Funktionen, die zuvor aufgerufen werden mⁿssen:
  740.  
  741. INITIALIZE(), MKWIND(), FRAME(), 
  742. [PICTURE(), REGION()], [LINAX(), LOGAX()]
  743.  
  744. Die Position bezieht sich auf das Koordinatensystem das zum  Zeitpunkt
  745. des Aufrufs eingestellt ist; es mⁿssen deshalb nicht  notwendigerweise
  746. alle oben genannten Funktionen zuvor aufgerufen werden.
  747.  
  748. Siehe auch: FRAME()[2S], PICTURE()[2S],  REGION()[2S],  SETMODE()[8S],
  749.             SETREF()[8S]
  750.  
  751. .bp
  752. DRAWTO()..........................................................(4S)
  753.  
  754.  
  755. Zeichnet eine Linie von der gegenwΣrtigen Stiftposition zur  angegebe-
  756. nen.
  757.  
  758. int DRAWTO();
  759.  
  760. DRAWTO(X-Position, Y-Position)
  761.  
  762.  double X-Position;
  763.  double Y-Position;
  764.  
  765.  
  766. Parameter:
  767.  
  768.   X-Position   x-Koordinate des Endpunkts der Linie
  769.  
  770.   Y-Position   y-Koordinate des Endpunkts der Linie
  771.  
  772.  
  773. Rⁿckgabewert:  0: kein Fehler aufgetreten
  774.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  775.  
  776.  
  777. Funktionen, die zuvor aufgerufen werden mⁿssen:
  778.  
  779. INITIALIZE(), MKWIND(), FRAME(), 
  780. [PICTURE(), REGION()], [LINAX(), LOGAX()]
  781.  
  782. Die Koordinaten  beziehen sich auf das Koordinatensystem das zum Zeit-
  783. punkt des Aufrufs eingestellt ist; es  mⁿssen  deshalb  nicht  notwen-
  784. digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
  785.  
  786. Siehe auch: FRAME()[2S], PICTURE()[2S],  REGION()[2S],  SETMODE()[8S],
  787.             SETREF()[8S] SETPEN()[8S]
  788.  
  789. .bp
  790. LINE()............................................................(4S)
  791.  
  792.  
  793. Zeichnet eine Linie.
  794.  
  795. int LINE();
  796.  
  797. LINE(X-Anfang, Y-Anfang,X-Ende,Y-Ende)
  798.  
  799.  double X-Anfang;
  800.  double X-Ende;
  801.  double Y-Anfang;
  802.  double Y-Ende;
  803.  
  804.  
  805. Parameter:
  806.  
  807.   X-Anfang     x-Koordinate des Anfangspunkts der Linie
  808.  
  809.   Y-Anfang     y-Koordinate des Anfangspunkts der Linie
  810.  
  811.   X-Ende       x-Koordinate des Endpunkts der Linie
  812.  
  813.   Y-Ende       y-Koordinate des Endpunkts der Linie
  814.  
  815. Rⁿckgabewert:  0: kein Fehler aufgetreten
  816.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  817.  
  818. Funktionen, die zuvor aufgerufen werden mⁿssen:
  819.  
  820. INITIALIZE(), MKWIND(), FRAME(), 
  821. [PICTURE(), REGION()], [LINAX(), LOGAX()]
  822.  
  823. Die Koordinaten  beziehen sich auf das Koordinatensystem das zum Zeit-
  824. punkt des Aufrufs eingestellt ist; es  mⁿssen  deshalb  nicht  notwen-
  825. digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
  826.  
  827. Siehe auch: FRAME()[2S], PICTURE()[2S],  REGION()[2S],  SETMODE()[8S],
  828.             SETREF()[8S] SETPEN()[8S] MOVETO()[4S], DRAWTO()[4S]
  829.  
  830.  
  831. Alle Linien werden wenn n÷tig an den  Bildbegrenzungen  abgeschnitten.
  832. Welche Begrenzung dies ist, hΣngt  davon ab, wie die  Begrenzungsⁿber-
  833. wachung eingestellt ist. (siehe bei PWATCH()[8S])
  834.  
  835. .bp
  836. .he ;4.5;Funktionen;Figuren
  837. RECTAN()..........................................................(5S)
  838.  
  839.  
  840. Zeichnet ein Rechteck.
  841.  
  842.  
  843. int RECTAN();
  844.  
  845. RECTAN(xu, yu, xo, yo)
  846.  
  847.  double xu;
  848.  double xo;
  849.  double yu;
  850.  double yo;
  851.  
  852.  
  853. Parameter:
  854.  
  855.   xu           x-Koordinate des linken, unteren Eckpunkts
  856.  
  857.   yu           y-Koordinate des linken, unteren Eckpunkts
  858.  
  859.   xo           x-Koordinate des rechten, oberen Eckpunkts
  860.  
  861.   yo           y-Koordinate des rechten, oberen Eckpunkts
  862.  
  863.  
  864. Rⁿckgabewert:  0: kein Fehler aufgetreten
  865.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  866.  
  867. Funktionen, die zuvor aufgerufen werden mⁿssen:
  868.  
  869. INITIALIZE(), MKWIND(), FRAME(), 
  870. [PICTURE(), REGION()], [LINAX(), LOGAX()]
  871.  
  872. Die Koordinaten  beziehen sich auf das Koordinatensystem das zum Zeit-
  873. punkt des Aufrufs eingestellt ist; es  mⁿssen  deshalb  nicht  notwen-
  874. digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
  875.  
  876. Siehe auch: FRAME()[2S], PICTURE()[2S],  REGION()[2S],  SETMODE()[8S],
  877.             SETREF()[8S] SETPEN()[8S] MOVETO()[4S], DRAWTO()[4S]
  878.  
  879.  
  880. .bp
  881. POLYGON().........................................................(5S)
  882.  
  883.  
  884. Zeichnet einen beliebigen offenen oder geschlossenen Polygonzug.
  885.  
  886.  
  887. int POLYGON();
  888.  
  889. POLYGON(X-Feld, Y-Feld, Anzahl)
  890.  
  891.  double X-Feld[Anzahl];
  892.  double Y-Feld[Anzahl];
  893.  int    Anzahl;
  894.  
  895.  
  896. Parameter:
  897.  
  898.   X-Feld       x-Koordinaten der Eckpunkte des Polygonzugs
  899.  
  900.   Y-Feld       y-Koordinaten der Eckpunkte des Polygonzugs
  901.  
  902.   Anzahl       Zahl der Eckpunkte
  903.  
  904.  
  905. Rⁿckgabewert:  0: kein Fehler aufgetreten
  906.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  907.  
  908. Funktionen, die zuvor aufgerufen werden mⁿssen:
  909.  
  910. INITIALIZE(), MKWIND(), FRAME(), 
  911. [PICTURE(), REGION()], [LINAX(), LOGAX()]
  912.  
  913. Die Koordinaten  beziehen sich auf das Koordinatensystem das zum Zeit-
  914. punkt des Aufrufs eingestellt ist; es  mⁿssen  deshalb  nicht  notwen-
  915. digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
  916.  
  917. Siehe auch: FRAME()[2S], PICTURE()[2S],  REGION()[2S],  SETMODE()[8S],
  918.             SETREF()[8S] SETPEN()[8S]
  919.  
  920.  
  921. .bp
  922. POLYFILL()........................................................(5S)
  923.  
  924.  
  925. Zeichnet einen beliebigen, geschlossenen Polygonzug und  fⁿllt  diesen
  926. mit einer Farbe oder mit einem Farbmuster aus.
  927.  
  928. int POLYFILL();
  929.  
  930. POLYFILL(Anzahl,X-Feld, Y-Feld, Stift-Nr)
  931.  
  932.  int    Anzahl;
  933.  double X-Feld[Anzahl];
  934.  double Y-Feld[Anzahl];
  935.  int    Stift-Nr;
  936.  
  937. Parameter:
  938.  
  939.   X-Feld       x-Koordinaten der Eckpunkte des Polygonzugs
  940.  
  941.   Y-Feld       y-Koordinaten der Eckpunkte des Polygonzugs
  942.  
  943.   Anzahl       Zahl der Eckpunkte
  944.  
  945.   Stift-Nr     Nummer des Farbstifts,mit dem der Polygonzug ausgefⁿllt
  946.                werden soll. (Erlaubt sind Werte zwischen 1 und 12)
  947.  
  948.  
  949. Rⁿckgabewert:  0: kein Fehler aufgetreten
  950.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  951.  
  952. Funktionen, die zuvor aufgerufen werden mⁿssen:
  953.  
  954. INITIALIZE(), MKWIND(), FRAME(),
  955. [PICTURE(), REGION()], [LINAX(), LOGAX()]
  956.  
  957. Die Koordinaten  beziehen sich auf das Koordinatensystem das zum Zeit-
  958. punkt des Aufrufs eingestellt ist; es  mⁿssen  deshalb  nicht  notwen-
  959. digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
  960. Die Farbbesetzung der Stifte kann man bei SETPEN()[8S] entnehmen. Soll 
  961. das  Polygon mit einem Farbmuster gefⁿllt werden, dann  kann ein  sol-
  962. ches mit der Funktion SETPAT()[8S] eingestellt bzw. definiert  werden.
  963. Sollte Bei der Angabe der Eckpunkte der erste  und  der  letzte  nicht 
  964. ⁿbereinstimmen, dann wird das Polygon automatisch geschlossen.
  965.  
  966.  
  967. Siehe auch: FRAME()[2S], PICTURE()[2S],  REGION()[2S],  SETMODE()[8S],
  968.             SETREF()[8S] SETPEN()[8S] SETPAT()[8S]
  969.  
  970.  
  971. Alle Figuren werden wenn n÷tig an den Bildbegrenzungen  abgeschnitten.
  972. Welche Begrenzung dies ist, hΣngt  davon ab, wie die  Begrenzungsⁿber-
  973. wachung eingestellt ist. (siehe bei PWATCH()[8S])
  974.  
  975. .bp
  976. .he ;4.6;Funktionen;Kurven
  977. SNCURVE().........................................................(6S)
  978.  
  979.  
  980. Zeichnet eine Kurve deren Werte an den Stⁿtzstellen x[i] gegeben sind,
  981. wobei zwischen den Stⁿtzstellen  mittels  kubischer, nichtperiodischer 
  982. Polynomsplines interpoliert wird. Als Randbedingung wird 
  983.  
  984. dy             dy
  985. --(x = x[0]) = --(x = x[n-1]) = 0.0
  986. dx             dx
  987.  
  988. verwendet.
  989.  
  990. int SNCURVE();
  991.  
  992. SNCURVE(n,x,y)
  993.  
  994.  int    n;
  995.  double x[n];
  996.  double y[n];
  997.  
  998. Parameter:
  999.  
  1000.   n            Anzahl der Stⁿtzstellen
  1001.  
  1002.   x            Monoton steigende x-Koordinaten der Stⁿtzstellen
  1003.  
  1004.   y            Zugeh÷rige y-Koordinaten der Stⁿtzstellen
  1005.  
  1006.  
  1007. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1008.               -i: Monotoniefehler (x[i] < x[i-1])
  1009.                2: Zahl der Stⁿtzpunkte zu klein (n < 3)
  1010.                3: Nicht genⁿgend temporΣrer Speicherplatz
  1011.               >3: Fehler bei Berechnung der Polynomkoeffizienten
  1012.               
  1013.               9998: Interner Fehler (Transformationsfehler)
  1014.               9999: Falsche Reihenfolge von Funktionsaufrufen
  1015.  
  1016. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1017.  
  1018. INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
  1019. AUTOSCL()
  1020.  
  1021. Die Funktion interpretiert Koordinatenangaben bezⁿglich des  Koordina-
  1022. tensystems "region".
  1023.  
  1024. Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
  1025.  
  1026. .bp
  1027. SPCURVE().........................................................(6S)
  1028.  
  1029.  
  1030. Zeichnet eine Kurve deren Werte an den Stⁿtzstellen x[i] gegeben sind,
  1031. wobei zwischen den Stⁿtzstellen mittels kubischer, periodischer Poly- 
  1032. nomsplines interpoliert wird. Als Randbedingung mu▀
  1033.  
  1034.  y(x[0]) = y(x[n-1])
  1035.  
  1036. erfⁿllt sein. 
  1037.  
  1038. int SPCURVE();
  1039.  
  1040. SPCURVE(n,x,y)
  1041.  
  1042.  int    n;
  1043.  double x[n];
  1044.  double y[n];
  1045.  
  1046. Parameter:
  1047.  
  1048.   n            Anzahl der Stⁿtzstellen
  1049.  
  1050.   x            Monoton steigende x-Koordinaten der Stⁿtzstellen
  1051.  
  1052.   y            Zugeh÷rige y-Koordinaten der Stⁿtzstellen
  1053.  
  1054.  
  1055. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1056.                1: Fehler bei Berechnung der Polynomkoeffizienten
  1057.                3: Eingabedaten nichtperiodisch
  1058.                4: Zahl der Stⁿtzpunkte zu klein (n < 3)
  1059.                5: Nicht genⁿgend temporΣrer Speicherplatz
  1060.                6: Monotoniefehler
  1061.               10: Falsche Reihenfolge von Funktionsaufrufe
  1062.  
  1063.               9998: Interner Fehler (Transformationsfehler)
  1064.  
  1065. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1066.  
  1067. INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
  1068. AUTOSCL()
  1069.  
  1070. Die Funktion interpretiert Koordinatenangaben bezⁿglich des  Koordina-
  1071. tensystems "region".
  1072.  
  1073. Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
  1074.  
  1075. .bp
  1076. SACURVE().........................................................(6S)
  1077.  
  1078.  
  1079. Zeichnet eine Me▀kurve mit vorgegebener Standardabweichung, wobei mit
  1080. polynominalen Ausgleichssplines 3. Grades gearbeitet wird.
  1081.  
  1082. int SACURVE();
  1083.  
  1084. SACURVE(n,x,y,w)
  1085.  
  1086.  int    n;
  1087.  double x[n];
  1088.  double y[n];
  1089.  double w;
  1090.  
  1091. Parameter:
  1092.  
  1093.   n            Anzahl der Stⁿtzstellen
  1094.  
  1095.   x            Monoton steigende x-Koordinaten der Stⁿtzstellen
  1096.  
  1097.   y            Zugeh÷rige y-Koordinaten der Stⁿtzstellen
  1098.  
  1099.   w            Standardabweichung
  1100.  
  1101.  
  1102. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1103.                1: Zahl der Stⁿtzpunkte zu klein (n < 3)
  1104.                2: Monotoniefehler
  1105.                3: Standardabweichung kleiner 0.0
  1106.                4: Nicht genⁿgend temporΣrer Speicherplatz
  1107.                5: Fehler bei Berechnung der Polynomkoeffizienten
  1108.  
  1109.               9998: Interner Fehler (Transformationsfehler)
  1110.               9999: Falsche Reihenfolge von Funktionsaufrufe
  1111.  
  1112. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1113.  
  1114. INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
  1115. AUTOSCL()
  1116.  
  1117. Die Funktion interpretiert Koordinatenangaben bezⁿglich des  Koordina-
  1118. tensystems "region".
  1119.  
  1120. Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
  1121.  
  1122. .bp
  1123. SRCURVE().........................................................(6S)
  1124.  
  1125.  
  1126. Zeichnet eine Kurve deren Werte an den Stⁿtzstellen x[i] gegeben sind,
  1127. wobei zwischen den Stⁿtzstellen mittels gebrochen rationaler  Funktio- 
  1128. nen interpoliert wird. 
  1129.  
  1130. int SRCURVE();
  1131.  
  1132. SRCURVE(n,x,y)
  1133.  
  1134.  int    n;
  1135.  double x[n];
  1136.  double y[n];
  1137.  
  1138. Parameter:
  1139.  
  1140.   n            Anzahl der Stⁿtzstellen
  1141.  
  1142.   x            Monoton steigende x-Koordinaten der Stⁿtzstellen
  1143.  
  1144.   y            Zugeh÷rige y-Koordinaten der Stⁿtzstellen
  1145.  
  1146.  
  1147. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1148.                1: Fehler bei Berechnung der Polynomkoeffizienten
  1149.                2: Zahl der Stⁿtzpunkte zu klein (n < 3)
  1150.                3: Nicht genⁿgend temporΣrer Speicherplatz
  1151.               10: Falsche Reihenfolge von Funktionsaufrufen
  1152.               -i: Monotoniefehler (x[i] < x[i-1])
  1153.  
  1154.               9998: Interner Fehler (Transformationsfehler)
  1155.  
  1156. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1157.  
  1158. INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
  1159. AUTOSCL()
  1160.  
  1161. Die Funktion interpretiert Koordinatenangaben bezⁿglich des  Koordina-
  1162. tensystems "region".
  1163.  
  1164. Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
  1165.  
  1166. .bp
  1167. STCURVE().........................................................(6S)
  1168.  
  1169.  
  1170. Zeichnet eine Kurve deren Werte an den Stⁿtzstellen x[i] gegeben sind,
  1171. wobei zwischen den Stⁿtzstellen mittels  parametrischer, kubischer Po- 
  1172. lynomsplines interpoliert wird. Da die Kurve  parametrisiert wird, mu▀ 
  1173. die Monotoniebedingung fⁿr die Stⁿtzstellen nicht mehr erfⁿllt sein.
  1174.  
  1175. int STCURVE();
  1176.  
  1177. STCURVE(n,x,y)
  1178.  
  1179.  int    n;
  1180.  double x[n];
  1181.  double y[n];
  1182.  
  1183. Parameter:
  1184.  
  1185.   n            Anzahl der Stⁿtzstellen
  1186.  
  1187.   x            x-Koordinaten der Stⁿtzstellen
  1188.  
  1189.   y            Zugeh÷rige y-Koordinaten der Stⁿtzstellen
  1190.  
  1191.  
  1192. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1193.                1: Zahl der Stⁿtzpunkte zu klein (n < 3)
  1194.               >4: Fehler bei Berechnung der Polynomkoeffizienten
  1195.               99: Nicht genⁿgend temporΣrer Speicherplatz
  1196.  
  1197.               9998: Interner Fehler (Transformationsfehler)
  1198.               9999: Falsche Reihenfolge von Funktionsaufrufen
  1199.  
  1200.  
  1201. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1202.  
  1203. INITIALIZE(), FRAME(), PICTURE(), REGION(), MKWIND(), LINAX(), LOGAX()
  1204. AUTOSCL()
  1205.  
  1206. Die Funktion interpretiert Koordinatenangaben bezⁿglich des  Koordina-
  1207. tensystems "region".
  1208.  
  1209. Siehe auch: REGION()[2S] SETMODE()[8S] SETREF()[8S]
  1210.  
  1211. .bp
  1212. .he ;4.7;Funktionen;Texte
  1213. HTEXT()...........................................................(7S)
  1214.  
  1215.  
  1216. Schreibt  einen  Text an  eine  spezifizierte  Position  innerhalb der
  1217. Zeichnung.
  1218.  
  1219. int HTEXT();
  1220.  
  1221. HTEXT(X-Position,Y-Position,Position, String)
  1222.  
  1223. double X-Position;
  1224. double Y-Position;
  1225. char   *Position;
  1226. char   *String;
  1227.  
  1228. Parameter:
  1229.  
  1230.   X-Position   x-Koordinate der Textstelle
  1231.  
  1232.   Y-Position   y-Koordinate der Textstelle
  1233.  
  1234.   Position     Interpretation der obigen Koordinatenangaben
  1235.  
  1236.                "LB" (left bottom) Textanfang unten
  1237.                "LM" (left mid) Textanfang Mitte
  1238.                "LT" (left top) Textanfang oben
  1239.                "MB" (mid bottom) Textmitte unten
  1240.                "MM" (mid mid) Textmitte Mitte
  1241.                "MB" (mid top) Textmitte oben
  1242.                "RB" (right bottom) Textende unten
  1243.                "RM" (right mid) Textende Mitte
  1244.                "RT" (right top) Textende oben
  1245.  
  1246.   String       Zeichenkette, die geschrieben werden soll
  1247.  
  1248.  
  1249. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1250.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1251.  
  1252. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1253.  
  1254. INITIALIZE(), FRAME(), MKWIND(), 
  1255. [PICTURE()], [REGION()],LINAX(), LOGAX(), AUTOSCL()]
  1256.  
  1257. Die Koordinaten  beziehen sich auf das Koordinatensystem das zum Zeit-
  1258. punkt des Aufrufs eingestellt ist; es  mⁿssen  deshalb  nicht  notwen-
  1259. digerweise alle oben genannten Funktionen zuvor aufgerufen werden.
  1260. Die Stiftfarbe und der Textfont hΣngen von der  Einstellung zum  Zeit-
  1261. punkt des Aufrufes ab.
  1262.  
  1263. Siehe auch: SETPEN()[8S], SETFONT()[8S], SETSTYLE()[8S]
  1264.  
  1265. .bp
  1266. .he ;4.8;Funktionen;─ndern von Einstellungen
  1267. PWATCH()..........................................................(8S)
  1268.  
  1269.  
  1270. Schaltet die Feldgrenzenⁿberwachung ein und aus.
  1271.  
  1272. void PWATCH();
  1273.  
  1274. PWATCH(Status)
  1275.  
  1276.  char Status[2];
  1277.  
  1278.  
  1279. Parameter:
  1280.  
  1281.   Status       Zustand der ▄berwachung.
  1282.  
  1283.                "ON" eingeschaltet
  1284.                "OF" ausgeschaltet
  1285.  
  1286.  
  1287. Rⁿckgabewert:  keiner
  1288.  
  1289. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1290.  
  1291. INITIALIZE(), FRAME(), [PICTURE()], [REGION()]
  1292.  
  1293.  
  1294. Die Wirkung der ▄berwachung hΣngt vom  Koordinatensystem ab,  das  zum
  1295. Zeitpunkt des Aufrufes  eingestellt  ist. Im  eingeschalteten  Zustand 
  1296. werden Linien, Figuren, Texte etc. an den durch das  Koordinatensystem
  1297. definierten Begrenzungen abgeschnitten. Im Falle von Linien und  Figu-
  1298. ren wird ein Vektorclipping, im Falle von  ausgefⁿllten, geschlossenen 
  1299. Figuren ein Polygonclipping durchgefⁿhrt.
  1300.  
  1301. Siehe auch: FRAME()[2S], PICTURE()[2S], REGION()[2S]
  1302.  
  1303.  
  1304. .bp
  1305. SETDASH().........................................................(8S)
  1306.  
  1307.  
  1308. Einstellung von Strichlierungsmustern bei Linien und Kurven
  1309.  
  1310. int SETDASH();
  1311.  
  1312. SETDASH(Muster)
  1313.  
  1314.  int Muster;
  1315.  
  1316.  
  1317. Parameter:
  1318.  
  1319.   Muster       Nummer des Strichlierungsmusters
  1320.                
  1321.                0: Durchgezogene Linie. Pattern = 0xFFFF
  1322.  
  1323.                1: Punktierte Linie. Pattern = 0xCCCC
  1324.  
  1325.                2: Strichlierte Linie. Pattern = 0xFF00
  1326.  
  1327.                3: Punkt-Strichlierte Linie. Pattern = 0xF0C3
  1328.  
  1329.  
  1330. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1331.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1332.  
  1333. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1334.  
  1335. INITIALIZE() MKWIND()
  1336.  
  1337. Die Wirkung erstreckt sich auf alle danach aufgerufenen Funktionen,die
  1338. Linien und Kurven zeichnen. (LINE, DRAWTO, POLYGON, ##CURVE)  Funktio-
  1339. nen, die Kurven zeichnen, setzen "Muster" auf 0 zurⁿck.
  1340.  
  1341. .bp
  1342. SETFMT()..........................................................(8S)
  1343.  
  1344.  
  1345. Legt die Anzahl der Dezimalstellen bei der  Beschriftung  von  Achsen-
  1346. ticks fest.
  1347.  
  1348. int SETFMT();
  1349.  
  1350. SETFMT(nx, ny)
  1351.  
  1352.  int nx;
  1353.  int ny;
  1354.  
  1355.  
  1356. Parameter:
  1357.  
  1358.   nx           Anzahl Dezimalstellen fⁿr x-Achse
  1359.  
  1360.   ny           Anzahl Dezimalstellen fⁿr y-Achse
  1361.  
  1362.  
  1363. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1364.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1365.  
  1366. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1367.  
  1368. INITIALIZE()
  1369.  
  1370. Wenn die Funktion nicht aufgerufen wird, ist "nx" und "ny" mit 1  vor-
  1371. eingestellt.
  1372.  
  1373. Siehe auch: LINAX()[3S], LOGAX()[3S]
  1374.  
  1375.  
  1376. .bp
  1377. SETFONT().........................................................(8S)
  1378.  
  1379.  
  1380. WΣhlt einen Schriftfont fⁿr Beschriftungen mit der Funktion HTEXT().
  1381.  
  1382.  
  1383. int SETFONT();
  1384.  
  1385. SETFONT(Name, H÷he)
  1386.  
  1387.  char Name[];
  1388.  unsigned short H÷he;
  1389.  
  1390.  
  1391. Parameter:
  1392.  
  1393.   Name         Name des Schriftfonts (z.B. "topaz.font")
  1394.  
  1395.   H÷he         H÷he des Schriftfonts in Pixels
  1396.  
  1397.  
  1398. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1399.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1400.  
  1401. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1402.  
  1403. INITIALIZE() MKWIND()
  1404.  
  1405. Es k÷nnen dabei alle Fonts angewΣhlt werden, die sich auf dem jeweils
  1406. benutzten Fonts-Directory befinden.
  1407.  
  1408. Siehe auch: HTEXT()[7S]
  1409.  
  1410. .bp
  1411. SETMARK().........................................................(8S)
  1412.  
  1413.  
  1414. Markiert gegebene Punkte mit einem Symbol.
  1415.  
  1416.  
  1417. int SETMARK();
  1418.  
  1419. SETMARK(Nummer, Gr÷▀e, X-Feld, Y-Feld, Anzahl)
  1420.  
  1421.  int    Nummer;
  1422.  int    Anzahl;
  1423.  double Gr÷▀e;
  1424.  double X-Feld[Anzahl];
  1425.  double Y-Feld[Anzahl];
  1426.  
  1427.  
  1428. Parameter:
  1429.  
  1430.   Nummer       Nr. Des Symbols
  1431.  
  1432.                0: Gleichseitiges Dreieck mit Spitze nach oben
  1433.  
  1434.                1: Gleichseitiges Dreieck mit Spitze nach unten
  1435.  
  1436.                2: Zwei mit einer Spitze aufeinanderzeigende, vertikal 
  1437.                   stehende, gleichseitige Dreiecke
  1438.  
  1439.                3: rechtwinkliges Kreuz (senkrecht stehend)
  1440.  
  1441.                4: Zwei mit einer Spitze aufeinanderzeigende, horizon-
  1442.                   tal liegende, gleichseitige Dreiecke
  1443.  
  1444.   Gr÷▀e        Gr÷▀e des Symbols in durch FRAME definierten Einheiten
  1445.  
  1446.   X-Feld       x-Koordinaten der zu markierenden Punkte
  1447.  
  1448.   Y-Feld       y-Koordinaten der zu markierenden Punkte
  1449.  
  1450.   Anzahl       Anzahl der zu markierenden Punkte
  1451.  
  1452.  
  1453. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1454.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1455.  
  1456. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1457.  
  1458. INITIALIZE() FRAME() [PICTURE() REGION()] MKWIND()
  1459.  
  1460. Siehe auch: FRAME()[2S]
  1461.  
  1462. .bp
  1463. SETMODE().........................................................(8S)
  1464.  
  1465.  
  1466. Schaltet die verschiedenen Koordinatensysteme ein.
  1467.  
  1468. int SETMODE();
  1469.  
  1470. SETMODE(System)
  1471.  
  1472.  char System[];
  1473.  
  1474.  
  1475. Parameter:
  1476.  
  1477.  
  1478.   System       Einzuschaltendes Koordinatensystem
  1479.  
  1480.                "FRA": Schaltet ins Koordinatensystem  "frame", dessen
  1481.                       Ursprung in der linken, unteren durch FRAME de-
  1482.                       finierten Rahmenecke liegt.
  1483.  
  1484.                "PIC": Schaltet ins Koordinatensystem "picture",dessen
  1485.                       Ursprung in der linken, unteren  durch  PICTURE
  1486.                       definierten Bildecke liegt.
  1487.  
  1488.                "REG": Schaltet ins Koordinatensystem "region", dessen
  1489.                       Ursprung mit dem von "picture"  identisch  ist,
  1490.                       jedoch mit den durch REGION definierten Ma▀ein-
  1491.                       heiten rechnet.
  1492.  
  1493.                "REF": Schaltet kein  Koordinatensystem  ein,  sondern
  1494.                       verschiebt den Ursprung des eingestellten  Sys-
  1495.                       tems zur jeweils aktuellen Stiftposition. Diese
  1496.                       Einstellung ist sehr hilfreich  beim  Schreiben
  1497.                       von Texten (Indizes),da relativ zum zuletzt ge-
  1498.                       schriebenen Zeichen positioniert werden kann.
  1499.  
  1500.  
  1501. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1502.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1503.  
  1504. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1505.  
  1506. INITIALIZE() FRAME() [PICTURE() REGION()] MKWIND()
  1507.  
  1508. Siehe auch: FRAME()[2S] PICTURE()[2S] REGION()[2S] SETREF()[8S]
  1509.  
  1510. .bp
  1511. SETPAT()..........................................................(8S)
  1512.  
  1513.  
  1514. Setzt ein Fⁿllmuster, das bei der Funktion POLYFILL verwendet wird.
  1515.  
  1516. int SETPAT();
  1517.  
  1518. SETPAT(Nummer, Pattern, Anzahl)
  1519.  
  1520.  int   Nummer;
  1521.  int   Anzahl;
  1522.  unsigned short Pattern[Anzahl];
  1523.  
  1524.  
  1525. Parameter:
  1526.  
  1527.  
  1528.   Nummer       Nr. des Fⁿllmusters
  1529.  
  1530.                -1: Ein eigenes Muster wird im Feld  "Pattern"  ⁿberge-
  1531.                    ben.
  1532.  
  1533.                 0: Bitmuster: 1. Bitplane  1010101010101010
  1534.  
  1535.                 1: Bitmuster: 1. Bitplane  1010101010101010
  1536.                               2. Bitplane  0101010101010101
  1537.  
  1538.                 2: Bitmuster: 1. Bitplane  1100110011001100
  1539.                               2. Bitplane  0011001100110011
  1540.  
  1541.                 3: Bitmuster: 1. Bitplane  1111111111111111
  1542.                               2. Bitplane  0011111111111100
  1543.                               3. Bitplane  0000111111110000
  1544.                               4. Bitplane  0000001111000000
  1545.  
  1546.  
  1547.   Pattern       Eigenes Patternfeld. Jedes Feldelement  definiert  ein
  1548.                 Bitmuster fⁿr eine  Bitplane.  Wird   ignoriert,  wenn 
  1549.                 Nummer != -1.
  1550.  
  1551.   Anzahl        Anzahl der Elemente des Patternfelds  "Pattern".  Mu▀
  1552.                 eine ganzzahlige  Potenz von 2 sein.  Wird ignoriert,
  1553.                 wenn Nummer != -1.
  1554.  
  1555.  
  1556. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1557.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1558.  
  1559. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1560.  
  1561. INITIALIZE() MKWIND()
  1562.  
  1563. Siehe auch: POLYFILL()[5S] SETPEN()[8S]
  1564.  
  1565. .bp
  1566. SETPEN()..........................................................(8S)
  1567.  
  1568.  
  1569. WΣhlt einen Farbstift zum Schreiben und Zeichnen aus.
  1570.  
  1571. int SETPEN();
  1572.  
  1573. SETPEN(Nummer)
  1574.  
  1575.  int  Nummer;
  1576.  
  1577.  
  1578. Parameter:
  1579.  
  1580.  
  1581.   Nummer       Nr. des Farbstifts. (1 <= Nummer <= 12). Damit  k÷nnen 
  1582.                die Farbregister 4-15 angewΣhlt werden.  Die  ersten 4
  1583.                bleiben unverΣndert. Die  Stifte  sind  mit  folgenden
  1584.                RGB-Werten vorbesetzt (hexadezimal):
  1585.  
  1586.                Nr.          R   G   B       Farbe
  1587.                
  1588.                 1           0   0   0      schwarz
  1589.                 2           1   1   1         ^
  1590.                 3           2   2   2         |
  1591.                 4           3   3   3         |
  1592.                 5           4   4   4         |
  1593.                 6           5   5   5         |  Graut÷ne
  1594.                 7           6   6   6         |
  1595.                 8           7   7   7         |
  1596.                 9           8   8   8         | 
  1597.                10           A   A   A         |
  1598.                11           C   C   C         |
  1599.                12           E   E   E        wei▀
  1600.  
  1601.  
  1602. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1603.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1604.  
  1605. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1606.  
  1607. INITIALIZE() MKWIND()
  1608.  
  1609. Siehe auch: SETRGB()[8S]
  1610.  
  1611. .bp
  1612. SETREF()..........................................................(8S)
  1613.  
  1614.  
  1615. Setzt den Referenzpunkt,bezⁿglich dem Koordinatenangaben interpretiert
  1616. werden. Damit ist es  m÷glich,  den  Ursprung  der  Koordinatensysteme 
  1617. "frame", "picture" und "region" zu Σndern.
  1618.  
  1619. int SETREF();
  1620.  
  1621. SETREF(X-Ref, Y-Ref)
  1622.  
  1623.  double X-Ref;
  1624.  double Y-Ref;
  1625.  
  1626.  
  1627. Parameter:
  1628.  
  1629.  
  1630.   X-Rref       x-Koordinate des Referenzpunktes
  1631.  
  1632.   Y-Rref       y-Koordinate des Referenzpunktes
  1633.  
  1634.  
  1635. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1636.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1637.  
  1638. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1639.  
  1640. INITIALIZE()
  1641.  
  1642. Die Interpretation der Koordinaten hΣngt davon ab,welches Koordinaten-
  1643. system zum Zeitpunkt des Aufrufs eingeschaltet ist. Der  Aufruf wirkt
  1644. (ⁿber Transformation) auf alle Koordinatensysteme.
  1645.  
  1646. Siehe auch: FRAME()[2S] PICTURE()[2S] REGION()[2S]
  1647.  
  1648. .bp
  1649. SETRGB()..........................................................(8S)
  1650.  
  1651.  
  1652. ─ndert die Farbe eines Zeichenstifts.
  1653.  
  1654. int SETRGB();
  1655.  
  1656. SETRGB(Stift, Rot, Grⁿn, Blau)
  1657.  
  1658.  int Stift;
  1659.  unsigned short Rot;
  1660.  unsigned short Grⁿn;
  1661.  unsigned short Blau;
  1662.  
  1663.  
  1664. Parameter:
  1665.  
  1666.   Stift        Nr. des Farbstifts. (0 ... 15).  Dabei  korrospondieren
  1667.                die Nummern 4 ... 15 mit 1 ... 12 der Funktion SETPEN.
  1668.  
  1669.   Rot          Rotanteil  (0-15)
  1670.  
  1671.   Grⁿn         Grⁿnanteil (0-15)
  1672.  
  1673.   Blau         Blauanteil (0-15)
  1674.  
  1675.  
  1676. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1677.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1678.  
  1679. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1680.  
  1681. INITIALIZE() MKWIND()
  1682.  
  1683. Siehe auch: SETPEN()[8S]
  1684.  
  1685. .bp
  1686. SETSTYLE()........................................................(8S)
  1687.  
  1688.  
  1689. ─ndert den Schriftstil bei mit der Funktion HTEXT geschriebenem Text.
  1690.  
  1691. int SETSTYLE();
  1692.  
  1693. SETSTYLE(Stil)
  1694.  
  1695.  char Stil[2];
  1696.  
  1697.  
  1698. Parameter:
  1699.  
  1700.  
  1701.   Stil         Stil des zu schreibenden Textes
  1702.  
  1703.                "IT" Italic
  1704.  
  1705.                "BF" Fett gedruckt. (bold)
  1706.  
  1707.                "NM" Normal
  1708.  
  1709.  
  1710. Rⁿckgabewert:  0: Kein Fehler aufgetreten
  1711.                1: Fehler (nΣhere Bezeichnung in der Protokolldatei)
  1712.  
  1713. Funktionen, die zuvor aufgerufen werden mⁿssen:
  1714.  
  1715. INITIALIZE() MKWIND()
  1716.  
  1717. Die Funktion wirkt auf den Schriftfont, der zum Zeitpunkt des  Aufrufs
  1718. eingestellt ist.
  1719.  
  1720. Siehe auch: SETFONT()[8S]
  1721.  
  1722. .bp
  1723. .he ;4.9; ;Mathematische Funktionen
  1724. ----------------------------------------------------------------------
  1725. 4.9 Mathematische Funktionen
  1726. ----------------------------------------------------------------------
  1727.  
  1728.  
  1729. Die in diesem Kapitel zu besprechenden Funktionen stellen  ausnahmslos
  1730. Kernfunktionen dar. Sie sind jedoch so allgemein geschrieben, da▀  sie
  1731. auch fⁿr eigene Zwecke verwendet werden k÷nnen.In erster Linie handelt
  1732. es sich um Interpolations- und Clippingverfahren.
  1733. Interpolationsfunktionen mittels kubischer Splines sind weitgehend an-
  1734. hand des Buches
  1735.  
  1736.  Formelsammlung zur Numerischen Mathematik mit C-Programmen
  1737.  
  1738. aus der Reihe BI Hochschultaschenbⁿcher gewonnen worden.  Dort  finden
  1739. sich auch ausfⁿhrliche Hinweise zur Theorie der Splinefunktionen.
  1740. .bp
  1741. .he ;4.9;Funktionen;Mathematische Funktionen
  1742. SPL().............................................................(9S)
  1743.  
  1744. Berechnet interpolierende Polynomsplines 3. Grades zu einer Kurve, de-
  1745. ren Werte an den Stⁿtzstellen x[i], i = 0 ... n-1 gegeben sind.
  1746.  
  1747. int SPL();
  1748.  
  1749. SPL(n, x, y, Bedng_a, Bedng_b, Typ, b, c, d)
  1750.  
  1751.  
  1752. Parameter:
  1753.  
  1754. a) Eingabe
  1755.  
  1756.  Name       Typ/LΣnge                    Bedeutung
  1757.  ---------------------------------------------------------------------
  1758.  n          int/ -          Anzahl der Stⁿtzstellen der Kurve.
  1759.  x          double/[n]      Monoton steigende x-Koordinaten der Kurve.
  1760.  y          double/[n]      Zugeh÷rige y-Koordinaten der Kurve.
  1761.  Bedng_a    double/ -       Randbedingung in x[0].
  1762.  Bedng_b    double/ -       Randbedingung in x[n-1].
  1763.  Typ        int/ -          Typ der Randbedingung.
  1764.                              0: Not a knot Bedingung
  1765.                              1: 1. Ableitung
  1766.                              2: 2. Ableitung
  1767.                              3: 3. Ableitung
  1768.  
  1769.  
  1770. b) Ausgabe:
  1771.  
  1772.  b, c, d    double/[n]      Spline Koeffizienten (a = y)
  1773.  ---------------------------------------------------------------------
  1774.  
  1775. Funktionsaufrufe: TRDIAG()
  1776.  
  1777. Rⁿckgabewert:     0: Kein Fehler
  1778.                  -i: Monotoniefehler x[i] < x[i-1]
  1779.                   1: Falscher Wert fⁿr "Typ"
  1780.                   2: n < 3
  1781.                   3: Nicht genⁿgend temporΣrer Speicherplatz
  1782.                  >3: Fehler bei der Diagonalisierung
  1783.  
  1784. Der Speicherplatz fⁿr die Splinekoeffizienten mu▀ in der rufenden Ein-
  1785. heit bereitgestellt werden.
  1786.  
  1787. .bp
  1788. ASPL()............................................................(9S)
  1789.  
  1790.  
  1791. Berechnet interpolierende Polynomsplines 3. Grades zu  einer  Me▀kurve
  1792. mit gegebener Standardabweichung.
  1793.  
  1794.  
  1795. int aspl();
  1796.  
  1797. aspl(n, x, y, w, a, b, c, d)
  1798.  
  1799.  
  1800. Parameter:
  1801.  
  1802. a) Eingabe
  1803.  
  1804.  Name       Typ/LΣnge                    Bedeutung
  1805.  ---------------------------------------------------------------------
  1806.  n          int/ -          Anzahl der Me▀werte (n > 6).
  1807.  x          double/[n]      Monoton steigende x-Koordinaten  der  Me▀-
  1808.                             werte.
  1809.  y          double/[n]      Zugeh÷rige y-Koordinaten.
  1810.  w          double/ -       Standardabweichung.
  1811.  
  1812. b) Ausgabe:
  1813.  
  1814.  a,b,c,d    double/[n]      Spline Koeffizienten.
  1815.  ---------------------------------------------------------------------
  1816.  
  1817. Funktionsaufrufe: BNDIAG()
  1818.  
  1819. Rⁿckgabewert:     0: Kein Fehler
  1820.                   1: n <= 6
  1821.                   2: Monotoniefehler x[i] < x[i-1]
  1822.                   3: w <= 0.0
  1823.                   4: Nicht genⁿgend temporΣrer Speicherplatz
  1824.                   5: Fehler wΣhrend Diagonalisierung
  1825.  
  1826.  
  1827. Der Speicherplatz fⁿr die Splinekoeffizienten mu▀ in der rufenden Ein-
  1828. heit bereitgestellt werden.
  1829.  
  1830. .bp
  1831. PSPL()............................................................(9S)
  1832.  
  1833.  
  1834. Berechnet interpolierende, periodische Polynomsplines 3. Grades zu ei-
  1835. ner Kurve, deren Werte an den Stⁿtzstellen x[i], i = 0 ... n-1 gegeben
  1836. sind.
  1837.  
  1838. int PSPL();
  1839.  
  1840. PSPL(n, x, y, b, c, d)
  1841.  
  1842.  
  1843. Parameter:
  1844.  
  1845. a) Eingabe
  1846.  
  1847.  Name       Typ/LΣnge                    Bedeutung
  1848.  ---------------------------------------------------------------------
  1849.  n          int/ -          Anzahl der Stⁿtzstellen der Kurve.
  1850.  x          double/[n]      Monoton steigende x-Koordinaten der Kurve.
  1851.  y          double/[n]      Zugeh÷rige y-Koordinaten der Kurve.
  1852.  
  1853. b) Ausgabe:
  1854.  
  1855.  b, c, d    double/[n]      Spline Koeffizienten (a = y)
  1856.  ---------------------------------------------------------------------
  1857.  
  1858. Funktionsaufrufe: TZDIAG()
  1859.  
  1860. Rⁿckgabewert:     0: Kein Fehler
  1861.                   1: Fehler wΣhrend Diagonalisierung
  1862.                   3: Eingabedaten nicht periodisch (y[n-1] != y[0])
  1863.                   4: n < 3
  1864.                   5: Nicht genⁿgend temporΣrer Speicherplatz
  1865.                   6: Monotoniefehler x[i] < x[i-1]
  1866.  
  1867.  
  1868. Der Speicherplatz fⁿr die Splinekoeffizienten mu▀ in der rufenden Ein-
  1869. heit bereitgestellt werden.
  1870.  
  1871. .bp
  1872. TSPL()............................................................(9S)
  1873.  
  1874.  
  1875. Berechnet parametrische, kubische Polynomsplines zu einer Kurve die an
  1876. den Stⁿtzstellen x[i], i = 0 ... n-1 gegeben  ist. Dabei  kann gewΣhlt
  1877. werden, ob die Kurvenparameter t[i] berechnet werden sollen oder vorge-
  1878. geben sind.
  1879.  
  1880. int TSPL()
  1881.  
  1882. TSPL(n, x, y, Typ, Bdng_a, Bdng_b, Bdng_t, t, bx, cx, dx, by, cy, dy) 
  1883.  
  1884.  
  1885. Parameter:
  1886.  
  1887. a) Eingabe
  1888.  
  1889.  Name       Typ/LΣnge                    Bedeutung
  1890.  ---------------------------------------------------------------------
  1891.  n          int/ -          Anzahl der Stⁿtzstellen der Kurve.
  1892.  x          double/[n]      x-Koordinaten der Kurve.
  1893.  y          double/[n]      Zugeh÷rige y-Koordinaten der Kurve.
  1894.  Typ        int/ -          Art der Randbedingung.
  1895.                             0: not a knot Bedingung
  1896.                             1: 1. Ableitung nach dem Parameter t
  1897.                             2: 2. Ableitung nach dem Parameter t
  1898.                             3: Periodischer Spline
  1899.                             4: Vorgabe der Ableitungen dy/dx
  1900.  Bdng_a     double/[2]      Randbedingung in x[0]
  1901.  Bdng_b     double/[2]      Randbedingung in x[n-1]
  1902.  Bdng_t     int/ -          Vorgabe der Kurvenparameter t.
  1903.                               0: t[i] werden berechnet
  1904.                             !=0: t[i] werden vorgegeben
  1905.  t          double/[n]      Kurvenparameter  t,  wenn  Bdng_t != 0  in
  1906.                             streng monotoner Anordnung.
  1907.  
  1908. b) Ausgabe:
  1909.  
  1910.  t          double/[n]      Kurvenparameter t. (wenn Bdng_t = 0)
  1911.  bx,cx,dx   double/[n]      Splinekoeffizienten der Komponente x
  1912.  by,cy,dy   double/[n]      Splinekoeffizienten der Komponente y
  1913.  ---------------------------------------------------------------------
  1914.  
  1915. Funktionsaufrufe: SPL(), PSPL()
  1916.  
  1917. Rⁿckgabewert:     0: Kein Fehler
  1918.                  -i: Monotoniefehler t[i] < t[i-1]
  1919.                   1: n < 3
  1920.                   2: Falscher Wert fⁿr Randbedingung                   
  1921.                   3: x[n-1] != x[0] wenn Typ = 3
  1922.                   4: y[n-1] != y[0] wenn Typ = 3
  1923.                  >5: Fehler in SPL oder PSPL aufgetreten
  1924.  
  1925.  
  1926. Der Speicherplatz fⁿr die Splinekoeffizienten mu▀ in der rufenden Ein-
  1927. heit bereitgestellt werden.
  1928.  
  1929. .bp
  1930. EVALSP()..........................................................(9S)
  1931.  
  1932.  
  1933. Berechnet den Funktionswert eines Polynomsplines 3. Grades  und  seine
  1934. nichttrivialen Ableitungen.
  1935.  
  1936. double EVALSP();
  1937.  
  1938. EVALSP(n, xx, a, b, c, d, x, Abl)
  1939.  
  1940.  
  1941. Parameter:
  1942.  
  1943. a) Eingabe
  1944.  
  1945.  Name       Typ/LΣnge                    Bedeutung
  1946.  ---------------------------------------------------------------------
  1947.  n          int/ -          Anzahl der Stⁿtzstellen.
  1948.  xx         double/ -       x-Wert, an der der  Funktionswert  gesucht
  1949.                             wird.
  1950.  a,b,c,d    double/[n-1]    Splinekoeffizienten.
  1951.  x          double/[n]      Stⁿtzstellen auf der x-Achse.
  1952.  
  1953. b) Ausgabe
  1954.  
  1955.  Abl        double/[3]      Die ersten 3 Ableitungen an der Stelle xx.
  1956. ----------------------------------------------------------------------
  1957.  
  1958. Funktionsaufrufe: keine
  1959.  
  1960. Rⁿckgabewert:     Funktionswert an der Stelle xx
  1961.  
  1962. Die Splinekoeffizienten mⁿssen zuvor mit SPL() oder PSPL()  berechnet
  1963. werden.
  1964.  
  1965. .bp
  1966. EVALSPT().........................................................(9S)
  1967.  
  1968.  
  1969. Berechnet den Funktionswert eines parametrischen Splines 3. Grades und
  1970. seine nichttrivialen Ableitungen.
  1971.  
  1972. int EVALSPT();
  1973.  
  1974. EVALSPT(n, tt, t, ax, bx, cx, dx, ay, by, cy, dy, sx, sy, Abl)
  1975.  
  1976.  
  1977. Parameter:
  1978.  
  1979. a) Eingabe
  1980.  
  1981.  Name       Typ/LΣnge                    Bedeutung
  1982.  ---------------------------------------------------------------------
  1983.  n          int/ -          Anzahl der Stⁿtzstellen.
  1984.  tt         double/ -       Parameterwert t, an der die Funktionswerte
  1985.                             sx = x(t) und sy = y(t)  berechnet  werden
  1986.                             sollen.
  1987.  t          double/[n]      Parameterwerte an den Stⁿtzstellen.
  1988.  ax,bx,cx   double/[n]      Splinekoeffizienten der x-Komponente.
  1989.  ay,by,cy   double/[n]      Splinekoeffizienten der y-Komponente.
  1990.  
  1991. b) Ausgabe
  1992.  
  1993.  sx         double/ -       Funktionswert  der   x-Komponente  an  der
  1994.                             Stelle tt. (x = x(tt))
  1995.  sy         double/ -       Funktionswert  der   y-Komponente  an  der
  1996.                             Stelle tt. (y = y(tt))
  1997.  Abl        double/[2][3]   Ableitungswerte. 
  1998.                             Abl[0][i], i = 0 ... 2 enthΣlt die  x-Kom-
  1999.                             ponenten der ersten drei Ableitungen.
  2000.                             Abl[1][i], i = 0 ... 2 enthΣlt die  y-Kom-
  2001.                             ponenten der ersten drei Ableitungen.
  2002.  ---------------------------------------------------------------------
  2003.  
  2004.  Funktionsaufrufe: EVALSP()
  2005.  
  2006.  Rⁿckgabewert:     keiner
  2007.  
  2008. Die Splinekoeffizienten mⁿssen zuvor mit TSPL() berechnet werden.
  2009.  
  2010. .bp
  2011. RFINT()...........................................................(9S)
  2012.  
  2013.  
  2014. Interpoliert eine Kurve, deren Werte an den Stⁿtzstellen x[i], i=1...n
  2015. gegeben sind mittels rationaler Funktionen. Der Orginalcode stammt aus
  2016. dem
  2017.  
  2018.  Informal report LA-6903-MS  von Gerald I. Kerley
  2019.  
  2020. Los Alamos scientific laboratory vom August 1977.
  2021.  
  2022. double RFINT();
  2023.  
  2024. RFINT(n, x, y, xx)
  2025.  
  2026.  
  2027. Parameter:
  2028.  
  2029. a) Eingabe
  2030.  
  2031.  Name       Typ/LΣnge                    Bedeutung
  2032.  ---------------------------------------------------------------------
  2033.  n          int/ -          Anzahl der Stⁿtzstellen.
  2034.  x          double/[n]      x-Koordinaten der Stⁿtzstellen. (monoton)
  2035.  y          double/[n]      zugeh÷rige y-Koordinaten
  2036.  xx         double/ -       x-Wert, an dem der Funktionswert  gesucht
  2037.                             wird.
  2038.  ---------------------------------------------------------------------
  2039.  
  2040. Funktionsaufrufe: keine
  2041.  
  2042. Rⁿckgabewert:     Funktionswert an der Stelle xx.
  2043.  
  2044. .bp
  2045. PCLIP()...........................................................(9S)
  2046.  
  2047.  
  2048. Beschneidet ein geschlossenes Polygon gegenⁿber  einem  rechtwinkligen
  2049. Fenster. Dabei kommt die Sutherland Hodgman Methode zur Anwendung. Die
  2050. Methode basiert darauf, da▀ das Polygon gegenⁿber  jeder  Fensterseite
  2051. beschnitten wird. Nach jedem Schritt entsteht (eventuell)   ein  neues
  2052. Polygon,mit dem die Prozedur mit der nΣchsten Fensterseite  wiederholt
  2053. wird, bis zuletzt ein Polygon  resultiert, das  nicht  mehr  ⁿber  die
  2054. Fensterbegrenzungen hinausragt.  (Oder nichts ⁿbrig bleibt,  wenn  das
  2055. Polygon ganz au▀erhalb des Begrenzungsfensters liegt)
  2056.  
  2057. int PCLIP();
  2058.  
  2059. PCLIP(n_alt, n_neu, x_alt, y_alt, x_neu, y_neu, wx, wy)
  2060.  
  2061.  
  2062. Parameter:
  2063.  
  2064. a) Eingabe
  2065.  
  2066.  Name       Typ/LΣnge                    Bedeutung
  2067.  ---------------------------------------------------------------------
  2068.  n_alt      int/ -          Zahl der Ecken des Orginalpolygons.
  2069.  x_alt      double/[n_alt]  x-Koordinaten der Ecken (sortiert).
  2070.  y_alt      double/[n_alt]  y-Koordinaten der Ecken (sortiert).
  2071.  wx,wy      dounle/[5]      Koordinaten der Ecken des  Begrenzungsfen-
  2072.                             sters, wobei  wx[0]=wx[4] und wy[0]=wy[4]
  2073.                             sein mu▀.
  2074.  
  2075. b) Ausgabe:
  2076.  
  2077.  n_neu      int/ -          Anzahl der Ecken des beschnittenen  Poly-
  2078.                             gons
  2079.  x_neu      double/[n_neu]  x-Koordinaten der Ecken des beschnittenen
  2080.                             Polygons.
  2081.  y_neu      double/[n_neu]  y-Koordinaten der Ecken des beschnittenen
  2082.                             Polygons.
  2083.  ---------------------------------------------------------------------
  2084.  
  2085. Funktionsaufrufe: keine
  2086.  
  2087. Rⁿckgabewert:  i: Anzahl der Ecken des beschnittenen Polygons
  2088.               -1: n_neu zu klein (Speicherplatz)
  2089.  
  2090. Der Speicherplatz fⁿr die Koordinaten der neuen  Polygonecken  mu▀  in
  2091. der rufenden Einheit bereitgestellt werden.
  2092.  
  2093. .bp
  2094. VCLIP()...........................................................(9S)
  2095.  
  2096.  
  2097. Beschneidet eine Linie gegenⁿber einem gegebenen  rechtwinkligen  Fen-
  2098. ster. Dabei wird die Cohen-Sutherland Methode benutzt.
  2099.  
  2100. int VCLIP();
  2101.  
  2102. VCLIP(x, y)
  2103.  
  2104. extern double pclip[];
  2105.  
  2106. Parameter:
  2107.  
  2108. a) Eingabe
  2109.  
  2110.  Name       Typ/LΣnge                    Bedeutung
  2111.  ---------------------------------------------------------------------
  2112.  x          double/[2]      x-Koordinate des Anfangs- und Endpukts der
  2113.                             Linie.
  2114.  y          double/[2]      y-Koordinate des Anfangs- und Endpukts der
  2115.                             Linie.
  2116.  
  2117. b) Ausgabe
  2118.  
  2119.  x          double/[2]      x-Koordinate des Anfangs- und Endpukts der
  2120.                             beschnitten  Linie.
  2121.  y          double/[2]      y-Koordinate des Anfangs- und Endpukts der
  2122.                             bescnittenen Linie.
  2123.  ---------------------------------------------------------------------
  2124.  
  2125. Funktionsaufrufe: keine
  2126.  
  2127. Rⁿckgabewert:     0: Linie liegt au▀erhalb des Begrenzungsfensters
  2128.                   1: Ganze Linie oder Teil davon  liegt  innerhalb 
  2129.                      des Begrenzungsfensters.
  2130.  
  2131. In der rufenden Einheit mu▀ ein globaler Vektor definiert sein,der
  2132. die Fensterbegrenzung in der Form zweier gegenⁿberliegender  Ecken
  2133. enthΣlt:
  2134.  
  2135. double pclip[4];
  2136.  
  2137. pclip[0] ... x-Koordinate der linken, unteren Fensterecke
  2138. pclip[1] ... zugeh÷rige y-Koordinate
  2139.  
  2140. pclip[2] ... x-Koordinate der gegenⁿberliegenden Ecke
  2141. pclip[3] ... zugeh÷rige y-Koordinate 
  2142.  
  2143. .bp
  2144. .he ;Anhang A;Liste der Funktionen;Anhang A
  2145. Anhang A: Alphabetische Liste der Funktionen
  2146.  
  2147.  
  2148. Funktion    Typ     ruft auf                        Status  Kategorie
  2149. ----------------------------------------------------------------------
  2150. aspl        int     bndiag                             K       9S  
  2151. autoscl     int     linax,region,setmode               U       2S
  2152. bndiag      int     ----                               K       --
  2153. drawto      int     bwatch, trans                      U       4S
  2154. evalsp      precsn  ----                               K       9S
  2155. evalspt     int     evalsp                             K       9S
  2156. finish      void    save_iff                           U       1S
  2157. frame       void    ----                               U       2S
  2158. grid        int     ----                               U       3S
  2159. htext       int     trans                              U       7S
  2160. ierror      void    ----                               K       --
  2161. initialize  int     ----                               U       1S
  2162. intnum      precsn  ----                               K       --
  2163. linax       int     intnum, setdash, pwatch            U       3S
  2164. line        int     ----                               U       4S
  2165. logax       int     intnum, setdash, pwatch            U       3S
  2166. mkwind      int     ----                               U       1S
  2167. moveto      int     trans                              U       4S
  2168. pclip       int     ----                               K       9S
  2169. picture     void    ----                               U       2S
  2170. polyfill    int     pclip,polygon,trans                U       5S
  2171. polygon     int     moveto, drawto, setdash            U       5S
  2172. pspl        int     tzdiag                             K       9S
  2173. pwatch      void    ----                               U       8S
  2174. rectan      int     moveto, drawto, pwatch             U       5S
  2175. region      void    ----                               U       2S
  2176. rfint       precsn  ----                               K       9S
  2177. sacurve     int     aspl,evalsp,moveto,drawto,setdash  U       6S
  2178. save_iff    int     compress_row                       K       --
  2179. setdash     int     ----                               U       8S
  2180. setfmt      void    ----                               U       8S
  2181. setfont     int     ----                               U       8S
  2182. setmark     int     trans                              U       8S
  2183. setmode     int     pwatch                             U       8S
  2184. setpat      int     ----                               U       8S
  2185. setpen      int     ----                               U       8S
  2186. setref      int     trans                              U       8S
  2187. setrgb      int     ----                               U       8S
  2188. setstyle    int     ----                               U       8S
  2189. sncurve     int     spl,evalsp,moveto,drawto,setdash   U       6S
  2190. spcurve     int     pspl,evalsp,moveto,drawto,setdash  U       6S
  2191. spl         int     trdiag                             K       9S
  2192. srcurve     int     rfint,moveto,drawto,setdash        U       6S
  2193. stcurve     int     tspl,evalspt                       U       6S
  2194. trans       int     ----                               K       --
  2195. trdiag      int     ----                               K       --
  2196. tspl        int     spl,pspl                           K       9S
  2197. tzdiag      int     ----                               K       --
  2198. vclip       int     ----                               K       9S
  2199. ----------------------------------------------------------------------
  2200. U ... Benutzerfunktion
  2201. K ... Kernfunktion
  2202.  
  2203. * Der Typ "precsn" ist eine (Macroprozessor)Definition fⁿr "double"
  2204.  
  2205. .bp
  2206. .he ;Anhang B;Erstellen der Grafikbibkiothek;Anhang B
  2207. Anhang B: Erstellen der Grafikbibliothek
  2208.  
  2209.  
  2210. Zum Erstellen der Grafikbibliothek anhand der Quelldateien mu▀ vorhan-
  2211. den sein:
  2212.  
  2213. a) 1 Amiga 500/1000/2000 mit mindestens 512 kB Ram,2 Diskettenlaufwer-
  2214.    ken oder einer Festplatte.
  2215.  
  2216. b) Manx Aztec C-Compiler Version 3.4 oder spΣter. (Developers Version)
  2217.    Alle Funktionen wurden mit der Version 3.6a im Zusammenhang mit dem
  2218.    Source Level Debugger (Quellebenenentlauser) SDB entwickelt,  soll-
  2219.    ten aber auch unter 3.4 laufen.
  2220.  
  2221. optional:
  2222.  
  2223. c) 1 Kanne Kaffee, Tee oder 1 Kasten Bier. (je nach Neigung)
  2224.  
  2225. d) Viel Geduld.
  2226.  
  2227. e) 1 R÷hrchen Beruhigungstabletten, (man beachte jedoch Wechselwirkung
  2228.    mit c) weil die Sache sowiso nicht so funktioniert wie  nachfolgend 
  2229.    beschrieben
  2230.  
  2231. Die Beschreibung  geht von 2 Diskettenlaufwerken aus. Auf der  System-
  2232. diskette (in Laufwerk df0:) sollten
  2233.  
  2234. der Compiler               cc
  2235. der Assembler              as
  2236. der Bibliotheksverwalter   lb
  2237. das Utility                make
  2238. die Kommandos              copy,delete,echo
  2239.  
  2240. vorhanden sein. Wenn sich die Diskette mit  dem  Namen sgl: im   Lauf-
  2241. werk df1: befindet, dann mⁿssen vom CLI aus die Kommandos 
  2242.  
  2243. 1> cd sgl:sources
  2244.  
  2245. 1> make -f <makefile>
  2246.  
  2247. eingegeben werden.
  2248.  
  2249. Unter <makefile> sind verschiedene Versionen vorhanden:
  2250.  
  2251. 1.) make_sgl      Gleitkommazahlen sind vom Typ double
  2252.                   Integers vom Typ int sind 32 Bit lang  ( +l - Option
  2253.                   beim compilieren eingeschaltet)
  2254.                   Es wird das small data und small code Modell verwen-
  2255.                   det. (Siehe Kapitel 1.4 cc.7 im Compiler Handbuch)
  2256.  
  2257. 2.) make_sgll     Wie oben, jedoch wird das large data und large memo-
  2258.                   ry Modell verwendet. (+C und +D Optionen beim compi-
  2259.                   lieren sind eingeschaltet)
  2260.     
  2261. 3.) make_sgl8     Wie 1), jedoch wird mit der +f8 - Option compiliert.
  2262.                   Dadurch wird ein vorhandener Mathematik  Koprozessor
  2263.                   68881 von Motorola unterstⁿtzt
  2264.  
  2265. 4.) make_sgl8l    Wie 2) + 3)
  2266.  
  2267.  
  2268. Es werden zuerst alle Quelldateien compiliert und dann in eine Biblio-
  2269. thek (auf der Ram Disk) geschrieben. Nachdem die  Bibliothek  komplett
  2270. ist, wird sie von der Ram Disk in das  Directory  "sgl:slibs"  kopiert
  2271. und anschlie▀end von der Ram Disk entfernt.
  2272.  
  2273. Wenn man will,kann die -n - Option  zur Unterstⁿtzung des Source Level
  2274. Debuggers "sdb" eingeschaltet werden. (Das ist ab der Compiler Version
  2275. 3.6a m÷glich) Dazu mu▀ in den <makefile>-Dateien die Zeile
  2276.  
  2277. "DEBUG =" in "DEBUG = -n"
  2278.  
  2279. abgeΣndert werden. Beim Binden mit ld mu▀ dann die -g - Option  einge-
  2280. gechaltet sein. (Damit er÷ffnet  sich die M÷glichkeit, herauszufinden,
  2281. warum die Funktionen nicht das tun was in der Beschreibung steht)
  2282.  
  2283. .bp
  2284. .he ;Anhang C;Umfang des Paketes;Anhang C
  2285. Anhang C: Umfang des Pakets
  2286.  
  2287. Das Paket besteht aus einer Diskette mit folgendem Inhalt:
  2288.  
  2289.  
  2290. Name der Diskette: SGL
  2291.  
  2292.  SGL:
  2293.  
  2294.    copyright   (Textdatei)
  2295.    docs        (Directory)
  2296.    examples    (Directory)
  2297.    fonts       (Directory)
  2298.    readme      Allgemeine Informationen (Textdatei)
  2299.    slibs       (Directory)
  2300.    sources     (Directory)
  2301.  
  2302.  SGL:docs
  2303.  
  2304.    readme      (Textdatei)
  2305.    sgl_g.doc   Dokumentation (Nroff-Formatierte TextDatei)
  2306.    sgl_g.nro   Dokumentation (Unformatierte Textdatei)
  2307.  
  2308.  SGL:examples
  2309.  
  2310.    readme      (Textdatei)
  2311.    ex1.c       Beispiel - Grafikprogramm 1 (C-Datei)
  2312.    ex1         Ausfⁿhrbares Programm dazu
  2313.    ex2.c       Beispiel - Grafikprogramm 2 (C-Datei)
  2314.    ex2         Ausfⁿhrbares Programm dazu
  2315.    ex3.c       Beispiel - Grafikprogramm 3 (C-Datei)
  2316.    ex3         Ausfⁿhrbares Programm dazu
  2317.    graph.c     Beispiel - Grafikprogramm 4 (C-Datei)
  2318.    graph       Ausfⁿhrbares Programm dazu
  2319.    graph.dat   Eingabedatei zu graph (Textdatei)
  2320.    wave_00.res
  2321.    wave_01.res Kurven zu graph (Textdateien) 
  2322.  
  2323.  SGL:fonts
  2324.  
  2325.    readme     (Textdatei)
  2326.    greek      (Directory)
  2327.    greek.font Grichischer Schriftfont (Fontdatei)
  2328.  
  2329.     greek/
  2330.  
  2331.       8         (Fontdatei)
  2332.  
  2333.  
  2334.  SGL:slibs
  2335.  
  2336.    sgl.lib    Bibliothek (BinΣrdatei)
  2337.    sgll.lib   Bibliothek (BinΣrdatei)
  2338.  
  2339.  SGL:sources
  2340.  
  2341.    amiga.h           aspl.c            autoscl.c         bndiag.c
  2342.    drawto.c          evalsp.c          evalspt.c         finish.c
  2343.    frame.c           gfunc.h           globals.h         grid.c
  2344.    htext.c           ierror.c          init.h            initialize.c
  2345.    intnum.c          linax.c           line.c            logax.c
  2346.    make_sgl          make_sgl8         make_sgl8l        make_sgll
  2347.    mkwind.c          moveto.c          pclip.c           picture.c
  2348.    polyfill.c        polygon.c         pspl.c            pwatch.c
  2349.    rectan.c          region.c          rfint.c           sacurve.c
  2350.    save_iff.c        setdash.c         setfmt.c          setfont.c
  2351.    setmark.c         setmode.c         setpat.c          setpen.c
  2352.    setref.c          setrgb.c          setstyle.c        sncurve.c
  2353.    spcurve.c         spl.c             srcurve.c         stcurve.c
  2354.    trans.c           trdiag.c          tspl.c            tzdiag.c
  2355.    vclip.c           
  2356.  
  2357.    Alle .c und .h - Dateien, makefile - Dateien wie unter Anhang B be-
  2358.    schrieben.
  2359.     
  2360. .bp
  2361.