@database Graph2D
@Index INDEXNODE
@master Graph2D.guide
@$VER: Graph2D Documentation 2.00 (04.02.95)
@author "Kai Nickel"
@(c) "Copyright © 1994-95 Kai Nickel"
@index INDEXNODE

@node "MAIN" "Table of contents"
                           @{b}@{u}G r a p h  2 D@{ub}@{uu}

                    Functionplotter and -analyzer
                      Version 2.00 (04.02.1995)
                         Author: Kai Nickel

1. Miscellanious

 1.1    @{" Short description  " link "Kurzbeschreibung" }   -   What is Graph2D?
 1.2    @{" Author             " link "AUTOR" }   -   Who and where is the author?
 1.3    @{" Copyright          " link "COPYRIGHT" }   -   How it should be...
 1.4    @{" Registration       " link "REGISTRIERUNG" }   -   To use Graph2D permanently
 1.5    @{" Installation       " link "INSTALLATION" }   -   Get it to your system
 1.6    @{" Questions&Answers  " link "FRAGEN" }   -   Answers to often asked questions

2. Usage

 2.1    @{" Basics             " link "Bedienung" }   -   Basical things about using Graph2D
 2.1.1  @{"   Project-menu     " link "PROJECT" }   -   The project-menu
 2.2    @{" Functioneditor     " link "Funktionseditor" }   -   The functioneditor
 2.2.1  @{"   Math. notation   " link "DARSTELLUNG" }   -   The notation-window
 2.2.2  @{"   Discussion       " link "Discussion" }   -   Discuss a function
 2.2.3  @{"   num. integration " link "INTEGRAL" }   -   Calculate an integrals
 2.2.4  @{"   Value-table      " link "VALUETABLE" }   -   Create a value-table
 2.2.5  @{"   Tangente         " link "TANGENTE" }   -   Create a tangente
 2.2.6  @{"   Taylor           " link "TAYLOR" }   -   Approximation with Taylor-polynome
 2.3    @{" 2D-graph           " link "2DGRAPH" }   -   The 2D-graph-window
 2.3.1  @{"   2D-editor        " link "2DEINSTELLER" }   -   The 2D-graph-editor
 2.4    @{" SIRDS-graph        " link "SIRDSGRAPH" }   -   The SIRDS-graph-window
 2.4.1  @{"   SIRDS-editor     " link "SIRDSEINSTELLER" }   -   The SIRDS-graph-editor
 2.5    @{" Textviewer         " link "Textanzeigefenster" }   -   The textviewers
 2.6    @{" Preset-editor      " link "PRESETS" }   -   The preset-editor
 2.7    @{" Print              " link "PRINT" }   -   The print-requester

3. Appendix

 3.1    @{" Functions          " link "FUNKTION" }   -   What is a function in Graph2D?
 3.1.1  @{"   Internals        " link "InterneFunktionen" }   -   Internal functions and operators
 3.1.2  @{"   Include          " link "EINBINDUNG" }   -   Include a function into another
 3.1.3  @{"   EBNF             " link "EBNF" }   -   Syntax in Backus-Naur-Form
 3.2    @{" History            " link "GESCHICHTE" }   -   Changes to former versions
 3.3    @{" MUI                " link "MUI" }   -   The user interface
 3.4    @{" SIRDS              " link "DREID" }   -   The 3D-technic
 3.5    @{" Index              " link "INDEXNODE" }   -   Index of this documentation
@endnode

@node "Kurzbeschreibung" "Short description"
@{u}1.1 Short description@{uu}

Graph2D is a function-plotter that can create graphs of math. functions and
is able to discuss them. That includes zero-points, extrema,
turning-points, monotony and symmetrie. You can derive and simplify the
functions, calculate value-tables, integrate functions numerically, create
tangents, etc. As a special feature functions can be presented in a
SIRDS-picture giving you the impression of "true" three- dimensionality.
The Graph2D package contains an installer-script and online-help.


@{u}Feature overview:@{uu}

  - Plots functions into highly configurable coordinate-systems
  - Generates SIRDS for three-dimensional functions
  - Work with many functions in many windows at the same time
  - Generation of discussions (zero-points, extrema, turning-points,
    monotony, symmetry)
  - symbolic derivation and numerical integration of funktion-terms
  - use your own functions to define other functions
  - Generation of value-tables and tangents
  - Shows functions in "mathematical notation"
  - system- and user-friendly MUI-interface
  - Printing of graphs and discussions
  - Online-Help as AmigaGuide
  - Installation with the Commodore-Installer
  - uncrippeled shareware without limitations


@{u}System requirements:@{uu}

  - Amiga with Kickstart2.0 or higher
  - installed @{"MUI-System" link "MUI" } version 2.1 or higher
@endnode

@node "AUTOR" "Author"
@{u}1.2 Author@{uu}


Graph2D and the documentation were written by

                  @{b}Kai Nickel@{ub}

  Mail          : Herzogstrasse 29
                  67435 Neustadt
                  Germany

  eMail         : kai@rpsbbs.pfalz.de (Kai Nickel)
                  un7x@rz.uni-karlsruhe.de


I would be glad about bug reports or ideas concerning future development of
Graph2D.


@{u}About this documentation:@{uu}

As you can see my English is not very good, and I know that there are a lot
of mistakes in this documentation. Especially the mathematical expressions
are often pure "inventions" because I could not find them in my
dictionaries. But despite this I hope that you can at least figure out what
I wanted to say... If anybody wants to put this documentation into "real"
English or even translate it into any other language: please contact me!


