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
Wrap
Text File
|
1990-02-11
|
13KB
|
336 lines
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 ****