home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 344a.lha / AmigaPlot_v2.0b / APlot_Docs.pp / APlot_Docs
Text File  |  1990-02-11  |  13KB  |  336 lines

  1.  
  2.  
  3.  
  4.            Amiga Plot V2.0b Joe Martin 1/90  (C)Copyright 1990
  5.  
  6. **************************** *** NOTICE *** **************************
  7.  
  8.    This program is not public domain. All rights retained. Permision
  9. is granted to freely distribute this program as long as all
  10. documentation and notices remain intact. Charges for such distribution
  11. are NOT permitted except as a nominal disk charge !! 
  12.     
  13.     If you find this program useful, entertaining or educational,
  14. please donate $20 to the author. Source code is available for an
  15. additional $20 by sending check or money order to the address provided
  16. below. Donations will encourage updates and more features.
  17.  
  18. **********************************************************************
  19.  
  20.    Amiga Plot is a three dimesional mathematical function plotter. It
  21. takes a function, derived by the user, parses it into a partially
  22. compiled form and then calculates coordinates to be placed in the xyz
  23. system. AmigaPlot use hidden line removal based on a principle known
  24. as the painters algorithm.  Each time AmigaPlot goes to the screen it
  25. places a filled polygon. Starting from the most distant part of the
  26. plot it is constantly placing filled polygons in front of other
  27. polygons there by covering the hidden portions of the plot. Many
  28. aspects of the plot are user variable so that almost any combination
  29. of rotations, perspectives, and parameters for any function can
  30. produce infinite results. AmigaPlot is not intended for statistical
  31. analysis and the precision of the plot or its scale are not guaranteed.
  32.    The use of color in the plot can produce very pleasing effects
  33. especially when a feathered pallet is used. The idea of AmigaPlot is to
  34. provide an artistic approach to the sometimes dry subjects of Analytical
  35. Geometry and Trigonometry.
  36.  
  37.  
  38.    AmigaPlot was compiled on the Aztec C Compiler 3.6a
  39.    **** Minimum memory 512K - it uses most of it *****
  40.    ************ 1 or 2 meg recommended **************
  41.  
  42.    Address any questions, comments or bugs to:
  43.  
  44.        Joe Martin
  45.        Hobbit Hole  1-904-243-6219 8N1 
  46.  
  47.            or
  48.        
  49.        Joe Martin
  50.        2702 Willow Grove Ln.
  51.        Ft. Walton Bch. Fl 32548
  52.  
  53. ******************* updates and bug fixes ***************************
  54. 2.0b-
  55.        Found a few more bugs(fixed). 
  56.    Overall speed increased(10-15%).
  57.    Menu structure adjusted for easier choice.
  58.    Ability to save plot window, as apposed to screen.
  59.    
  60. 2.0a-
  61.        All three windows share the same message port so you do not
  62.    have to have the Parms window active in order to use the pull down
  63.    menus. This was in 1.3a but I took it out after using some of the
  64.    sunmouse utilities that abound. I had tried to save a little memory
  65.    by taking it out of 2.0, my mistake, it's back in! This is the only
  66.    difference between 2.0a and 2.0.
  67.    
  68. Enhancements from version 1.4 to 2.0:
  69.  
  70.     1- No Keyboard entry required. (Adjustable gadgets)
  71.     2- Some parameters can be adjusted during plot.
  72.     3- Solid, Line or Point plots.
  73.     4- Coordinate axes for visual rotation adjustments.
  74.     5- Full 3 axis rotations and scaling.
  75.     6- Radian and Degree units.
  76.     7- Limit for 'Z' axis.
  77.     8- Full Clipping routines. This helps a lot.
  78.     9- New look(Big deal right).
  79.     10- Manual clear screen allows multiple functions on same screen.
  80.     11- Version 2.0 is more memory efficient(about 70K less chip ram).
  81.     
  82. **********************************************************************
  83.  
  84. known bugs:
  85.  
  86.    1-some functions can produce values out of range.
  87.     
  88.    The Parser does very little error checking so watch your spelling
  89.        on trig function names.(not a bug)
  90.  
  91. **********************************************************************
  92. ******* First MAKE SURE YOUR STACK IS SET TO AT LEAST 25000 **********
  93.  
  94.    Amiga Plot can be run from the workbench with the icons provided,
  95. and in that case the stack is set automatically.
  96.  
  97. Amiga Plot is initialized at the CLI by 'Run Plot' (don't forget to set
  98. stack 25000 first !)
  99.  
  100.     For convenience, the directory 'aparms' is included and includes
  101. numerous function examples. These can be loaded from the 'Files' menu
  102. and make it extremely easy to play with and to alter different
  103. functions known to yield satisfatory results.
  104.     Also the directory 'apic' is included with examples of Iff
  105. pics. These pictures can be viewed with any showiff program.
  106.  
  107. ******************************* NOTICE *******************************
  108.  
  109.     Version aplot1.4 parm files are not compatible with V2.0+ parm
  110. files. I have included all previous parm files in the new format.
  111. Sorry for this inconvienence. 
  112.  
  113. **********************************************************************
  114.  
  115. Three windows appear-
  116.    1- Amiga Plot window - for the plots.
  117.    2- Parms window     - gadgets to select and change parameters.
  118.    3- Function window  - for function input only.
  119.  
  120. There are two menus available for some parmameter changes, color etc.
  121.  
  122.     In version 2.0, no keyboard input is necessary, nor provided for,
  123. in the paramemter window. Each parameter is located in an adjustable
  124. gadget. If you point to the right half of the gadget and hold the left
  125. mouse button down the values will increase. Likewise, the left half
  126. decreases the value. You can adjust the rate of increase/decrease if
  127. you push and hold either the SHIFT key(increase rate by factor of
  128. ten), or the CTRL key(decrease rate by factor of 1/10) before pressing
  129. left mouse button.
  130.  
  131.  
  132. AXIS:
  133.  
  134.     When Amiga Plot is first run, you will see the coordinate axes in
  135. the plot window. The axes serve two purposes. They show the user the
  136. orientation of the plot(rotations) and the relative size of the plot.
  137. If the rotations are all set to zero then the axes are positioned as
  138. follows:
  139.  
  140.     X axis points from left to right with negative to the left of the
  141.        origin and positive to the right.
  142.     Y axis represents depth with the negative portion in the
  143.        foreground and positive to the rear.
  144.     Z axis runs up and down with negative down and positive up. 
  145.  
  146.     The rotation of each axis is governed by the corresponding gadget
  147. in the parms window under the label 'Rotate'. Try these gadgets and
  148. watch the corresponding changes in the coordinate system axes.
  149.     The 'Axis' gadget will toggle the axes on and off as well as clear
  150. the plot window.  
  151.  
  152. NOTE --The 'Y' and 'Z' rotations always spin about their respective
  153. axes relative to their current position. This is as it should be. The
  154. 'X' rotation is about a fixed imaginery axis which is stuck in the
  155. horizontal position.  I've checked my matrix formulas and cannot seem
  156. to dispell this problem although it really does not limit the relative
  157. positions possible.
  158.  
  159. SCALE:
  160.  
  161.     The 'X' and 'Z' scaling factors affect the on screen size of each
  162. axis and subsequently the size of the plot. The 'Y' scale has a
  163. slightly different effect. Since the 'Y' axis represents depth,
  164. scaling this axis has a profound affect on perspective. Try these
  165. gadgets on the coordinate axes to see the results before plotting a
  166. surface. 
  167.  
  168.     HINT --Overall size and perspective is better adjusted with the
  169. 'Object' and 'Image' gadgets discussed later.
  170.  
  171.  
  172. DOMAIN(X) and RANGE(Y):
  173.  
  174.     It is important to understand the Domain and Range of a function.
  175. The Domain is said to be the set of all first components from a set of
  176. ordered pairs and the Range, a set of all second components from the
  177. set of ordered pairs(x,y). This set of ordered pairs is going to be
  178. fed to our function(f(x,y)) which will yield values(Z). These
  179. values(Z) will become part of a set of ordered triples(x,y,z) and will
  180. then be plotted in our 3d coordinate system.  
  181.     What actually happens in Amiga Plot is this. Starting with the
  182. high end of the 'RangeY', this value is placed together with each
  183. value from the DomainX(low to high) yielding that 'Z' value and all
  184. those ordered triples(x,y,z). These points are plotted, then the
  185. RangeY is decremented and the process repeats until it reaches the low
  186. RangeY value. Then the plot is complete. If I explain any further,
  187. you'll just get tired of reading this so try a plot and see for
  188. yourself!
  189.  
  190.  
  191. SEGMENTS:
  192.  
  193.     Simple, the X and Y segments are the number of increments across
  194. the axis.  In other words, how many points(X) you want graphed on each
  195. pass, and how many passes(Y) to run through.  
  196.  
  197.  
  198. OBJECT and IMAGE:
  199.  
  200.     Object and Image represent distances from your eye to the actual
  201. surface(object) in 3d space and to the objects 2d projection(Image) on
  202. your screen. Adjust these for sizing the overall image as well as
  203. perspective.  Experimentation is the best way, so try it.
  204.  
  205.  
  206. TRANSLATION:
  207.  
  208.     'X' will move the axes left or right on the screen while 'Y' moves
  209. them up or down. 
  210.  
  211.  
  212. START and STOP:
  213.  
  214.     says it all!!
  215.  
  216.  
  217. CLEAR:
  218.  
  219.     This gadget clears the screen. If you don't clear the screen
  220. between plots you can create composites of different functons.
  221.  
  222.  
  223. SOLID, LINE, and POINT:
  224.  
  225.     Determines what type of plotting to construct. Solid for hidden
  226. line removal and shading effect. Line and point for transparent
  227. effects. These can be changed during a plot for interesting features.
  228.  
  229.  
  230.  
  231. Function Gadgets:
  232.  
  233. There are 3 string gadgets available for function input:
  234.  
  235.     f(x,y): this gadget is for entry of main function. Upper and lower
  236.            case is acceptable. Any operators, grouping sysbols, or trig
  237.            function names given below are acceptable.  
  238.  
  239.            Legal variable names : X,Y,   A,B if they are defined below.
  240.             
  241.     A= :   this gadget is useful for subfunctions and expressions and
  242.            servesas a macro for the main function f(x,y). If your main
  243.            function(f(x,y)) contains the 'A' variable, then this
  244.            macro MUST be defined in this gadget !
  245.             
  246.     B= :   this gadget is useful for subfunctions and expressions and
  247.            serves as a macro for the main function f(x,y). If your main
  248.            function(f(x,y)) contains the 'B' variable, then this
  249.            macro MUST be defined in this gadget !
  250.             
  251.    Editing : same as for any string gadget - cursor keys, del, backSp
  252.                etc.
  253.  
  254.    operations :    +,-,*,/ divsion by zero is trapped.
  255.                    ^ to the power of
  256.                     
  257.     grouping   :    ()
  258.     
  259.    functions  :    ABS() absolute value of
  260.                    SQRT() Square root of
  261.                    SQR() Square of
  262.                    SIN() Sine of
  263.                    ASIN() ArcSine of
  264.                    COS() Cosine of
  265.                    ACOS() ArcCosine of
  266.                    TAN() Tangent of
  267.                    COT() Cotangent of
  268.                    ATAN() Arctangent of
  269.                    LN()  Natural Logarithm of
  270.                    LOG() Base 10 Log of
  271.                    EXP() Exponential of
  272.  
  273.               Note - 2 dimesional plots can be produced in the form
  274.               z=sin(x), z=3x+2 etc, if the rotations are all set to 0, the
  275.               YRange(low & high) are set to 0, and the Y segments are set
  276.               to 1. Use variable 'X' and plot 'Z' in terms of 'X'.
  277.               
  278. Menus:
  279.  
  280. File Menu  
  281.  
  282.  load
  283.     parms-    this will load a set of parameters, functions, window sizes,
  284.               color map etc. When plot is first run 'Default.parms'
  285.               is loaded if available. If you have a favorite
  286.               function. then it can be loaded at startup by saving
  287.               its' parms as 'Default.parms'.
  288.  
  289.  save
  290.     parms -   this will save all parameters for easy retrieval. A file
  291.               requestor will prompt you for the file name. File name
  292.               extensions of '.parms' are recommended.. 
  293.  
  294.  save IFF - 
  295.               this will save the current visible screen or plot
  296.               window to an IFF format image. A file requestor will prompt 
  297.               you for the file name and extensions of '.pic' are 
  298.               recommended.
  299.               
  300.  
  301.  Quit -       Quit Amiga Plot (bye)
  302.  
  303.                 
  304. Display Menu -     
  305.  
  306.  Color Map - User selects color palette
  307.  
  308.  ColorSpan - User selects color position/span(what heigth you want
  309.              each color to kick in. Decimal fractions can be entered
  310.              for finer color resolution.
  311.              
  312.  XHatch -    Outlines complete polygon on screen
  313.  
  314.  Radians/Degrees - This toggles the displayed DomainX and RangeY to
  315.                Degree units and back to radian units. A little
  316.                something extra.
  317.  
  318.  Spec.Parms -    
  319.  
  320.    Clip TAN - This is an adjustment for the TAN function which usually 
  321.               produces very high values(out of range). You can
  322.               adjust the tops of these spikes.
  323.             
  324.    Scale/0  - This one can adjust any case of division by zero. In other
  325.               words, instead of dividing by zero(which is undefined)
  326.               you can divide by the scale value.
  327.  
  328.     Clip Z -  This little number will effectively clip the top and the
  329.               bottom off any function. It limits the Z axis plot to a
  330.               +ClipZ and -ClipZ.
  331.  
  332. **********************************************************************
  333.  
  334.  
  335.        **** Have Fun ****
  336.