@{u}How to get updates:@{uu}

I will send updates of Graph2D to Aminet and FRAS. You may also call one of
the following (german) BBSs:

  - RPSBBS (06329-1624)
    Login "GAST", path "/Lokal/Support/Amiga/Graph2D"
    (my username is "Kai")

  - SchneeII (06347-92071)
    Login "GAST"
    (my username is "Kai")
@endnode

@node "COPYRIGHT" "Copyright"
@{u}1.3 Copyright@{uu}


Graph2D is Copyright © 1994-95 Kai Nickel.

Graph2D is shareware. The author owns the copyright for this programm.
Anybody who wants to use Graph2D seriously has to @{"register" link "REGISTRIERUNG" } himself at the
author.

Spreading of the unregistered version is permitted as long as there are no
commercial interests connected to the spreading. The price of a floppy-disk
with Graph2D on it must not be higher than US$3. The inclusion into
FD-series is hereby permitted, when nothing of the above said things is
injured. You must not change any of the files in the @{"original archive" link "INSTALLATION" } or
remove or add files from or to it. It must remain complete and unchanged!

The author cannot guarantee the correct function of Graph2D and cannot be
made responsible for any negative consequences that may result from the use
of Graph2D. Updates or bugfixes are not guaranteed.

Graph2D was developed with the Amiga-Oberon-Compiler V3.20 by the A+L AG.
The license of that compiler prohibits the use of Graph2D in the military
sector.

Graph2D uses the @{"MUI-system" link "MUI" } by Stefan Stuntz.

MagicWB and some of the icons in the Graph2D package are copyright by
Martin Huttenloher.

The @{"SIRDS" link "DREID" } algorithm was developed by Kilian Singer and has been included to
Graph2D with his permission.
@endnode

@node "REGISTRIERUNG" "Registration"
@{u}1.4 Registration@{uu}


  Graph2D is shareware. Everybody using the program someway serious, is
asked to register himself at the @{"author" link "AUTOR" }.

              The registration fee is DM 20 or US$15.

  Anybody using Graph2D longer than a certain evaluation period (lets say 2
weeks) without registering injures my @{"copyright" link "COPYRIGHT" } and breaks the license! The
unregistered version is not limited in any way but there are
nerv-requesters that appear sometimes and remind you about registering.
Please concern that I have invested many month of work in Graph2D and the
US$15 are really not that much money. I just want to have a kind of
positive feedback for my efforts. This may also motivate me for further
developments or bugfixes.

  After registering you get a personal keyfile which gives you the right to
use Graph2D and future updates (if there are any) permanently. Registration
of course also makes the nerv requesters disappear!


@{u}How to register:@{uu}

  You send me a letter containing the registration fee and a filled out
@{"Graph2D.RegForm" link "Graph2D.RegForm/MAIN" } because i need your address to generate your personal
keyfile. After a couple of days you should receive a letter from me
containing a floppy-disc with your keyfile on it and an installation guide.
If anything went wrong and you did not get a response from me after lets
say 4 weeks you should consider contacting me with another mail (don't get
me wrong: You shall not send the money twice :-))

  Thank you for supporting the shareware idea!
@endnode

@node "INSTALLATION" "Installation"
@{u}1.5 Installation@{uu}


@{u}Normal:@{uu}

The best way to get Graph2D installed is to start the script
"Graph2D-Install". Look for the script in the drawer of your preferred
language! You can start Graph2D after the installation just by clicking it
from the workbench.

Don't be afraid: If you chose "expert user" at the installation you may
                 confirm really every action!


@{u}Manually:@{uu}

If you don't have the Commodore installer you alternatively can also
install Graph2D by hand:

  - Create a Graph2D drawer and copy the main program into it

  - Copy the guide and the reg-form of your preferred language into
    the drawer

  - Copy the "GarbageCollector.library" to the "LIBS:" drawer of your
    system or to PROGDIR:Libs/.

  - Copy the "Graph2D.catalog" to your system's "Locale:Catalogs/English"
    or to PROGDIR:Catalogs/Libs/

  - optional: Copy the subdirectories "Functions" and "Graphs" to your
              drawer

  - optional: Replace the icons by the icons of the "MWBIcons" drawer


@{u}Systemrequirements:@{uu}

To use Graph2D you need an Amiga with Kickstart 2.0 or higher (2.1 for
localisation). You also have to have the @{"Mui-System" link "Mui" } by Stefan Stuntz
Version 2.1 or higher installed. Graph2D won't work without MUI!


