home *** CD-ROM | disk | FTP | other *** search
-
-
-
- Amiga Plot V2.0b Joe Martin 1/90 (C)Copyright 1990
-
- **************************** *** NOTICE *** **************************
-
- This program is not public domain. All rights retained. Permision
- is granted to freely distribute this program as long as all
- documentation and notices remain intact. Charges for such distribution
- are NOT permitted except as a nominal disk charge !!
-
- If you find this program useful, entertaining or educational,
- please donate $20 to the author. Source code is available for an
- additional $20 by sending check or money order to the address provided
- below. Donations will encourage updates and more features.
-
- **********************************************************************
-
- Amiga Plot is a three dimesional mathematical function plotter. It
- takes a function, derived by the user, parses it into a partially
- compiled form and then calculates coordinates to be placed in the xyz
- system. AmigaPlot use hidden line removal based on a principle known
- as the painters algorithm. Each time AmigaPlot goes to the screen it
- places a filled polygon. Starting from the most distant part of the
- plot it is constantly placing filled polygons in front of other
- polygons there by covering the hidden portions of the plot. Many
- aspects of the plot are user variable so that almost any combination
- of rotations, perspectives, and parameters for any function can
- produce infinite results. AmigaPlot is not intended for statistical
- analysis and the precision of the plot or its scale are not guaranteed.
- The use of color in the plot can produce very pleasing effects
- especially when a feathered pallet is used. The idea of AmigaPlot is to
- provide an artistic approach to the sometimes dry subjects of Analytical
- Geometry and Trigonometry.
-
-
- AmigaPlot was compiled on the Aztec C Compiler 3.6a
- **** Minimum memory 512K - it uses most of it *****
- ************ 1 or 2 meg recommended **************
-
- Address any questions, comments or bugs to:
-
- Joe Martin
- Hobbit Hole 1-904-243-6219 8N1
-
- or
-
- Joe Martin
- 2702 Willow Grove Ln.
- Ft. Walton Bch. Fl 32548
-
- ******************* updates and bug fixes ***************************
- 2.0b-
- Found a few more bugs(fixed).
- Overall speed increased(10-15%).
- Menu structure adjusted for easier choice.
- Ability to save plot window, as apposed to screen.
-
- 2.0a-
- All three windows share the same message port so you do not
- have to have the Parms window active in order to use the pull down
- menus. This was in 1.3a but I took it out after using some of the
- sunmouse utilities that abound. I had tried to save a little memory
- by taking it out of 2.0, my mistake, it's back in! This is the only
- difference between 2.0a and 2.0.
-
- Enhancements from version 1.4 to 2.0:
-
- 1- No Keyboard entry required. (Adjustable gadgets)
- 2- Some parameters can be adjusted during plot.
- 3- Solid, Line or Point plots.
- 4- Coordinate axes for visual rotation adjustments.
- 5- Full 3 axis rotations and scaling.
- 6- Radian and Degree units.
- 7- Limit for 'Z' axis.
- 8- Full Clipping routines. This helps a lot.
- 9- New look(Big deal right).
- 10- Manual clear screen allows multiple functions on same screen.
- 11- Version 2.0 is more memory efficient(about 70K less chip ram).
-
- **********************************************************************
-
- known bugs:
-
- 1-some functions can produce values out of range.
-
- The Parser does very little error checking so watch your spelling
- on trig function names.(not a bug)
-
- **********************************************************************
- ******* First MAKE SURE YOUR STACK IS SET TO AT LEAST 25000 **********
-
- Amiga Plot can be run from the workbench with the icons provided,
- and in that case the stack is set automatically.
-
- Amiga Plot is initialized at the CLI by 'Run Plot' (don't forget to set
- stack 25000 first !)
-
- For convenience, the directory 'aparms' is included and includes
- numerous function examples. These can be loaded from the 'Files' menu
- and make it extremely easy to play with and to alter different
- functions known to yield satisfatory results.
- Also the directory 'apic' is included with examples of Iff
- pics. These pictures can be viewed with any showiff program.
-
- ******************************* NOTICE *******************************
-
- Version aplot1.4 parm files are not compatible with V2.0+ parm
- files. I have included all previous parm files in the new format.
- Sorry for this inconvienence.
-
- **********************************************************************
-
- Three windows appear-
- 1- Amiga Plot window - for the plots.
- 2- Parms window - gadgets to select and change parameters.
- 3- Function window - for function input only.
-
- There are two menus available for some parmameter changes, color etc.
-
- In version 2.0, no keyboard input is necessary, nor provided for,
- in the paramemter window. Each parameter is located in an adjustable
- gadget. If you point to the right half of the gadget and hold the left
- mouse button down the values will increase. Likewise, the left half
- decreases the value. You can adjust the rate of increase/decrease if
- you push and hold either the SHIFT key(increase rate by factor of
- ten), or the CTRL key(decrease rate by factor of 1/10) before pressing
- left mouse button.
-
-
- AXIS:
-
- When Amiga Plot is first run, you will see the coordinate axes in
- the plot window. The axes serve two purposes. They show the user the
- orientation of the plot(rotations) and the relative size of the plot.
- If the rotations are all set to zero then the axes are positioned as
- follows:
-
- X axis points from left to right with negative to the left of the
- origin and positive to the right.
- Y axis represents depth with the negative portion in the
- foreground and positive to the rear.
- Z axis runs up and down with negative down and positive up.
-
- The rotation of each axis is governed by the corresponding gadget
- in the parms window under the label 'Rotate'. Try these gadgets and
- watch the corresponding changes in the coordinate system axes.
- The 'Axis' gadget will toggle the axes on and off as well as clear
- the plot window.
-
- NOTE --The 'Y' and 'Z' rotations always spin about their respective
- axes relative to their current position. This is as it should be. The
- 'X' rotation is about a fixed imaginery axis which is stuck in the
- horizontal position. I've checked my matrix formulas and cannot seem
- to dispell this problem although it really does not limit the relative
- positions possible.
-
- SCALE:
-
- The 'X' and 'Z' scaling factors affect the on screen size of each
- axis and subsequently the size of the plot. The 'Y' scale has a
- slightly different effect. Since the 'Y' axis represents depth,
- scaling this axis has a profound affect on perspective. Try these
- gadgets on the coordinate axes to see the results before plotting a
- surface.
-
- HINT --Overall size and perspective is better adjusted with the
- 'Object' and 'Image' gadgets discussed later.
-
-
- DOMAIN(X) and RANGE(Y):
-
- It is important to understand the Domain and Range of a function.
- The Domain is said to be the set of all first components from a set of
- ordered pairs and the Range, a set of all second components from the
- set of ordered pairs(x,y). This set of ordered pairs is going to be
- fed to our function(f(x,y)) which will yield values(Z). These
- values(Z) will become part of a set of ordered triples(x,y,z) and will
- then be plotted in our 3d coordinate system.
- What actually happens in Amiga Plot is this. Starting with the
- high end of the 'RangeY', this value is placed together with each
- value from the DomainX(low to high) yielding that 'Z' value and all
- those ordered triples(x,y,z). These points are plotted, then the
- RangeY is decremented and the process repeats until it reaches the low
- RangeY value. Then the plot is complete. If I explain any further,
- you'll just get tired of reading this so try a plot and see for
- yourself!
-
-
- SEGMENTS:
-
- Simple, the X and Y segments are the number of increments across
- the axis. In other words, how many points(X) you want graphed on each
- pass, and how many passes(Y) to run through.
-
-
- OBJECT and IMAGE:
-
- Object and Image represent distances from your eye to the actual
- surface(object) in 3d space and to the objects 2d projection(Image) on
- your screen. Adjust these for sizing the overall image as well as
- perspective. Experimentation is the best way, so try it.
-
-
- TRANSLATION:
-
- 'X' will move the axes left or right on the screen while 'Y' moves
- them up or down.
-
-
- START and STOP:
-
- says it all!!
-
-
- CLEAR:
-
- This gadget clears the screen. If you don't clear the screen
- between plots you can create composites of different functons.
-
-
- SOLID, LINE, and POINT:
-
- Determines what type of plotting to construct. Solid for hidden
- line removal and shading effect. Line and point for transparent
- effects. These can be changed during a plot for interesting features.
-
-
-
- Function Gadgets:
-
- There are 3 string gadgets available for function input:
-
- f(x,y): this gadget is for entry of main function. Upper and lower
- case is acceptable. Any operators, grouping sysbols, or trig
- function names given below are acceptable.
-
- Legal variable names : X,Y, A,B if they are defined below.
-
- A= : this gadget is useful for subfunctions and expressions and
- servesas a macro for the main function f(x,y). If your main
- function(f(x,y)) contains the 'A' variable, then this
- macro MUST be defined in this gadget !
-
- B= : this gadget is useful for subfunctions and expressions and
- serves as a macro for the main function f(x,y). If your main
- function(f(x,y)) contains the 'B' variable, then this
- macro MUST be defined in this gadget !
-
- Editing : same as for any string gadget - cursor keys, del, backSp
- etc.
-
- operations : +,-,*,/ divsion by zero is trapped.
- ^ to the power of
-
- grouping : ()
-
- functions : ABS() absolute value of
- SQRT() Square root of
- SQR() Square of
- SIN() Sine of
- ASIN() ArcSine of
- COS() Cosine of
- ACOS() ArcCosine of
- TAN() Tangent of
- COT() Cotangent of
- ATAN() Arctangent of
- LN() Natural Logarithm of
- LOG() Base 10 Log of
- EXP() Exponential of
-
- Note - 2 dimesional plots can be produced in the form
- z=sin(x), z=3x+2 etc, if the rotations are all set to 0, the
- YRange(low & high) are set to 0, and the Y segments are set
- to 1. Use variable 'X' and plot 'Z' in terms of 'X'.
-
- Menus:
-
- File Menu
-
- load
- parms- this will load a set of parameters, functions, window sizes,
- color map etc. When plot is first run 'Default.parms'
- is loaded if available. If you have a favorite
- function. then it can be loaded at startup by saving
- its' parms as 'Default.parms'.
-
- save
- parms - this will save all parameters for easy retrieval. A file
- requestor will prompt you for the file name. File name
- extensions of '.parms' are recommended..
-
- save IFF -
- this will save the current visible screen or plot
- window to an IFF format image. A file requestor will prompt
- you for the file name and extensions of '.pic' are
- recommended.
-
-
- Quit - Quit Amiga Plot (bye)
-
-
- Display Menu -
-
- Color Map - User selects color palette
-
- ColorSpan - User selects color position/span(what heigth you want
- each color to kick in. Decimal fractions can be entered
- for finer color resolution.
-
- XHatch - Outlines complete polygon on screen
-
- Radians/Degrees - This toggles the displayed DomainX and RangeY to
- Degree units and back to radian units. A little
- something extra.
-
- Spec.Parms -
-
- Clip TAN - This is an adjustment for the TAN function which usually
- produces very high values(out of range). You can
- adjust the tops of these spikes.
-
- Scale/0 - This one can adjust any case of division by zero. In other
- words, instead of dividing by zero(which is undefined)
- you can divide by the scale value.
-
- Clip Z - This little number will effectively clip the top and the
- bottom off any function. It limits the Z axis plot to a
- +ClipZ and -ClipZ.
-
- **********************************************************************
-
-
- **** Have Fun ****
-