home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
284.lha
/
AmigaPlot_v2.0
/
Plot.doc
< prev
next >
Wrap
Text File
|
1989-09-11
|
12KB
|
303 lines
Amiga Plot V2.0 Joe Martin 8/89 (C)Copyright 1989
**************************** *** 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
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.
I'm working on better error checking but it'll be slow to come.
The Parser does very little error checking right now so watch your
spelling on trig function names.
******************************************************************************
********** First MAKE SURE YOUR STACK IS SET TO AT LEAST 20000 **************
AmigaPlot is initialized at the CLI by 'Run Plot' (don't forget to set stack
20000 first !)
For convenience, the directory 'parms' 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 'pic' is included with one example of an Iff pic. This
picture 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 serves
as 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
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..
IFF - this will save the current visible screen 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 ****