@{u}Originalarchive:@{uu}

  The original Graph2D-archive contains the following files. If files
  have been added or removed then you have an illegal copy!

  Graph2D                          - main program
  Graph2D-Install                  - installation script
  Docs/Deutsch/Graph2D.guide       - german documentation/onlinehelp
  Docs/Deutsch/Graph2D.RegForm     - german registration form
  Docs/Deutsch/Graph2D.LiesMich    - german description
  Docs/English/Graph2D.guide       - documentation/onlinehelp
  Docs/English/Graph2D.RegForm     - registration form
  Docs/English/Graph2D.ReadMe      - description
  Docs/English/Product-Info        - description in fish-format
  Catalogs/english/Graph2D.catalog - english catalog
  Libs/garbagecollector.library    - library
  Libs/GarbageCollector.LiesMich   - german infotext for the library
  Graphs/Standard.2D               - 2D-standard coordinatesystem
  Graphs/Standard.SIRDS            - SIRDS-standard coordinatesystem
  Graphs/Trigonometrie.2D          - example of a trigonometrical system
  Funktions/Bsp2D.fkt              - example of a functionlist
  Funktions/Bsp3D.fkt              - example of a list of 3D-functions
  MWBIcons/ClickForColors          - MagicWB-palette (try it!)
  MWBIcons/Graph2D.info            - MagicWB-style icon
  MWBIcons/Graph2D.guide.info      - MagicWB-style icon
  MWBIcons/Graph2D.RegFrom.info    - MagicWB-style icon
  MWBIcons/Drawer.info             - MagicWB-style icon
  MWBIcons/Funktions.info          - MagicWB-style icon
  MWBIcons/Graphs.info             - MagicWB-style icon
  MWBIcons/Catalogs.info           - MagicWB-style icon
  MWBIcons/Libs.info               - MagicWB-style icon
@endnode

@node "FRAGEN" "Q&A"
@{u}1.6 Questions and answers@{uu}


@{u}So how exactly can I display the graph of a function?@{uu}

  First you have to generate a new function via "New", enter the
functionterm (e.g. "f(x)=sin(x)^2"), press <return> to interpret the
function and open a "New Graph". To make the function be plotted into the
graph-window you now have to mark the function as "plot" and "Redraw" the
graph to make the cange visible. The function should now be visible - of
course only, if parts of the function are inside the choosen interval of
the graph. You can change the visible interval, if you "edit" the graph.
@endnode

@node "Bedienung" "Basics"
@{u}2.1 Basics@{uu}


  Graph2D should be easy to use and look nice with every font and
configuration thanks to @{"MUI" link "MUI" }.

  This documentation is also available as context-sensitive @{b}online help@{ub}.
You can read the help just by pressing the @{b}"Help"-key@{ub} on the keyboard or by
selecting "Help..." from the "Project"-menu

  After the start by double-clicking the Graph2D icon a main-window - the
so called @{"functioneditor" link "Funktionseditor" } - opens in which you can enter and edit
@{"functions" link "FUNKTION" }.

  If there are functions present, you can look at them in graph-windows or
mathematically analyze them.
@endnode

@node "PROJECT" "Project-menu"
@{u}2.1.1 The project-menu@{uu}

The project-menu is available from the function-editor, from graph- and
notation-windows.

@{b}@{u}Project@{ub}@{uu}

  @{b}New Graph...@{ub}        - Creates a new graph-window. The graph type 
                        (@{"2D-graph" link "2DGRAPH" } or @{"SIRDS-graph" link "SIRDSGRAPH" }) has to be specified
                        in a little requester.
  @{b}Presets...@{ub}          - Opens the @{"presets-editor" link "PRESETS" }
  @{b}Help...@{ub}             - Opens the context-sensitive online-help like
                        pressing the HELP-key
  @{b}About...@{ub}            - Opens an info-window
  @{b}Quit@{ub}                - Quit Graph2D
@endnode

@node "Funktionseditor" "Function editor"
@{u}2.2 Function editor@{uu}


  The funktioneditor is a window, in which alle present @{"functions" link "Funktion" } are
listed and can be edited.

  A function from the @{b}list-gadget@{ub} appears in the @{b}function@{ub} gadget by
clicking on the function. If finish the entered or modified string with
pressing <return>, the functionterm gets automatically interpreted.

  If the interpreter detects an error in the function, the error gets
displayed in the @{b}"error"@{ub} gadget below, and the "bad" function will appear
in @{i}italics@{ui} in the function-list. Of course such a bad function cannot be
plotted or analyzed!

  Pressing the @{b}HELP-key@{ub} over the function or error gadget shows @{i}immediately@{ui}
the "Functions"-chapter of the documentation where you can find information
about the function-syntax.

  In the string-gadget @{b}"Graph"@{ub} with the popup-list all existing graphs are
shown by their names. You can give an individual name to every graph. When
you @{b}double-click@{ub} a graph in the list it will appear in the foreground.

  For a selected function you can define, whether and in which @{b}color@{ub} and
@{b}pattern@{ub} it should be visible in the selected graph. A @{b}double-click@{ub} to a
function toggles the visible-mark as if you had clicked onto the
@{b}visible-gadget@{ub}. A function that appears in the selected graph ist marked
with a preceding ">" in the function-list.

  Changes been made on a visible function will then be executed when you
click @{b}"Redraw"@{ub} in the graph-window - not before! This allows you to do more
than one change at once without a time-consuming redraw after every
change.

The image-buttons stand for the following things you can do with the
selected function:

  @{b}math. notation@{ub}   - Opens the @{"notation-window" link "DARSTELLUNG" } with the
                     selected function
  @{b}Derive@{ub}           - The derivation of the selected function will be
                     added to the list
  @{b}Simplify@{ub}         - A simplified aequivalent of the selected function
                     will be added to the list
  @{b}Diskussion@{ub}       - Initiates a selectable @{"discussion" link "DISCUSSION" }
  @{b}num. integration@{ub} - Calculates the @{"integral" link "INTEGRAL 0" }
  @{b}Value-table@{ub}      - Creates a @{"value-table" link "VALUETABLE" }
  @{b}Tangente@{ub}         - Creates a @{"tangente" link "TANGENTE" }

