home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 450a.lha / AmigaPlot_v2.1a / APlot_Docs < prev    next >
Text File  |  1990-12-04  |  17KB  |  421 lines

  1.  
  2.  
  3.  
  4.            Amiga Plot V2.1 Joe Martin 11/90  (C)Copyright 1990
  5.  
  6. **************************** *** NOTICE *** **************************
  7.  
  8.    This program is Shareware. All rights retained. Permision is
  9. granted to freely distribute this program as long as all documentation
  10. and notices remain intact. Charges for such distribution are NOT
  11. permitted except as a nominal disk charge(ex. Fred Fish) !! 
  12.     
  13.     If you find this program useful, entertaining or educational,
  14. please register and send the $20 to the author. 
  15.  
  16. **********************************************************************
  17.  
  18.    Amiga Plot is a three dimesional mathematical function plotter. It
  19. takes a function, derived by the user, parses it into a partially
  20. compiled form and then calculates coordinates to be placed in the xyz
  21. system. AmigaPlot use hidden line removal based on a principle known
  22. as the painters algorithm.  Each time AmigaPlot goes to the screen it
  23. places a filled polygon. Starting from the most distant part of the
  24. plot it is constantly placing filled polygons in front of other
  25. polygons there by covering the hidden portions of the plot. Many
  26. aspects of the plot are user variable so that almost any combination
  27. of rotations, perspectives, and parameters for any function can
  28. produce infinite results. AmigaPlot is not intended for statistical
  29. analysis and the precision of the plot or its scale are not guaranteed.
  30.    The use of color in the plot can produce very pleasing effects
  31. especially when a feathered pallet is used. The idea of AmigaPlot is to
  32. provide an artistic approach to the sometimes dry subjects of Analytical
  33. Geometry and Trigonometry.
  34.  
  35.  
  36.    **** Minimum memory 512K - it uses most of it *****
  37.    ************ 1 or 2 meg recommended **************
  38.  
  39.    Address any questions, comments or bugs to:
  40.  
  41.        Joe Martin
  42.        Hobbit Hole  1-904-243-6219 8N1 
  43.  
  44.            or
  45.        
  46.        Joe Martin
  47.        2702 Willow Grove Ln.
  48.        Ft. Walton Bch. Fl 32548
  49.  
  50. ******************* updates and bug fixes ***************************
  51. 2.1a-
  52.        Amiga Dos 2.0 compatible.
  53.        Paser completely overhauled
  54.             Paser error checking added
  55.             user defined variables
  56.        More flexibility with screen arrangement
  57.        Full support for overscan via morerows or 2.0
  58.        Pen Colors are now completely configurable
  59.        Better axis rendering during plot
  60.        
  61. 2.0c-  BUG/BUG/BUG fix
  62.        Uhh..Uhh, guess what I discovered. Nobody said anything, but the
  63.    parser has not been doing its' job very well.(:-( I discovered that much
  64.    to my suprise, simple functions like 'x^2 - 6*x + 9' and '(x-3)^2' which
  65.    should yield identical results didn't. Mucho hair pulling later, they do
  66.    now. Actually only lately have I looked into the simplier 2d functions
  67.    that some wish to plot. I'm adding the 2d plotting by request. Anyway
  68.    the parser wasn't handling multiple(more than 2) operations, on the same
  69.    level, correctly. Some other parsers I've looked at lately don't all
  70.    work right either. Try calcs like, 2^4/2*3/2, 12, these are hard to
  71.    parse.
  72.    
  73.        Added menu item to quickly set up parms for 2d plotting. This is not
  74.    finished but you can experiment. 
  75.    
  76. 2.0b-
  77.        Found a few more bugs(fixed). 
  78.    Overall speed increased(10-15%).
  79.    Menu structure adjusted for easier choice.
  80.    Ability to save plot window, as apposed to screen.
  81.    
  82. 2.0a-
  83.        All three windows share the same message port so you do not
  84.    have to have the Parms window active in order to use the pull down
  85.    menus. This was in 1.3a but I took it out after using some of the
  86.    sunmouse utilities that abound. I had tried to save a little memory
  87.    by taking it out of 2.0, my mistake, it's back in! This is the only
  88.    difference between 2.0a and 2.0.
  89.    
  90. Enhancements from version 1.4 to 2.0:
  91.  
  92.     1- No Keyboard entry required. (Adjustable gadgets)
  93.     2- Some parameters can be adjusted during plot.
  94.     3- Solid, Line or Point plots.
  95.     4- Coordinate axes for visual rotation adjustments.
  96.     5- Full 3 axis rotations and scaling.
  97.     6- Radian and Degree units.
  98.     7- Limit for 'Z' axis.
  99.     8- Full Clipping routines. This helps a lot.
  100.     9- New look(Big deal right).
  101.     10- Manual clear screen allows multiple functions on same screen.
  102.     11- Version 2.0 is more memory efficient(about 70K less chip ram).
  103.     
  104.  
  105. **********************************************************************
  106. ******* First MAKE SURE YOUR STACK IS SET TO AT LEAST 10000 **********
  107. **********************************************************************
  108.  
  109.    Amiga Plot can be run from the workbench with the icons provided,
  110. and in that case the stack is set automatically.
  111.  
  112. Amiga Plot is initialized at the CLI by 'Run APlot' (don't forget to set
  113. stack 10000 first !)
  114.  
  115.     For convenience, the directory 'aparms' is included and includes
  116. numerous function examples. These can be loaded from the 'Files' menu
  117. and make it extremely easy to play with and to alter different
  118. functions known to yield satisfatory results.
  119.     Also the directory 'apic' is included with examples of Iff
  120. pics. These pictures can be viewed with any showiff program.
  121.  
  122. ******************************* NOTICE *******************************
  123.  
  124.     Version aplot1.4 parm files are not compatible with V2.0+ parm
  125. files. I have included all previous parm files in the new format.
  126. Sorry for this inconvienence. 
  127.  
  128. **********************************************************************
  129.  
  130. Four windows appear-
  131.    1- Amiga Plot window  - for the plots.
  132.    2- Perspective window - Viewing parameters.
  133.    3- Control window     - Plot controling features.
  134.    4- Function window    - for function input only.
  135.   
  136. There are two menus available for some parmameter changes, color etc.
  137.  
  138.     In version 2.0+, no keyboard input is necessary, nor provided for,
  139. in the perspective window. Each parameter is located in an adjustable
  140. gadget. If you point to the right half of the gadget and hold the left
  141. mouse button down the values will increase. Likewise, the left half
  142. decreases the value. You can adjust the rate of increase/decrease if
  143. you push and hold either the SHIFT key(increase rate by factor of
  144. ten), or the CTRL key(decrease rate by factor of 1/10) before pressing
  145. left mouse button.
  146.  
  147.  
  148. AXIS:
  149.  
  150.     When Amiga Plot is first run, you will see the coordinate axes in
  151. the plot window. The axes serve two purposes. They show the user the
  152. orientation of the plot(rotations) and the relative size of the plot.
  153. If the rotations are all set to zero then the axes are positioned as
  154. follows:
  155.  
  156.     X axis points from left to right with negative to the left of the
  157.        origin and positive to the right.
  158.     Y axis represents depth with the negative portion in the
  159.        foreground and positive to the rear.
  160.     Z axis runs up and down with negative down and positive up. 
  161.  
  162.     The rotation of each axis is governed by the corresponding gadget
  163. in the parms window under the label 'Rotate'. Try these gadgets and
  164. watch the corresponding changes in the coordinate system axes.
  165.     The 'Axis' gadget will toggle the axes on and off as well as clear
  166. the plot window.  
  167.  
  168. NOTE --The 'Y' and 'Z' rotations always spin about their respective
  169. axes relative to their current position. This is as it should be. The
  170. 'X' rotation is about a fixed imaginery axis which is stuck in the
  171. horizontal position.  I've checked my matrix formulas and cannot seem
  172. to dispell this problem although it really does not limit the relative
  173. positions possible.
  174.  
  175. SCALE:
  176.  
  177.     The 'X' and 'Z' scaling factors affect the on screen size of each
  178. axis and subsequently the size of the plot. The 'Y' scale has a
  179. slightly different effect. Since the 'Y' axis represents depth,
  180. scaling this axis has a profound affect on perspective. Try these
  181. gadgets on the coordinate axes to see the results before plotting a
  182. surface. 
  183.  
  184.     HINT --Overall size and perspective is better adjusted with the
  185. 'Object' and 'Image' gadgets discussed later.
  186.  
  187.  
  188. MINIMUM/MAXIMUM(x,y,z)
  189.  
  190.     It is important to understand the Domain and Range of a function.
  191. The Domain is said to be the set of all first components from a set of
  192. ordered pairs and the Range, a set of all second components from the
  193. set of ordered pairs(x,y). This set of ordered pairs is going to be
  194. fed to our function(f(x,y)) which will yield values(Z). These
  195. values(Z) will become part of a set of ordered triples(x,y,z) and will
  196. then be plotted in our 3d coordinate system.  
  197.     What actually happens in Amiga Plot is this. Starting with the
  198. maximum of the 'RangeY', this value is placed together with each
  199. value from the DomainX(low to high) yielding that 'Z' value and all
  200. those ordered triples(x,y,z). These points are plotted, then the
  201. RangeY is decremented and the process repeats until it reaches the low
  202. RangeY value. Then the plot is complete. If I explain any further,
  203. you'll just get tired of reading this so try a plot and see for
  204. yourself!
  205.  
  206.  
  207. RESOLUTION:
  208.  
  209.     Simple, the X and Y segments are the number of increments across
  210. the axis.  In other words, how many points(X) you want graphed on each
  211. pass, and how many passes(Y) to run through.  
  212.  
  213.  
  214. OBJECT and IMAGE:
  215.  
  216.     Object and Image represent distances from your eye to the actual
  217. surface(object) in 3d space and to the objects 2d projection(Image) on
  218. your screen. Adjust these for sizing the overall image as well as
  219. perspective.  Experimentation is the best way, so try it.
  220.  
  221.  
  222. TRANSLATION:
  223.  
  224.     'X' will move the axes left or right on the screen while 'Y' moves
  225. them up or down. 
  226.  
  227.  
  228. PLOT and STOP:
  229.  
  230.     says it all!!
  231.  
  232.  
  233. CLEAR:
  234.  
  235.     This gadget clears the screen. If you don't clear the screen
  236. between plots you can create composites of different functons. Any
  237. window sizing also clears te screen.
  238.  
  239.  
  240. SOLID, LINE, and POINT:
  241.  
  242.     Determines what type of plotting to construct. Solid for hidden
  243. line removal and shading effect. Line and point for transparent
  244. effects. These can be changed during a plot for interesting features.
  245.  
  246.  
  247.  
  248. Function Gadgets:
  249.  
  250. There are 3 string gadgets available for function input:
  251.  
  252.     The function window can be sized, and at maximum allows for three
  253. lines of variable and function declarations. These three lines should
  254. be though of as continual(one long line). White space is ignored and
  255. upper and lower case can be used, although all characters are
  256. converted to lower case. 
  257.  
  258. Parser Rules:
  259.  
  260. 1- up to 12 variables or functions can be specified, using commas to
  261. separate.
  262. 2- function(variable) names are up to 11 characters in length,
  263. followed by '=' then mathematical expression.
  264. 3- A numerical constant may preceed a variable or paren. to indicate
  265. multiplication. Ex  '2x' means '2 * x'
  266. 4-Any function declaration may include any variable(function)
  267. previouslly declared.
  268. 5- The last functon declared will be the one plotted.
  269.  
  270.  
  271.     The default function and parms are loaded when running aplot.  The
  272. default function declaration is a good tutor for introducing the
  273. parser coding specs. 
  274.  
  275.     a=x^2, b=y^2, f=3sin(-.05(a-b))-2cos(.1(a+b))
  276.     
  277.     The last declaration is considered the function to be plotted, in
  278. the above case, this would be 'f'. 'a' and 'b' are variable(function)
  279. declarations and may be included in any function which follows.  Note
  280. some of the short hand notations allowed by the parser.
  281.  
  282.     Ex. 3sin -> 3 * sin
  283.         -.05() -> -0.5 * ()
  284.  
  285.     This notation is available after a constant only, so 'ab' would be
  286. considered as a variable name and not as 'a * b'. Use parentheses
  287. liberally and whenever operator precedence is in doubt.
  288.             
  289.    Editing : same as for any string gadget - cursor keys, del, backSp
  290.                etc.
  291.  
  292.    operations :    +,-,*,/ divsion by zero is trapped.
  293.                    ^ to the power of
  294.                     
  295.     grouping   :    ()
  296.     
  297.    functions  :    ABS() absolute value of
  298.                    SQRT() Square root of
  299.                    SQR() Square of
  300.                    SIN() Sine of
  301.                    ASIN() ArcSine of
  302.                    COS() Cosine of
  303.                    ACOS() ArcCosine of
  304.                    TAN() Tangent of
  305.                    COT() Cotangent of
  306.                    ATAN() Arctangent of
  307.                    LN()  Natural Logarithm of
  308.                    LOG() Base 10 Log of
  309.                    EXP() Exponential of
  310.  
  311.               Note - 2 dimesional plots can be produced in the form
  312.               z=sin(x), z=3x+2 etc, if the rotations are all set to 0, the
  313.               YRange(low & high) are set to 0, and the Y segments are set
  314.               to 1. Use variable 'X' and plot 'Z' in terms of 'X'.
  315.               
  316. Menus:
  317.  
  318. File Menu  
  319.  
  320.  load
  321.     parms-    this will load a set of parameters, functions, window sizes,
  322.               color map etc. When plot is first run 'Default.parms'
  323.               is loaded if available. If you have a favorite
  324.               function. then it can be loaded at startup by saving
  325.               its' parms as 'Default.parms'.
  326.  
  327.  save
  328.     parms -   this will save all parameters for easy retrieval. A file
  329.               requestor will prompt you for the file name. File name
  330.               extensions of '.parms' are recommended.. 
  331.  
  332.  save IFF - 
  333.               this will save the current visible screen or plot
  334.               window to an IFF format image. A file requestor will prompt 
  335.               you for the file name and extensions of '.pic' are 
  336.               recommended.
  337.               
  338.  
  339.  Quit -       Quit Amiga Plot (bye)
  340.  
  341.                 
  342. Display Menu -     
  343.  
  344.  Color Map - User selects color palette
  345.  
  346.  ColorSpan - User selects color position/span(what heigth you want
  347.              each color to kick in. Decimal fractions can be entered
  348.              for finer color resolution.
  349.              
  350.  XHatch -    Outlines complete polygon on screen
  351.  
  352.  Radians/Degrees - This toggles the displayed DomainX and RangeY to
  353.                Degree units and back to radian units. A little
  354.                something extra.
  355.  
  356.  Spec.Parms -    
  357.  
  358.    Clip TAN - This is an adjustment for the TAN function which usually 
  359.               produces very high values(out of range). You can
  360.               adjust the tops of these spikes.
  361.             
  362.    Scale/0  - This one can adjust any case of division by zero. In other
  363.               words, instead of dividing by zero(which is undefined)
  364.               you can divide by the scale value.
  365.  
  366.  
  367.  2D Plot - This automates the settings of the parms for 2d equation
  368.                plotting of the form 'z = 3x + 2'(linear) or 
  369.                'z = 2x^2 + 3*x + 9'(quadratic) etc.
  370.  
  371. *************************** COMING SOON *****************************
  372.  
  373. Note: Soon a completely separate program called Amiga Plot 2D will be
  374. released for plotting two dimensional functions. This new program will
  375. include all the grids, scaled axes, auto grid markings etc., needed
  376. for these plots. LOOK FOR APLOT2D !!!!
  377.  
  378. *********************************************************************
  379.  
  380. PenColors -
  381.  
  382.     There is a file include called 'PenColors', that APlot loads on
  383. startup. This is a text file that can be altered with an editor giving
  384. the user flexibility to configure colors any way he/she wishes. This
  385. can be very useful(I wish all programs included such a file) for
  386. example if you want a different arrangement for example when printing
  387. a screen dump. This is not the same as adjusting the pallett.
  388.  
  389. The file contains:
  390.  
  391. 1   SDP         /* Screen Detail Pen */
  392. 0   SBP         /* Screen Back Pen   */
  393. 1   WDP         /* Window Detail Pen */
  394. 0   WBP         /* Window Back Pen   */
  395. 1   WINDTEXT    /* Pen for all text placed in window (headings) */
  396. 7   WINDBACK    /* Backgroud pen for Control and Perspective windwows */
  397. 4   PLOTBACK    /* Backgroud pen for main plot window */
  398. 1   GADTEXT     /* pen for any text within a gadget */
  399. 7   GADBACK     /* pen for background color of gadget box */
  400. 2   GADHIGH     /* pen for highlight color of gadget box */
  401. 1   INTUI_FP    /* front pen for menu text */
  402. 0   INTUI_BP    /* back pen for menu text */  
  403. 5   AXISCOLOR   /* pen for drawing axes */    
  404. 1   PenMap      /* pen arrangement for the shaded effect of function plot.
  405. 6   PenMap         If you bring up the color requestor you will see the  
  406. 5   PenMap         colors in order of plot (z) depth. Use this color requestor 
  407. 3   PenMap         to choose these pen arrangements */ 
  408. 0   PenMap
  409. 7   PenMap
  410. 4   PenMap
  411. 2   PenMap
  412.  
  413.     Make sure that the first character of each line contains the pen
  414.     number(0-7) and that there are no other numbers on the same line.
  415.     
  416.     
  417.     
  418.        **** Have Fun ****
  419.  
  420.  
  421.