As long as the function-editor is active, the following menus can be
selected:


@{b}@{u}Project@{ub}@{uu}               - The @{"project-menu" link "PROJECT" }

@{b}@{u}Functions@{ub}@{uu}

  @{b}Clear all@{ub}           - The functionlist will be deleted
  @{b}Load ...@{ub}            - Load a functionlist
  @{b}Append...@{ub}           - Append a functionlist (without deleting the
                        actual one)
  @{b}Save as...@{ub}          - Save the functionliste

@{b}@{u}Edit@{ub}@{uu}

  @{b}New@{ub}                 - A new, "empty" function will be added to the
                        list at the selected position and can be
                        immediately edited
  @{b}Cut@{ub}                 - The selected function will be cut out of the list
  @{b}Paste@{ub}               - A former cut-out function will be added to the
                        list at the selected position

@{b}@{u}Miscellanious@{ub}@{uu}

  @{b}Simplify@{ub}            - like the according image-button
  @{b}Derive@{ub}              - "
  @{b}Diskussion@{ub}          - "
  @{b}num. integration...@{ub} - "
  @{b}Value-table...@{ub}      - "
  @{b}Tangente ...@{ub}        - "
  @{b}math. notation...@{ub}   - "
@endnode

@node "DARSTELLUNG" "math. notation"
@{u}2.2.1 Mathematical notation@{uu}


  In a window the selected function will be displayed in a more readable, a
more "normal" way. Divisions are shown by horizontal lines and exponents
are really at high-position. I call this the "mathematical notation"...

  If the notation exceeds the visible range of the window you can scroll
around with the scrollbars. The window gets closed by pressing the close-
gadget. You can have opened more than one notation-windows at the same time
an work in another part of Graph2D without problems.

  You can use the following menus:

@{b}@{u}Project@{ub}@{uu}               - The @{"project-menu" link "PROJECT" }


@{b}@{u}Notation@{ub}@{uu}

  @{b}Print@{ub}               - Prints the notation via Workbench-drivers and
                        settings. You can edit a scaling factor here.
@endnode

@node "DISCUSSION" "Discussion"
@{u}2.2.2 Discussion@{uu}


  Graph2D can discuss fuction with one variable in a selectable
@{b}test-interval@{ub}. This interval should always be choosen as @{i}small@{ui} as possible
for best results. Graph2D shows a report of the results in a @{"textviewer" link "TEXTANZEIGEFENSTER" } and
may be printed from there.
  A dicussion may take (especially on 68000er Amigas) sometimes quite a
long time and it is also very recommended to @{i}verify@{ui} the results by having a
look to the graph of the function. So you probably will see soon, that
certain types of zero-points will sometimes really not be detected.

  A complete discussion consists of the following parts:

@{b}Zero-points:@{ub} f(x) = 0

  The zero-points of the selected function will be detected. In addition to
the x-value you will also get the following information about the type of
the zero-point:

  -+       f'(x) > 0
  +-       f'(x) < 0
  ++       f'(x) = 0
  --       f'(x) = 0

@{b}Extrema:@{ub} f'(x) = 0

  min      f''(x) > 0
  max      f''(x) < 0

@{b}Turning-points:@{ub} f''(x) = 0

  left->right   f'''(x) < 0
  right->left   f'''(x) > 0

@{b}Monotony:@{ub}

  The test-intervall will be divided into parts where the selected function
is:

  monotonous raising       :  f'(x) >= 0
  monotonous falling       :  f'(x) <= 0
  strong monotonous raising:  f'(x) >  0
  strong monotonous falling:  f'(x) <  0

@{b}Symmetry:@{ub}

In this part the selected function will be tested whether it is

  - symmetric to the origin: f(x) = - f(-x)
  - symmetric to the y-axis: f(x) =   f(-x)

If both is not correct, then "No symmetry" will be reported.
@endnode

@node "INTEGRAL" "num. integration"
@{u}2.2.3 numerical integration@{uu}


  Allows you to calculate the integral of the selected function in an
@{b}intervall@{ub} you have to specify via the "Simpson"-formula.

  a, b: Integrationlimits
  k   : Subdivisions

  a
  /           b-a
  | f(x)dx = ----- * ( f(x ) + 4*f(x ) + 2*f(x ) + ...
  /           k*3         0         1         2
  b

             ... + 2*f(x   ) + 4*f(x   ) + f(x ) )
                        k-2         k-1       k
@endnode

@node "VALUETABLE" "Value-table"
@{u}2.2.4 Value-table@{uu}


  A value-table of the selected function in a definable @{b}intervall@{ub} and with
a selectable @{b}step@{ub}-width will be generated.
@endnode

@node "TANGENTE" "Tangente"
@{u}2.2.5 Tangente@{uu}


  A new function will be added to the list which represents a tangete on a
definable point @{b}x@{ub} of the selected function.
@endnode

@node "TAYLOR" "Taylor"
@{u}2.2.6 Taylor@{uu}


  A function can be approximated in a range around a selectable point @{b}x0@{ub}
with the Taylor-polynom. The higher you choose the @{b}degree@{ub} of that polynom
the more exact the approximation will be. But beware of choosing "degree"
too high (> 10) because the need of memory and time will increase
dramatically! The calculated polynom will be inserted into your function
list and is marked with a preceding "T" in its name.


@{b}Taylor:@{ub}  

   oo      (n)
  ----    f   (x ) *  x
  \             0      0              n
   |    ------------------- * (x - x )
  /                                 0
  ----          n!
  n=0


Graph2D cannot sum up infinite terms and uses the following expression to
generate a Tylor-polynome with a selectable degree n:

   n         n      (k)           l
  ----      ----   f  (x ) * (-x )
  \      k  \           0       0
   |    x    |   --------------------
  /         /
  ----      ----     l! * (k - l)!
   k=0       l=k
@endnode

@node "2DGRAPH" "2D-graph-window"
@{u}2.3 2D-graph-window@{uu}


  2D-graph-windows can be opened by the user at any number. With the graphs
you can look at functions (also more than one in a graph) in a coordinate-
system.

  Which function gets displayed or not in a graph-window can be selected in
the @{"functioneditor" link "FUNKTIONSEDITOR" }. The graph-windows and the function-editor run parallel
so that you can switch between them and work simultaneously in both of
them. Graph-windows are resizeable.
  The present intervall and the name of the graph get displayed in the
graph-windows title. As long as you press the @{b}left mousebutton@{ub} the
coordinates according to the mouseposition get displayed in the text-line
above the coordinate-system.


The image-buttons have the following meanings:

  @{b}Redraw@{ub}   - The graph gets recalculated showing all changes that have
             been made to the functions since the last time
  @{b}Edit@{ub}     - Open the @{"2D-graph-editor" link "2DEINSTELLER" }
  @{b}Zoom in@{ub}  - After marking an area with the mouse a new graph
             opens displaying just the selected area
  @{b}Zoom out@{ub} - A new graph opens containing a four-times larger
             visible intervall
  @{b}Print@{ub}    - @{"Prints" link "PRINT" } the visible graph


  As long as a 2D-graph-window is active, you can select one of the
following menus:


@{b}@{u}Project@{ub}@{uu}               - The @{"project-menu" link "PROJECT" }


@{b}@{u}Graph@{ub}@{uu}

  @{b}Redraw@{ub}              - like the according image-button
  @{b}Edit...@{ub}             - "
  @{b}Zoom in@{ub}             - "
  @{b}Zoom out@{ub}            - "
  @{b}Print@{ub}               - "
@endnode

@node "2DEINSTELLER" "2D-graph-editor"
@{u}2.3.1 2D-graph-editor@{uu}


  With this editor you are able to adjust the visible intervall, the
scaling of the axis and some other attributes of a graph.

You can set the following attributes for each the x- and the y-axis:

  @{b}from ... to@{ub}    - The visible intervall for the axis. The value also
depends of the choosen unit!

  @{b}Unit@{ub}           - The basical unit of the axis. The other values of the
axis will be (internally) multiplied with with the unit - so the unit is a
kind of a scaling factor. Usually you set the unit to "1". But maybe if you
want to generate a coordinate-system especially for trigonometric functions
a unit of "3.141" would make sense. If you then enter a visible intervall
of e.g. [-2; 4] it would mean, that the axis in fact shows an intervall of
[-2*3.141; 4*3.141] = [-6.282; 12.564]. You can chose the unit free as long
it stays >0.

  @{b}Draw axis@{ub}      - Display the axis or not. Even if displayed not, the
visible intervall of an axis is of course of importance!

  @{b}Title@{ub}          - You can give a title to every axis which will be shown
in the graph next to the axis. If you maybe chose a unit of e.g. "3.141"
then it is important, to make that "public" by e.g. titeling the axis as
"x-axis in pi" or something like this.

  @{b}Marks@{ub}          - An axis can optionally be divided by many small marks.
Now here you can define after how many units a mark should be drawn.
Furthermore you may place a certain number of (smaller) "Submarks" between
every two regular marks. A submark-value of "0" means: no submarks. If you
choose too many marks for a graph so that one could not visually tell one
from another then Graph2D will not draw the marks.

  @{b}Text@{ub}           - The marks can optionally be equipped with numbers next
to them. You can decide after how many marks a number should be drawn. The
number again is dependant of the unit you have chosen. If you draw too many
numbers so that they would overleap one another, Graph2D just leaves out
some of them.

  Now you can decide for both axis wheter there should be a @{b}"Raster"@{ub},
wheter the raster should appear as "dots" or as "lines" and how large the
distance between the rasterlines in x- and y-direction should be. Again:
this is unit-dependant.

  @{b}"Connect"@{ub} makes Graph2D to connect the single calculated function- values
by lines. So if the graph of a function "jumps" in the visible intervall,
maybe because of a low accuracy, the otherwise existing gaps can be
avoided. Of the other hand "connect" could draw connections that in reality
just do not exist (e.g. sgn(x))!

  And last but not least you can choose an @{b}"Accuracy"@{ub}, with that a graph
should be calculated. At a lower accuracy only fewer function-values will
be calculated and the output-speed will increase - but the graph of the
function may get a bit unprecise ans show some "steps".

  @{b}"Font"@{ub} allows you to choose the font for the whole graph.

  You can load and save Graph-settings with any filename with @{b}"Load..."@{ub} and
@{b}"Save..."@{ub}.

  After leaving the graph-editor with @{b}"Ok"@{ub} the active graph gets redrawn to
make the probably made changes visible. When leaving the editor via
@{b}"Cancel"@{ub} or simply closing the window nothing will be changed of course and
the old settings stay valid.
@endnode

@node "SIRDSGRAPH" "SIRDS-graph-window"
@{u}2.4 SIRDS-graph-windows@{uu}


  SIRDS-graph-windows can be opened by the user at any number. With the
graphs you can look at functions in a three-dimensional @{"SIRDS" link "DREID" }
coordinate-system.

  Which function gets displayed or not in a graph-window can be selected in
the functioneditor. The graph-windows and the function-editor run parallel
so that you can switch between them and work simultaneously in both of
them. Graph-windows are resizeable. The present intervall and the name of
the graph get displayed in the graph-windows title.

The image buttons:

@{b}Redraw@{ub} - will cause the graph to become actualized and make every
         changes visible that may have been made to the function since the
         last redraw.

@{b}Edit@{ub}   - open the @{"SIRDS-graph-editor" link "SIRDSEINSTELLER" }

@{b}Print@{ub}  - @{"Prints" link "PRINT" } the visible graph


  As long as a SIRDS-graph-window is active, you can select one of the
following menus:

@{b}@{u}Project@{ub}@{uu}               - The @{"project-menu" link "PROJECT" }

@{b}@{u}Graph@{ub}@{uu}

  @{b}Redraw@{ub}              - like the according image button
  @{b}Edit...@{ub}             - "
  @{b}Print@{ub}               - "
@endnode

@node "SIRDSEINSTELLER" "SIRDS-graph-editor"
@{u}2.4.1 SIRDS-graph-editor@{uu}


  In this editor the visible intervall, the scaling of the axis and some
other attributes of a SIRDS-graph can be set.

  For each the x-, y- and z-axis a @{b}visible intervall@{ub} must be choosen x- and
y-axis run as known horizontally and vertically on the monitor while the
z-axis seems to "touch" the user magically...

  With @{b}"colors"@{ub} you can choose how many colors should be used to create the
SIRDS-graph. The number of colors has no effect on the output speed.


  And last but not least you can choose an @{b}"Accuracy"@{ub}, with that a graph
should be calculated. At a lower accuracy only fewer function-values will
be calculated and the output-speed will increase - but the graph of the
function may get a bit unprecise ans show some "steps". But in a SIRDS
graph the low resolutions are of a high importance because it sometimes may
take really long to create a SIRDS...

  You can load and save graph-settings with any filename with "Load..." and
"Save...".

  After leaving the graph-editor with "Ok" the active graph gets redrawn to
make the probably made changes visible. When leaving the editor via
"Cancel" or simply closing the window nothing will be changed of course and
the old settings stay valid.
@endnode

@node "Textanzeigefenster" "Textviewer"
@{u}2.5 Textviewer@{uu}


  Textviewers show all kind of texts and lists in Graph2D. With the
scroller- bar you can scroll through the text, print it with @{b}"Print"@{ub} and
close the window with @{b}"Ok"@{ub} or the close-gadget.

  A textviewer does @{i}not@{ui} have to been closed to work on with Graph2D!
@endnode

@node "PRESETS" "Preset-editor"
@{u}2.6 Presets-editor@{uu}

You can do the following presets for Graph2D:

@{b}Settings directory@{ub} - this path is used for the file-requesters in the
                     graph editors

@{b}2D-graph@{ub}           - this 2D-settings file is used whenever a new 2D-graph
                     will be opened

@{b}SIRDS-graph@{ub}        - this SIRDS-settings file is used whenever a new
                     SIRDS-graph will be opened

@{b}Font@{ub}               - the font used for math. notation windows.

@{b}"Use"@{ub} uses the presets until the program ends, @{b}"Save"@{ub} makes your selections
permanent.
@endnode

@node "PRINT" "Print"
@{u}2.7 Print-Requester@{uu}


  With this requester you can print a graphic via the workbench-printer-
drivers and the workbench settings. The size of the print can be selected
with @{b}scale@{ub}.
@endnode

@node "FUNKTION" "Functions"
@next "DISKUSSION"
@{u}3.1 Functions@{uu}


The following chapters are also part of the topic "functions":

  3.1.1  @{" Internal operators & functions " link "InterneFunktionen" }
  3.1.2  @{" Include user functions         " link "EINBINDUNG" }
  3.1.3  @{" EBNF-Syntax                    " link "EBNF" }

A function in Graph2D has to consist of the following parts:

@{u}Name@{uu}

A function needs a name. The name must not contain leading figures or space
and mus not exceed an length of 30 chars. You may use (international)
chars, figures (not at first position) and the apostroph "'".

@{u}Argument list@{uu}

The name is followed by an argument list in bracktes "(" ")". The list
consists of (many) variable names seperated by colons ",". The variable
names must follow the same conventions as the function names. A variable
must not appear twice or more in an argument list. The list can also be
empty - in this case you do not even have to write the brackets. Name and
argument-list together are called "functionheader".

@{u}"="@{uu}

Between functionheader and functiontext you must place an "="...

@{u}Function text@{uu}

The definition of the function-text follows the "usual" rules for the
notation of mathematical terms. Graph2D is case-sensitive! The functiontext
may consist of:

  - @{u}Operators@{uu}  see also chapter @{"internal Operators" link "InterneFunktionen" }

  - @{u}Functions@{uu}  see also chapter @{"internal Functions" link "InterneFunktionen" }

    You also can @{"include" link "EINBINDUNG" } other user-defined functions out of the function-
    list into one of your functions. You can do this even if the function
    to be included does not yet exist at the time you include it.

  - @{u}Constantes@{uu}

    A Constante is e real number in the range ±9.22337177E18

  - @{u}Variables@{uu}

    Of course you can use only those variables in a function you did
    define in the argument-list of the function.


@{u}Examples for correct functions:@{uu}

  "p(x)=x^2+98",
  "Sum(a,b)=a+b",
  "g=9.81",
  "f(x)=sin(x^2)+1/2*x",
  "function23a(iks,yps,zett)=iks^yps*zett+(-1.23+1.0356E-5)"
@endnode

@node "InterneFunktionen" "Internal functions and operators"
@toc "FUNKTION"
@{u}3.1.1 Internal functions and operators@{uu}


The following functions and operators are by default known to Graph2D:

  sin(x), arcsin(x), sinh(x),
  cos(x), arccos(x), cosh(x),
  tan(x), arctan(x), tanh(x),
  arctanh(x)   - The well-known trigonometrical functions
  abs(x)       - The absolute value of the argument, also known as |x|
  int(x)       - The integer value of the argument
  ln(x)        - natural logarithm (to the base 2)
  sqrt(x)      - The square root x^(1/2)
  sgn(x)       - returns 1, 0, -1 in dependance of x>0, x=0, x<0
  fak(x)       - known as x!. e.g. fak(4)=4*3*2*1=24
                 (only defined for positive integer values)
  if(a, b)     - returns b if a is TRUE (=1) otherwise 0
  binom(n, k)  - binomialcoeffizient
  exp(x)       - exponential-function e^x


  + , -        
  * , /
  ^            - I think you know that, don't you?
  = , > , <,
  >=, <=, <>   - Compare the two operands
                 e.g. a>b=1 if a>b otherwise a>b=0
  AND, OR, NOT - Boolean operators. Only use them for values like
                 1 (TRUE) and 0 (FALSE). Do not expect a bit-wise
                 work of those operators!
@endnode

@node "EINBINDUNG" "Include functions"
@toc "FUNKTION"
@{u}3.1.2 Include user functions@{uu}


  User defined functions (functions define by you) can include other
user-defined functions into their own definition. If you do that, you
should take care of the following things:

  Changes to the included function cause changes to the including function.
Immediately after a change to any function that is included by another, its
new definition is valid.

  You absolutely have to avoid (even indirect) circle-definitions! Never do
e.g. this: a(x)=c(x); b(x)=a(x); c(x)=b(x)

  It is allowed to include a function that does not exist at the time of
the inclusion. Graph2D will not give you a warning or something like that.
The test will then be done when you calculate values of that function - not
before. And if you calculate a value of a function that is defined with the
help of a non-existing function you will get undefined values. So take care
of that!

@{u}Examples:@{uu}

  "Sum(a,b)=a+b"
  "f(x)=2^Sum(x,5)+x^2"              @{i}correct@{ui}

  "k=5.6"
  "foobar(x,y)=k*x+y+1"              @{i}correct@{ui}

  "f(x)=g(x)/6"
  "g(x)=2^f(x)"                      @{i}error!@{ui} (circle-definition!)

  "u(x)=u(1/x)+3.14"                 @{i}error!@{ui} (circle-definition!)
@endnode

@node "EBNF" "EBNF"
@toc "FUNKTION"
@{u}3.1.3 EBNF-Syntax@{uu}


Spaces are allowed (except inside of qualifiers/names) in the whole
functiontext and may be used to structure the term.

  Function   = Qualifier [ "(" [ Qualifier { "," Qualifier } ] ")" ]
               "=" Expression .

  Expression = Prio1 [ ( "=" | ">" | "<" | "<=" | ">=" | "<>" )
               Expression ] .

  Prio1      = [ "+" | "-" ] Prio2 [ ( "+" | "-" | "OR" ) Prio1 ] .

  Prio2      = Prio3 [ ( "/" | "*" | "AND" ) Prio2 ] .

  Prio3      = [ "NOT" ] Prio4 [ "^" Prio3 ] .

  Prio4      = Number | "(" Expression ")" | Qualifier | Call .

  Call       = Qualifier [ "(" Expression { "," Expression } ")" ] .


  Number     = Figure { Figure } [ "." Figure { Figure } ]
               [ "E" ["-"] Figure { Figure } ] .

  Qualifier  = Letter { Letter | Figure } .

  Figure     = "0" | .. | "9" .

  Letter     = "A" | .. | "Z" | "a" | .. | "z" | "'".
@endnode

@node "Geschichte" "History"
@prev "DISKUSSION"
@{u}3.2 History@{uu}


@{b}@{u}V2.00 (04.02.95):@{ub}@{uu}

  - improved discussion in speed and success, new: discussion-requester
  - new GUI-layout, images and imagebuttons
  - taylor approximation
  - fixed some terrible bugs in the mathematical routines
  - better memory-handling and speed-up in all calculations
  - extended and restructured online-help
  - new internal functions "binom(n, k)" and "exp(x)"
  - fixed a bug in math. notation
  - fixed another bug after loading functions...


@{b}@{u}V1.60 (08.01.95):@{ub}@{uu}

  - preset editor allows to configure a font for the notation window,
    a path for graphsettings and preset-settings for both graph-types
  - fixed bug after loading functions
  - 2D-graph: selectable font, new raster-type, smarter draw-algorithm
    for better-looking coordinate-systems
  - math. notation now uses "·" for multiplication and "!" for "fak",
    added menus and printing-option to the notation window
  - printing graphs now without window-border
  - all windows fit on a NTSC 640*200 / Topaz 8 screen
  - changes in the archive content


@{b}@{u}V1.50 (10.12.94):@{ub}@{uu}

  - The first localized english version of Graph2D
    if you are interested in the former version please have a look into
    the german documentation :-)
@endnode

@node "MUI" "Mui"
@{u}3.3 MUI@{uu}


@{u}MUI-Copyright:@{uu}

                          This application uses

                        MUI - MagicUserInterface

                (c) Copyright 1993/94 by Stefan Stuntz


  MUI is a system to generate and maintain graphical user interfaces. With
the aid of a preferences program, the user of an application has the
ability to customize the outfit according to his personal taste.

  MUI is distributed as shareware. To obtain a complete package containing
lots of examples and more information about registration please look for a
file called "muiXXusr.lha" (XX means the latest version number) on your
local bulletin boards or on public domain disks.

          If you want to register directly, feel free to send


                         DM 30.-  or  US$ 20.-

                                  to

                             Stefan Stuntz
                        Eduard-Spranger-Straße 7
                             80935 München
                                GERMANY



@{u}Comments on MUI concerning Graph2D:@{uu}

  Graph2D needs MUI 2.1 or higher to be installed. You are allowed to use
MUI @{b}without@{ub} registering for it - but when you register you can take
advantage of some extended functions in the MUI preferences. It is very
recommended to read the MUI documentation carefully - especially of the MUI
preferences. Despite that i would like to show you in the following list
@{i}some@{ui} advantages of MUI-programs that could be useful using Graph2D:


  If you want Graph2D to work on an own @{b}screen@{ub} and not on the Workbench
then simply configure Graph2D with the MUI preferences to use any screen
you like.

  Windows of MUI applications are @{b}resizeable@{ub} and completely @{b}fontsensitive@{ub}
what means, that they look fine with every font.

  MUI applications may be @{b}iconified@{ub} at every time with an extra-gadget in
the windows title bar.

  MUI applications can optionally completely be @{b}handled with the keyboard@{ub}.
Via Tab-cycling and shortcuts every gadget may be (de-)activated without
having to use the mouse. The gadget actually receiving keyboard input is
always marked with a border or something like this. Windows can be closed
normally by pressing ESC.

  MUI applications are known to the system as @{b}commodities@{ub} and can so be
handled with the commodity-exchange program.
@endnode

@node "DreiD" "SIRDS"
@{u}3.4 SIRDS@{uu}


  Graph2D uses for the three-dimensional presentation of function a
technique known as @{b}SIRDS@{ub} (= Single Image Random Dot Stereogramm). You do
@{i}not@{ui} need special glasses or something like this, you may even print out the
pictures without loosing the effect.

  The only thing you have to do to achieve the 3D-effect ist to look at the
pictures in a special way. Instead of looking at the picture itself you
have to look @{i}behind@{ui} the picture. Of course you will not see the random dots
sharp this way - but this is nescessary for the three-dimensionality.
  It may take sometimes until the effect is going to come, and for strange
reasons some people never get the "kick". For further instructions how to
achieve the effect please refer to the numerous publications concerning
SIRDS pictures.

  I want to thank Kilian Singer for his small but effective piece of code
that makes those pictures possible in Graph2D!
@endnode

@node "INDEXNODE" "Index"
@{u}3.5 Index@{uu}


@{"2D-graph" link "2DGRAPH" }
@{"2D-graph-editor" link "2DEINSTELLER" }


A

@{"author" link "AUTOR" }


B

@{"Basics" link "Bedienung" }


C

@{"copyright" link "COPYRIGHT" }


D

@{"Discussion" link "DISKUSSION" }


E

@{"EBNF-Syntax" link "EBNF" }
@{"Extrema" link "EXTREMA" }


F

@{"function-editor" link "FUNKTIONSEDITOR" }
@{"functions" link "FUNKTION" }


G

@{"Graph2D.RegForm" link "Graph2D.RegForm/MAIN" }


H

@{"History" link "GESCHICHTE" }


I

@{"Include user functions" link "EINBINDUNG" }
@{"Installation" link "INSTALLATION" }
@{"integral" link "INTEGRAL 0" }
@{"internal Functions" link "InterneFunktionen" }
@{"internal Operators" link "InterneFunktionen" }


M

@{"Math. notation" link "DARSTELLUNG" }
@{"Monotony" link "MONOTONIE" }
@{"MUI-System" link "MUI" }


N

@{"notation-window" link "DARSTELLUNG" }


O

@{"original archive" link "INSTALLATION" }


P

@{"presets" link "PRESETS" }
@{"presets-editor" link "PRESETS" }
@{"Print" link "PRINT" }
@{"project-menu" link "PROJECT" }


R

@{"register" link "REGISTRIERUNG" }


S

@{"Short description" link "Kurzbeschreibung" }
@{"SIRDS" link "DREID" }
@{"SIRDS-graph" link "SIRDSGRAPH" }
@{"SIRDS-graph-editor" link "SIRDSEINSTELLER" }
@{"Symmetry" link "SYMMETRIE" }


T

@{"tangente" link "TANGENTE" }
@{"textviewer" link "TEXTANZEIGEFENSTER" }
@{"Turning-points" link "WENDEPUNKTE" }


V

@{"value-table" link "VALUETABLE" }


Z

@{"Zero-points" link "NULLSTELLEN" }
@endnode
