mirror of
https://github.com/PDP-10/its.git
synced 2026-01-13 15:27:28 +00:00
1993 lines
83 KiB
Plaintext
Executable File
1993 lines
83 KiB
Plaintext
Executable File
CFFK@MIT-MC 07/02/81 17:37:35
|
||
To: BDB at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
OK here is a description of REPLOT(XXX);
|
||
REPLOT is an FEXPR which means that LISP does NOT
|
||
evaluation its args. REPLOT does it when it thinks
|
||
it should.
|
||
The plots that REPLOT plots are given by the following
|
||
list:
|
||
If atom(xxx) then (if listp(ev(xxx)) then ev(xxx) else [xxx])
|
||
else (if listp(xxx) then xxx else [xxx]);
|
||
Thus FOO:BAR; REPLOT(FOO); replots FOO not BAR. Also
|
||
note that subscripts get an extra evaluation so that
|
||
REPLOT(PLOT[FOO]); replots PLOT[BAR] not PLOT[FOO].
|
||
Thus if you have a sequence of plots to be named and
|
||
replotted, do P():=(For i thru 10 do (... , nameplot(PLT[i])));
|
||
RP():=For i thru 10 do replot(PLT[i]);
|
||
If you need the extra evaluation on the atoms do:
|
||
APPLY(REPLOT,[FOO]); (which replots BAR.) So you might have
|
||
wanted RP(name):=APPLY('REPLOT,[name]);
|
||
But RP(PLT[i]) will still not work. (Mainly because the plot
|
||
is stored as the VALUE of the array element and the Macsyma
|
||
simplifier which knows nothing about plots munges it badly
|
||
when the arg to RP gets evaluated. This is not a problem with
|
||
atoms because the plot is then stored on the property list of
|
||
the atom.) All rather muddling. It might have been a good
|
||
idea to stay clear of FEXPRs. They always cause confusion
|
||
sooner or later.
|
||
In any case, the reason for the behavior you see is buried
|
||
in that If atom(xxx)... stuff above (if you think about it.)
|
||
|
||
Date: 1 APR 1981 1530-EST
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
Subject: Contours going through grid points.
|
||
To: MJA at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
|
||
What I do is to pretend that grid points with Z=0 actually
|
||
are Z=0+. This allows me to uniquely determine which cells
|
||
the contour goes through. Logically the contours no longer
|
||
can go through the grid points (although the intercept of the
|
||
contour with the side of the cell will of course coincide
|
||
with one of the grid points). The only time when the position of
|
||
the contours is effected by this scheme is when there is a flat
|
||
region (e.g. when neighboring grid points have Z=0). But
|
||
then the contour is ill-defined anyway.
|
||
Your handling of saddle points seems OK, although I'm note
|
||
sure I understand how you compute the value of the middle of
|
||
the cell. I take the mean of the 4 corners. But just about anything
|
||
will work as long as the value is invariant to rotation of the
|
||
cell.
|
||
|
||
Date: 27 MAR 1981 0923-EST
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
To: MJA at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
|
||
The ref is The computer journal vol 15 num 4 p 382 (1972).
|
||
(This appears half way through PLOT3D just before the definition
|
||
of the contour plotting functions.)
|
||
Sorry I'm don't think I know what you mean by a nodal surface.
|
||
But I can explain what CONTOURPLOT2 does.
|
||
You give it a 2D array of points (normally a cartesian array
|
||
but it can be e.g. in polar coords). Consider 4 neighboring
|
||
points of the array which are at the 4 corners of a rectangle.
|
||
CONTOURPLOT2 breaks this rectangle up into 4 triangles by
|
||
inserting a central point which is the mean of the 4 corners.
|
||
The entire surface may be considered as a polyhedron
|
||
made up of triangular faces. CONTOURPLOT2 then calculates
|
||
the exact contours for this polyhedral surface. Special
|
||
fixes are put in to resolve ambiguities when some faces
|
||
are horizontal. As far as I can remember the idea of inserting
|
||
the central point was mine. The ref I gave didn't do this
|
||
which meant that which way the contour turned when entering
|
||
a rectangle containing a saddle point was ill-defined. This
|
||
could have lead to crossing contours.
|
||
If you like you can mail me an array of numbers and I try
|
||
CONTOURPLOT2 out on them and mail (by US mail) the results
|
||
to you. I believe that all the funny cases can be tried out
|
||
with small arrays (5 x 5 or so).
|
||
Macsyma on a TOPS-10. Forget it, at least for the time being.
|
||
You need a lot of memory which is not usually available on
|
||
TOPS-10 systems. The MACSYMA group is gearing up to license
|
||
use of Macsyma on VAXes and maybe some other DEC systems. In
|
||
addition a special purpose computer is being built (for about
|
||
$60k ?) which will run Macsyma (this is the LISP machine).
|
||
You can get more details from JM if you are interested.
|
||
|
||
Date: 17 February 1981 21:11-EST
|
||
From: James E. O'Dell <JIM at MIT-MC>
|
||
To: CFFK at MIT-MC
|
||
cc: PLOT2 at MIT-MC
|
||
|
||
Date: 17 February 1981 08:34-EST
|
||
From: Charles F. F. Karney <CFFK>
|
||
To: JIM
|
||
cc: PLOT2
|
||
|
||
I moved the special declarations out of $LABEL.
|
||
I'm afraid I don't know anything else you have to do to
|
||
make PLOT2 work on Multics. Maybe I will be able to fix
|
||
things if you do have problems though.
|
||
|
||
Thanks a lot. I'll let you know how it works. The Multics code looks
|
||
very straightforward so.....
|
||
|
||
CFFK@MIT-MC 02/17/81 08:34:49
|
||
To: JIM at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
I moved the special declarations out of $LABEL.
|
||
I'm afraid I don't know anything else you have to do to
|
||
make PLOT2 work on Multics. Maybe I will be able to fix
|
||
things if you do have problems though.
|
||
|
||
CFFK@MIT-MC 02/13/81 08:58:09
|
||
To: PLOT2 at MIT-MC
|
||
namefile now returs the truename of its arg.
|
||
|
||
Date: 12 FEB 1981 1523-EST
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
Subject: PLOT2 working again.
|
||
To: INFO-PLOT2 at MIT-MC
|
||
|
||
Thanks to GJC, PLOT2 is working once more.
|
||
|
||
Date: 12 FEB 1981 1232-EST
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
To: INFO-PLOT2 at MIT-MC
|
||
|
||
I've managed to break PLOT2. TEKPLT FASL won't load up.
|
||
The older versions of TEKPLT also don't work. Should
|
||
be fixed by the end of today. Sorry for inconvenience.
|
||
|
||
CFFK@MIT-MC 12/18/80 17:23:32 Re: Expansion of previous message.
|
||
To: EISLER at MIT-MC
|
||
CC: JPG at MIT-MC, PLOT2 at MIT-MC
|
||
Suppose you have 3 arrays Z[I,J], X[I], and Y[J] and
|
||
you want a contour plot with I going from 0 to IM and
|
||
J from 0 to JM.
|
||
(1) Declare X and Y by ARRAY(X,FLOAT,IM) and ARRAY(Y,FLOAT,JM)
|
||
(before fill the arrays up).
|
||
(2) Define a function ZF(XV,YV):=Z[LOOKUPX(XV),LOOKUPY(YV)];
|
||
LOOKUPX(XV):=FOR I FROM 0 THRU IM DO IF X[I]=XV THEN RETURN(I) ELSE FALSE;
|
||
and similarly for LOOKUPY.
|
||
(3) CONTOURPLOT2(ZF(XV,YV),XV,X,YV,Y);
|
||
This should do what you want. Let me know if it works OK.
|
||
|
||
CFFK@MIT-MC 12/18/80 08:40:29 Re: GRAPH3D(..., CONTOUR);
|
||
To: EISLER at MIT-MC
|
||
CC: JPG at MIT-MC, (BUG PLOT2) at MIT-MC, PLOT2 at MIT-MC
|
||
No, this is not meant to work. The problem is that the CONTOUR plotter
|
||
requires a 2*2 matrix of values to work on. (I.e. if the x-values
|
||
are xi and the y-values are yj, there must be a z(i,j) for all
|
||
i and j. Within this rstriction CONTOURPLOT2 allows you to
|
||
be fairly general so that the xi and yj need not be uniformly
|
||
spaced and you are allowed to specify a transformation from
|
||
one set of (x,y) to another so that the plotted region
|
||
need not be rectangular.
|
||
I don't think the PLOT2 USAGE is misleading: it says that
|
||
contour plots are available by PLOT3D(..., CONTOUR) and
|
||
CONTOURPLOT2. Maybe it should explicity exclude GRAPH3D?
|
||
Certainly GRAPH3D(..., CONTOUR) should fail more gracefully.
|
||
|
||
GJC@MIT-MC 10/25/80 15:05:53
|
||
To: CFFK at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
Yes, that stuff was dis-installed, it was taking up core
|
||
and didn't seem to be too popular. A more general way of
|
||
collecting that kind of information may be put into macsyma,
|
||
so thats why the special case was taken out of PLOT2.
|
||
If anyone depends on the time-check, feature then please tell
|
||
me.
|
||
|
||
|
||
CFFK@MIT-MC 10/25/80 14:55:55
|
||
To: GJC at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
It looks as though your TICKS_PER_WARNING stuff in PLOT2 has
|
||
been dis-installed. Is that right? There's no mention of
|
||
such an action in PLOT2 RECENT.
|
||
|
||
Date: 6 OCT 1980 0814-EDT
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
To: YAU at MIT-MC
|
||
CC: JIM at MIT-MC, PLOT2 at MIT-MC
|
||
|
||
Sorry, there's no easy way to get the tickmarks for
|
||
log plots arranged as they would be on log-log graph
|
||
paper. They would be fairly easy to put in by hand with
|
||
GRAPH2([.1,.2,.3,...,1,2,3,...,10,20,30,..],
|
||
[0,.1,0,.1,0,.1....],LOG,SAME)$ (You would have to
|
||
turn of the regular tickmarks of course, and you should
|
||
specify FIRST in the ordinary call to PLOT2, and you
|
||
may want to fiddle around with XMAX and XMIN etc.)
|
||
|
||
CFFK@MIT-MC 09/12/80 10:26:09 Re: 3D surfaces specfied parametrically
|
||
To: CMA at MIT-MC
|
||
CC: JPG at MIT-MC, PLOT2 at MIT-MC
|
||
No, there is no easy way of getting this done. You'll
|
||
have to somehow convert your data to the form Z(X,Y).
|
||
(Maybe numerically.) [If the transformation between
|
||
(A,B) and (X,Y) is well-behaved, it's possible you can
|
||
manage to do something using the user-defined transformation
|
||
capability. But you'll have to factor in the 3-D transformation
|
||
also. See PLOT2 USAGE for details.]
|
||
|
||
JEHUDA@MIT-MC 08/24/80 11:41:38
|
||
To: PLOT2 at MIT-MC
|
||
BUGE. I get a printplot on a TK4025 term. insted of a good
|
||
plot like on a TK4010. Can you fix this ? Thankyou JEHUDA.
|
||
|
||
CFFK@MIT-MC 08/16/80 16:14:48
|
||
To: CMA at MIT-MC
|
||
CC: PLOT2 at MIT-MC, (BUG GLP) at MIT-MC
|
||
The problem is that the resolution of the XGP is slightly
|
||
different in the horiz and vertical directions. (One
|
||
is 192/inch and the other is 200/inch. I forget which is
|
||
which. Actually the horiz resolution is NOT constant across
|
||
the page, as you may have noticed.) There is no provision
|
||
is PLOT2 for allowing for this difference (partly to maintain
|
||
an easy conversion between plots produced for the XGP, Gould
|
||
printer (which has the same vert. and horiz. resolutions)
|
||
and Tektronixes). As a temporary fix I suggest you manually
|
||
adjust the WINDOW and XMAX etc. to give yourself the scaling
|
||
you want. The best place to make a more permanent fix would
|
||
be in the Gould spooler (which is the program that produces
|
||
the scan files for the XGP). There is already a provision
|
||
in the spooler for blowing up a plot by a constant scale
|
||
factor (PLOTSCALE, I believe it's called). So it shouldn't
|
||
be too difficult to make the scales different in the two
|
||
directions.
|
||
|
||
CFFK@MIT-MC (Sent by CFFK0@MIT-MC) 08/14/80 23:32:35
|
||
To: ADK at MIT-MC, PLOT2 at MIT-MC
|
||
I have changed PLOT2 to send out 1 secs worth of
|
||
padding characters after a screen clear on a tektronix.
|
||
You should now have no problems with part of your
|
||
plot disappearing. (You must ensure that ITS knows
|
||
your speed. Check it by doing :TCTYP DES
|
||
and change it by doing e.g. :TCTYP SPE 1200
|
||
.)
|
||
|
||
Date: 24 JUN 1980 1614-EDT
|
||
From: GJC at MIT-MC (George J. Carrette)
|
||
To: INFO-PLOT2 at MIT-MC
|
||
CC: JPG at MIT-MC, GJC at MIT-MC
|
||
|
||
In the interests of helping people to get their
|
||
work done faster a time monitoring feature has
|
||
been added to PLOT2. The variables
|
||
TICK_TIME_UNIT_IN_SECONDS and
|
||
TICKS_PER_WARNING control how often an efficiency
|
||
checking function is run during the evaluation of the
|
||
functions given to PLOT2. This function checks to see
|
||
if code can be translated, checks translated code for
|
||
efficiency (proper MODEDECLAREs), and checks compiled
|
||
code for the amount of flonum and other consing it is doing.
|
||
It prints out helpful information. If you are doing
|
||
things optimaly you will never notice it of course.
|
||
|
||
N.B.=> this uses the TIME alarmclock. Presently only one
|
||
time alarmclock can be running at the same time, this will
|
||
be fixed in the future though.
|
||
|
||
-gjc
|
||
|
||
CFFK@MIT-MC 04/19/80 13:34:05 Re: CONTOURPLOT2
|
||
To: RHB at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
1) If CONTOURPLOT2 sees a constant level, C, and it
|
||
tries to plot a contour at height, C, then you
|
||
can think of CONTOURPLOT2 as changing the contour
|
||
height to C+eps, where eps is a small positive (or is
|
||
it negative?) number. THereafter no special actions are
|
||
taken to handle constant areas.
|
||
The contours are determined by linear interpolation between
|
||
neighboring points. In order to resolve the difficulty
|
||
caused by saddle points an additional point is computed
|
||
at the center of each rectangle (this is just taken as
|
||
the mean of the values at the corners of the square). Then
|
||
additional points on the contours are obtained along the
|
||
diagonals of each rectangle. In this way the plane is tiled
|
||
by triangles, and there are no problems with saddle points.
|
||
2) With the checkerboard pattern of points, you get either
|
||
smoothed squares or diamonds depending on whether the contour
|
||
level is higher or lower than the new point introduced
|
||
in the center of each rectangle.
|
||
3) You can't really govern where the contour labels go.
|
||
If you want you can use the corsshairs on the tektronix
|
||
of position your labels where you want them. Or else you
|
||
can try to compute where the contours are yourself.
|
||
If you want something ready for publication, then set
|
||
LABELCONTOURS:FALSE$ and then get the draftmen to label your
|
||
contours for you. (They can then take care of labelling only
|
||
certain of the contours, blanking out the contours where the
|
||
labels are, writing the labels parallel to the contours, and
|
||
other fancinesses.)
|
||
4) The precision of the contour labels is governed by
|
||
PLOTNUMPREC. Try PLOTNUMPREC:2$ (This governs the prec of
|
||
all numbers written by PLOT2.) You might also try
|
||
CONTOURS:'INTEGER$ or CONTOURS:[0,4,6]$ to stop rounding errors
|
||
from causing the levels to be odd numbers like 3.999.
|
||
5) I believe something like:
|
||
(ZMAX:10.5,ZMIN:-.5,CONTOURPLOT2(....,FIRST),
|
||
ZMAX:20.5,ZMIN:10.5,REPLOT(TRUE,[1],SAME,LAST));
|
||
will do what you want. You may have to fiddle with
|
||
the ZMAXs and ZMINs a bit. You might be safer doing
|
||
CONTOURS:[0,1,2,3...,10] etc.
|
||
[CONTOURPLOT2([one thing, other thing],....[0,1])$
|
||
plots the contours for one-thing solid, and for
|
||
other-thing dashed. That's not what you want however.]
|
||
(Addendum to (3): See documention on EDIT in PLOT2 USAGE
|
||
for how to use the cross-hairs on the Tektronix.)
|
||
|
||
Date: 31 MAR 1980 0943-EST
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
Subject: How to COMPILE functions which call PLOT2 etc.
|
||
To: INFO-PLOT2 at MIT-MC
|
||
|
||
GJC has asked me to explain the how's and why's of compiling
|
||
functions which call PLOT2 and friends.
|
||
|
||
It is possible to correctly compile such functions. However it
|
||
requires some extra work on the part of the user. (TRANSLATing, on
|
||
the other hand, shouldn't cause any problems.)
|
||
|
||
The problem with COMPILing functions that reference PLOT2 is that
|
||
PLOT2 evaluates its arguments in a special way. In order for PLOT2
|
||
to be able to do this the compiler must be told that the variables
|
||
PLOT2 references are SPECIAL. (Otherwise the compiler is liable to
|
||
put the variables in some odd place like a push-down list, which
|
||
PLOT2 knows nothing about.) Thus to compile the function
|
||
P(A,B):=PLOT2(F(X),X,A,B)$ insert the following declarations
|
||
P(A,B):=(DECLARE([X,A,B],SPECIAL),PLOT2(F(X),X,A,B))$ Then do
|
||
COMPILE(P)$
|
||
|
||
Notes:
|
||
|
||
That's DECLARE and not MODEDECLARE. This is a misfeature which will
|
||
hopefully be fixed shortly by the maintainers of TRANSLATE/COMPILE.
|
||
|
||
It isn't really necessary to declare the X to be SPECIAL. That
|
||
happens anyway, since as far as P is concerned X is a global
|
||
variable.
|
||
|
||
It's always OK to declare a variable SPECIAL. However compiled code
|
||
involving lots of SPECIAL variables is orders-of-magnitude slower
|
||
than the same code without any SPECIAL variable. This means that
|
||
that you should try and split up your program so that the lengthy
|
||
calculations are done in a function which doesn't call PLOT2 and so
|
||
which doesn't need to reference special variables. The function
|
||
which calls PLOT2 should be very simple so that you don't care
|
||
whether the compiled version is very efficient or not. (Indeed, you
|
||
perhaps should not bother compiling such a function at all. E.g.
|
||
there is negligible speed-up gained in running the function P above
|
||
when compiled.)
|
||
|
||
It should be possible for the COMPILE command to insert nearly all
|
||
the SPECIAL declarations itself (leaving only some unusual cases
|
||
which need individual attention). Maybe this will happen some day.
|
||
But don't hold your breath.
|
||
|
||
CFFK@MIT-MC 03/28/80 19:31:05
|
||
To: PLOT2 at MIT-MC, HEDI at MIT-MC
|
||
CC: RYD at MIT-MC
|
||
PLOT2 supports output to the Versatec (for users at PPL).
|
||
The allowable PLOTMODEs for specifying this are V, VERSY,
|
||
and VERSATEC. As far as PLOT2 goes this is exactly the
|
||
same as PLOTMODE:XGP$ except that when a HARDCOPY is requested
|
||
the GLP spooling program is told to do an OUTPUT:VERSATEC
|
||
(instead of OUTPUT:XGP). Ask me for details of how to
|
||
move the files created by GLP over to PPL and how to get
|
||
them plotted.
|
||
|
||
[RYD: If you have 100 dot/inch Versatecs at LASL it would
|
||
be fairly easy to get the plots out on them.]
|
||
|
||
|
||
GJC@MIT-MC 03/24/80 04:24:02
|
||
To: CFFK at MIT-MC, CL at MIT-MC, JPG at MIT-MC, JLK at MIT-MC
|
||
I changed NAMEPLOT and PLOT2P and others in the file CFFK;APLOT2
|
||
so the NAMEPLOT(<FOO>) would not use the value cell to store
|
||
the plot, if <FOO> is an atom. If <FOO> is an array, then
|
||
it still works the same as always. If you are curious as to
|
||
where I put the plot, I did ($PUT <FOO> '$PLOT) which is as
|
||
good a place as any. By the way, NAMPLOT(FOO) didn't used to
|
||
work with *RSET T. because quote-subs used to do
|
||
(MEMQ 'ARRAY (CDAR FOO)). This can cause real trouble, because
|
||
the CDAR of a symbol is a list whos CDR is the VALUE of the
|
||
symbol, which might be a list containing the atom ARRAY.
|
||
|
||
I checked out TEKPLT and PLOT3D, and did not find any other
|
||
places in the code that depended on the fact that the plot
|
||
was stored in the value cell of the symbol, so I installed it
|
||
on SHARE.
|
||
|
||
-gjc
|
||
CFFK@MIT-MC 03/12/80 15:44:33
|
||
DEH wants to be able to plot characters instead of symbols.
|
||
Maybe there should be a switch saying to use the character
|
||
which is normally substituted for the symbol in PLOTMODE(P)$
|
||
In the meantime, this is what I told him:
|
||
CFFK@MIT-MC 03/12/80 14:06:21 Re: Labelling with letters.
|
||
Here's how to do it. (Not very beautifully I'm afraid.)
|
||
Supposing you have a curve F(X) you want plotted between
|
||
X0 and X1, and you want it marked at either end with an "A",
|
||
then you would do:
|
||
(PLOT2(F(X),X,X0,X1,FIRST),
|
||
ENTERGRAPH(),
|
||
FOR X IN [X0,X1] DO
|
||
GHPRINT("A",?TEK\-X(X),?TEK\-Y(F(X)),1),
|
||
CLEAR:WAIT:TRUE,
|
||
EXITGRAPH())$
|
||
The extension to many curves should be obvious. The functions
|
||
GHPRINT, ?TEK\-X, etc. are documented in SHARE;PLOT2 USAGE
|
||
if you need to know more about what's going on.
|
||
Let me know whether this works (it should, but I haven't
|
||
tried it). I've put you request to allow alphabetic symbols
|
||
on my list of things to do. However since it may not get
|
||
done for a month or two, the above should serve.
|
||
|
||
Date: 1 MAR 1980 1205-EST
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
Subject: LABEL vs. CONCAT
|
||
To: INFO-PLOT2 at MIT-MC
|
||
|
||
I notice a lot of people using CONCAT for a plot label, when LABEL would
|
||
do the job easier. Instead of doing:
|
||
PLOT2(...., FALSE,FALSE,CONCAT("A=",A," B=",B,...))$
|
||
do:
|
||
PLOT2(...., FALSE,FALSE,LABEL(A,B,...))$
|
||
This will make a title "A=5 B=3.14 ..." (or whatever).
|
||
Full description of LABEL can be found in SHARE;PLOT2 RECENT message of
|
||
12/29/77.
|
||
|
||
Date: 1 MAR 1980 1126-EST
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
Subject: NAMEPLOT(PLT[J])
|
||
To: INFO-PLOT2 at MIT-MC
|
||
CC: GJC at MIT-MC
|
||
|
||
GJC has pointed out that some people do things like:
|
||
APPLY('NAMEPLOT,[CONCAT("PLT-",J)]), and that such
|
||
constructions will no longer work once double-quoted
|
||
strings evaluate to themselves (and thus become unassignable).
|
||
The way to get around this problem is to say:
|
||
NAMEPLOT(PLT[J]) (as in the previous case J is evaluated).
|
||
(In any case the latter form is preferable, since it is shorter
|
||
and clearer.)
|
||
|
||
BROWN@MIT-MC 01/22/80 12:20:32
|
||
To: PLOT2 at MIT-MC
|
||
DO YOU SUPPORT THE HP 2647A INTELLIGENT GRAPHICS TERMINAL? ALSO
|
||
HOW ABOUT THE TEKTRONIX 4051?-I AM GOING TO BUY ONE OR THE OTHER BUT LIKE THE
|
||
HP BETTER IF IT IS SUPPORTABLE
|
||
|
||
Date: 12 DEC 1979 1904-EST
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
To: INFO-PLOT2 at MIT-MC
|
||
|
||
PLOT2 now works for Tektronix 4025 terminals. The
|
||
way to do this is to set PLOTMODE:'TEK$ TEK4025:TRUE$
|
||
and then PLOT2( ... ) or whatever. The Tektronix 4025
|
||
is supported by :CRTSTY TK4025. The terminal has
|
||
to be told to expect the regular Tektronix graphics
|
||
that is used by the Tektronix 4010 terminal.
|
||
How this is done is described below by KAT.
|
||
|
||
|
||
In the 4025 the screen is split into two
|
||
regions, the work space and the monitor.
|
||
The monitor is the space that communicates with the host
|
||
unless the host is transmitting graphics, in which case
|
||
the graphics goes to the work space. The user has to
|
||
specify the size of the work space (which specifies the
|
||
size of the monitor by giving it whats left) and
|
||
defining the a graphics region in the work space.
|
||
To have the 4025 accept 4010 graphic an additional
|
||
commmand is needed, the shrink command.
|
||
|
||
So to get the 4025 to do 4010 graphics the following
|
||
TEK comands are needed (` is the command character
|
||
that crtsty uses to communicate with the terminal):
|
||
`wor n <cr> (where n is the size of the workspace
|
||
I use n=20 which leaves 13 lines for
|
||
the mon.
|
||
`graphic 1,35 <cr> (this makes the graphic region
|
||
occupy the first 35 lines of the
|
||
workspace, the args to graphic
|
||
can define the grahics to be
|
||
anywhere in the workspace as
|
||
long as it defines 35 lines cause that
|
||
is the size of the 4010 graphics region-
|
||
ie graphic 35,69 would be fine.
|
||
this does not bother
|
||
the fact that the workspace is 20
|
||
since the picture can be scrolled into veiw,
|
||
the wor command just defines the size of the
|
||
visible portion of the workspace
|
||
`shrink <cr> (this tells the 4025 to behave like the 4010)
|
||
|
||
I think that the above three commands are best done by the
|
||
users because
|
||
1) the `wor command also has the effect of erasing the workspace
|
||
and the monitor which might not be desired.
|
||
2) the size of the monitor depends on whether the user needs to see
|
||
a lot of the host interaction or is just executing plots.
|
||
|
||
Date: 15 NOV 1979 1727-EST
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
To: INFO-PLOT2 at MIT-MC
|
||
|
||
The way SAVEPLOTS chooses its defaults has changed. If the
|
||
first arg. to SAVEPLOTS is a list, then it is merged in with
|
||
the current file defaults to obtain the full filespec. (This
|
||
is th same as before.) However if the first arg. is not a
|
||
list then the filespec. used is [PLOTS,>,''DEVICE,''UNAME].
|
||
(This will normally be [PLOTS,>,DSK,uname]. DEVICE and UNAME
|
||
are also used by SAVE in a similar manner.) SAVEPLOTS always
|
||
sets the file defaults.
|
||
|
||
CFFK@MIT-MC 09/26/79 21:59:39
|
||
To: KMP at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
I am using PLOTMODE(P)$ |But that shouldn't make any difference.
|
||
|
||
Date: 7 AUG 1979 1544-EDT
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
Subject: CALCOMPNUM changed to PLOTNUM
|
||
To: INFO-PLOT2 at MIT-MC
|
||
|
||
The variables CALCOMPNUM, CALCOMPNUM0, and CALCOMPNUM1 have been renamed
|
||
PLOTNUM, PLOTNUM0, and PLOTNUM1. (Supposedly more sensible names.)
|
||
In order to assist in the changeover, an attempt to set one of the old
|
||
variables will print a warning message, and then set the new variable.
|
||
(Thus CALCOMPNUM:100$ PLOTNUM; ==> 100 . But note that PLOTNUM:20$
|
||
CALCOMPNUM; ==> 100 still.) Both PLOT2 USAGE and PLOT2 DEMO have been
|
||
changed appropriately.
|
||
|
||
Date: 28 JUL 1979 1752-EDT
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
Subject: WORLDPLOT
|
||
To: INFO-PLOT2 at MIT-MC
|
||
|
||
The data files for WORLDPLOT have been restored from the Datacomputer,
|
||
so WORLDPLOT should work once more.
|
||
|
||
Date: 4 MAY 1979 1236-EDT
|
||
From: CFFK at MIT-MC (Charles F. F. Karney)
|
||
Subject: Using PLOT2 through CRTSTY
|
||
To: INFO-PLOT2 at MIT-MC, INFO-CRTSTY at MIT-MC
|
||
|
||
PLOT2 (Macsyma's plotting package) should now work
|
||
through CRTSTY when PLOTMODE:'DISPLAY$ Please let
|
||
me know if there are any problems.
|
||
|
||
Date: 29 MAR 1979 0459-EST
|
||
From: JONL at MIT-MC (Jon L White)
|
||
Subject: Yet another COMPLR bug bites the dust!
|
||
To: JLK at MIT-MC, SK at MIT-MC, CFFK at MIT-MC
|
||
CC: JONL at MIT-MC, INFO-PLOT2 at MIT-MC, (BUG COMPLR) at MIT-MC
|
||
|
||
Well, there was this obscure compiler bug evident only in the
|
||
case of LESSP with more than 2 args and with verrry special conditions.
|
||
That's why poooor FFORMA hasn't been compiled for more than three years.
|
||
But all is well now. Hopefully! Just in case there are other cases
|
||
of FFORMA that lose under the current compiler, the age-old
|
||
version is on AI:LIBLSP;FFORMA OFASL
|
||
|
||
Date: 28 MAR 1979 1538-EST
|
||
From: JONL at MIT-MC (Jon L White)
|
||
Subject: FFORMA
|
||
To: JLK at MIT-MC
|
||
CC: CFFK at MIT-MC, SK at MIT-MC, INFO-PLOT2 at MIT-MC, JONL at MIT-MC
|
||
|
||
I have retrieved the FASL from a few days ago - for whatever
|
||
reason, the FASL coming from the current compiler for this
|
||
file (LIBDOC;FFORMA >) has some terrible bug in it. As of yet,
|
||
I'm not sure why, whether it is because there is some change
|
||
in the source language over the pas five years (FFORMA was written
|
||
in 1974), or whether there is an insidious bug in the compiler.
|
||
My apologies for the inconvience this has caused.
|
||
|
||
Date: 27 MAR 1979 1611-EST
|
||
From: JLK at MIT-MC (John L. Kulp)
|
||
To: JONL at MIT-MC
|
||
CC: CFFK at MIT-MC, INFO-PLOT2 at MIT-MC
|
||
|
||
LIBLSP;FFORMA is broken. It seems to multiply things randomly by 6.
|
||
The PLOT2 package in MACSYMA depends on this for doing labeling of
|
||
plots. Please fix asap. Thanks.
|
||
|
||
Date: 25 FEB 1979 1419-EST
|
||
From: JLK at MIT-MC (John L. Kulp)
|
||
To: R11-USERS at MIT-MC
|
||
CC: INFO-PLOT2 at MIT-MC
|
||
|
||
The default for PLOTSCALE in MACSYMA and for ARDS plots printed using :GLP
|
||
is now 1.0 rather than 1.75 or something random.
|
||
|
||
Also, there is more documentation under :INFO GLP about using the Gould
|
||
with the new spooler.
|
||
|
||
CFFK@MIT-MC 12/15/78 09:09:48 Re: XGPSAVE
|
||
To: KMP at MIT-MC
|
||
CC: JPG at MIT-MC, (FILE [SHARE;PLOT2 RECENT]) at MIT-MC
|
||
This has been flushed, as noted in SHARE;PLOT2 RECENT. It has been
|
||
superceded by PLOTMODE(XGP)$ PLOT2(...)$ HARDCOPY()$ (or linefeed if
|
||
you are also plotting on the terminal). (This queues the file for you.)
|
||
Alternatively you can do NAMEFILE(filename)$ and at a later time do
|
||
HARDCOPY([filename],XGP)$ Let me know if you have problems.
|
||
|
||
CFFK@MIT-MC 08/26/78 22:43:58
|
||
To: INFO-PLOT2 at MIT-MC
|
||
You have been selected for inclusion in the INFO-PLOT2 mailing
|
||
list. Here is the most recent message. If you do not wish to
|
||
be on this mailing list, remove your name from the file,
|
||
CFFK;PLOT2 LIST, or send a not via :BUG PLOT2
|
||
|
||
CFFK@MIT-MC 08/26/78 22:08:23 Re: CONTOURPLOT2
|
||
To: INFO-PLOT2 at MIT-MC
|
||
[1] The way the contour levels are chosen when CONTOURS is an
|
||
integer has been changed.
|
||
|
||
[a] If CONTOURS is a positive integer (the default value is
|
||
20), then approximately CONTOURS contours will been drawn
|
||
and the levels will be "nice" values. ("Nice" means in multiples
|
||
of a*10^n, where "a" is 1, 2, or 5. The levels are computed by
|
||
the same function that determines where to put the tick marks on
|
||
the axes.)
|
||
|
||
[b] If CONTOURS is a negative integer then ABS(CONTOURS) evenly
|
||
spaced contours will be drawn. In this case the levels will be
|
||
at "nasty" values, and you may want to set LABELCONTOURS to
|
||
FALSE, to suppress the printing of long numbers on the contours.
|
||
(This is what used to happen with postive CONTOURS.)
|
||
|
||
[2] An additional small change is that PLOT2 knocks a trailing
|
||
".0" off the numbers it prints. Thus you get e.g.
|
||
"Xmin = 2 ..." instead of "Xmin = 2.0 ...". Is this the right
|
||
thing to do?
|
||
|
||
CFFK@MIT-MC 08/26/78 22:08:23 Re: CONTOURPLOT2
|
||
To: INFO-PLOT2 at MIT-MC
|
||
[1] The way the contour levels are chosen when CONTOURS is an
|
||
integer has been changed.
|
||
|
||
[a] If CONTOURS is a positive integer (the default value is
|
||
20), then approximately CONTOURS contours will been drawn
|
||
and the levels will be "nice" values. ("Nice" means in multiples
|
||
of a*10^n, where "a" is 1, 2, or 5. The levels are computed by
|
||
the same function that determines where to put the tick marks on
|
||
the axes.)
|
||
|
||
[b] If CONTOURS is a negative integer then ABS(CONTOURS) evenly
|
||
spaced contours will be drawn. In this case the levels will be
|
||
at "nasty" values, and you may want to set LABELCONTOURS to
|
||
FALSE, to suppress the printing of long numbers on the contours.
|
||
(This is what used to happen with postive CONTOURS.)
|
||
|
||
[2] An additional small change is that PLOT2 knocks a trailing
|
||
".0" off the numbers it prints. Thus you get e.g.
|
||
"Xmin = 2 ..." instead of "Xmin = 2.0 ...". Is this the right
|
||
thing to do?
|
||
|
||
CFFK@MIT-MC 05/12/78 17:44:09
|
||
This feature was put in long ago, but never got documented somehow.
|
||
There is a flag PLOT2ERROR, which governs what happens when PLOT2 hits
|
||
an error in trying to evaluate a point. If PLOT2ERROR is TRUE (the
|
||
default) an error occurs and PLOT2 exits. However if DEBUGMODE is TRUE
|
||
you can ask for the value of PLOT2ERROR which is temporally bound to
|
||
the form being evaluated when the error occurs.
|
||
If PLOT2ERROR is a floating point number then that number will be used
|
||
as the value of the erroneous form.
|
||
Proposed extension:
|
||
If PLOT2ERROR is FALSE then the value of PLOT2UNDEFINED is used as
|
||
the value of the erroneous point. (An error if PLOT2UNDEFINED isn't
|
||
a number.)
|
||
|
||
BEE@MIT-MC 05/12/78 07:45:11
|
||
To: INFO-PLOT2 at MIT-MC
|
||
There is a new feature for two-dimensional graphs in PLOT2. These are plots produced
|
||
by PLOT2, PARAMPLOT2, and GRAPH2. If the function that is being plotted returns
|
||
the value PLOTUNDEFINED, then that point will not be plotted at all, and the line
|
||
will be discontinuous. This is to implement inhibition of plotting in areas
|
||
of discontinuities, or where the function is undefined. This will be extended
|
||
to plot3D and contourplot2 as soon as I can figure how to do it.
|
||
|
||
CFFK@MIT-MC 03/05/78 12:58:20 Re: For interest only! May be ignored.
|
||
To: INFO-PLOT2 at MIT-MC
|
||
The temporary .PLOT. files that are needed when pltting on the
|
||
Gould or XGP, are now put on the .TEMP. directory (instead of
|
||
the user's own directory or USERS;). This change made so that
|
||
old files do not stay around longer than necessary (.TEMP.; gets
|
||
reaped whenver the system comes up). This change should not affect
|
||
anyone's use of PLOT2.
|
||
|
||
CFFK@MIT-MC 01/30/78 23:39:44
|
||
To: PLOT2 at MIT-MC, (BUG PLOT2) at MIT-MC, GRS at MIT-MC
|
||
To: PEREIR at MIT-MC, MEISS at MIT-MC
|
||
There is a flag called CRCLEAR whose default value is TRUE, meaning
|
||
PLOT2 should clear the screen on receipt of a carriage return.
|
||
If you need to disable this do CRCLEAR:FALSE$ (LBL guys must do this
|
||
when going through their machine since all their lines are terminated
|
||
by returns.)
|
||
|
||
CFFK@MIT-MC 01/06/78 12:19:42 Re: LOGLOG, TOP, BOTTOM, LEFT, RIGHT
|
||
To: INFO-PLOT2 at MIT-MC
|
||
There are 5 new keywords that can appear in the optional args to PLOT2,
|
||
GRAPH2, REPLOT etc.
|
||
1) LOGLOG. This is the same as the keyword LOG (and gives you a LOG-LOG
|
||
plot.)
|
||
2) TOP, BOTTOM, LEFT and RIGHT. These govern where in your plotting
|
||
window the plot will actually appear. E.g. TOP and LEFT mean put the
|
||
plot in the top left corner, BOTTOM means in the bottom half of the
|
||
window, RIGHT in the right half, etc. These flags are non-sticky,
|
||
meaning that REPLOT doesn't remember them, although it recognizes them.
|
||
The gap left between the plots you get using these flags is
|
||
PLOTGAP, which has a default value of 20.
|
||
|
||
Example:
|
||
(PLOT2(X,X,0,1,TOP,FIRST),PLOT2(1-X,0,1,BOTTOM,LAST))$
|
||
PLOT2(SIN(X),X,-%PI,%PI,DONT)$
|
||
REPLOT(TRUE,TOP,LEFT)$ /* replots in top left corner */
|
||
REPLOT()$ /* replots in the whole window */
|
||
|
||
REPLOT4 could be defined by:
|
||
REPLOT4(PL1,PL2,PL3,PL4):=BLOCK([DATEPLOT:FALSE,DP:DATEPLOT,PLOTGAP:20],
|
||
REPLOT(PL1,TOP,LEFT,FIRST),
|
||
BLOCK([DATEPLOT:DP],
|
||
REPLOT(PL2,TOP,RIGHT)),
|
||
REPLOT(PL3,BOTTOM,LEFT),
|
||
REPLOT(PL4,BOTTOM,RIGHT,LAST))$
|
||
|
||
Note the flag SAME means to keep the same window as well as the same
|
||
scale. Thus SAME overrides these flags. If you want to preverse the
|
||
scale, the thing to do is to do all the plots but the first inside a
|
||
BLOCK([YMAX:YMAX1,YMIN:YMIN1,XMAX:XMAX1,XMIN:XMIN1], .... )
|
||
|
||
CFFK@MIT-MC 12/29/77 21:42:44 Re: Improved (I hope) handling of labels.
|
||
To: INFO-PLOT2 at MIT-MC
|
||
The action PLOT2 takes when it comes across something which could
|
||
be a label in the optional arguments list of a plotting function
|
||
is as follows:
|
||
If it is (a) an atom, (b) of the form 'FOO or '(...),
|
||
(c) of the form EV(...) or CONCAT(...) or LABEL(...),
|
||
then the label gets evaluated, else it is used literally.
|
||
(Previous it only got evaluated in case (a).)
|
||
Notes:
|
||
(1) The evaluation of 'FOO is FOO for all FOO, so if you
|
||
want to get a label of FOO and FOO has a value use 'FOO. ("FOO"
|
||
also works in most instances.)
|
||
(2) There is a new function LABEL which is a hairy label maker
|
||
for PLOT2. It takes any number of arguments and returns an atom
|
||
containing the arguments concatenated together. It differs from
|
||
CONCAT in the following respects:
|
||
(i) It sticks spaces between the items.
|
||
(ii) The arguments needn't be atoms.
|
||
(iii) if an argument is of the form 'FOO, then FOO appears
|
||
in the result.
|
||
(iv) Otherwise it evaluates the arguments. Then if the
|
||
evaluation is different from the argument <arg>=<evaluation>
|
||
appears in the result, else just <evaluation>.
|
||
(v) In (iv) if <evaluation> is a floating point number then
|
||
only PLOTNUMPREC sig. figs. of it appear in the answer.
|
||
(3) LABEL is spelt "LABEL" not "LABLE".
|
||
(4) The label is evaluated inside an ERRCATCH, so if you have an
|
||
error in the evaluation of your label, you will see an error message,
|
||
but the plot will still come out (with no label where you goofed).
|
||
|
||
Example:
|
||
PHASE:EV(%PI,NUMER)$
|
||
AMPLITUDE:2$
|
||
PLOTNUMPREC:5$
|
||
PLOT2(SIN(X)+A,X,0,2*%PI,LABEL(AMPLITUDE,PHASE))$
|
||
produces a plot with an XLABEL of "AMPLITUDE=2 PHASE=3.1416"
|
||
|
||
If LABEL doesn't do the right thing in your opinion, now is the
|
||
time to complain. For instance there is no way to get just
|
||
<evaluation> in the result of LABEL. If you can think of a way
|
||
to do this, let me know. What about commas in place of spaces?
|
||
|
||
BEE@MIT-MC 12/29/77 17:22:17
|
||
To: INFO-PLOT2 at MIT-MC
|
||
The bug causing betas to appear on plots should be fixed.
|
||
|
||
JLK@MIT-MC 12/20/77 16:55:05
|
||
To: INFO-PLOT2 at MIT-MC
|
||
The FASL files for the PLOT2 package have been renamed.
|
||
Basically the NFASL files are now FASL, and the FASL files are OFASL.
|
||
For the moment, links exist from the NFASL files to FASL but these
|
||
will be flushed eventually. Please update your init files, etc.
|
||
|
||
CFFK@MIT-MC 12/17/77 21:38:54 Re: Minor improvements
|
||
To: INFO-PLOT2 at MIT-MC
|
||
[1] LOADPLOTS prints "FOO PLOTS being loaded" only if LOADPRINT is TRUE
|
||
or LOADFILE.
|
||
[2] REPLOT if it has to load the plot from a file will only say so if
|
||
LOADPRINT is TRUE or AUTOLOAD.
|
||
[3] The Macsyma simplifier leaves PLOTS alone. Thus it is possible to
|
||
rename plots by FOO:BAR$ (assuming BAR is a PLOT). This is not a
|
||
recommended practise however, since FOO will not be on the PLOTS list,
|
||
and KILLPLOTS(BAR) will also kill FOO (since they share the same
|
||
storage).
|
||
|
||
BEE@MIT-MC 12/03/77 11:35:48
|
||
To: INFO-PLOT2 at MIT-MC
|
||
It is now impossible to have both plotmode as XGP and GOULD at the same time. Before
|
||
this used to be necessary to get plots for the XGP. Now plotmode(XGP) is exactly like
|
||
plotmode(GOULD) except that the output goes to the XGP instead. This might cause
|
||
some errors in batch files of people who used to say plotmode(X,G) or something
|
||
like that.
|
||
|
||
BEE@MIT-MC 12/01/77 14:12:34
|
||
To: INFO-PLOT2 at MIT-MC
|
||
A new tekplt package has been installed. The new package has some variables renamed for
|
||
consistency. This is a listing of the variables that have changed.
|
||
|
||
Old variable New variable What it does
|
||
--------------------------------------------
|
||
GOULDTHICK PLOTTHICK controls how thick the lines are on XGP or GOULD plots
|
||
GOULDSCALE PLOTSCALE controls the scaling of a plot on XGP or GOULD
|
||
XGPLFTMAR PLOTLFTMAR controls the lftmar on plots
|
||
XGPBOTMAR PLOTBOTMAR controls the bottom margin on plots
|
||
|
||
These should be the only changes visible.
|
||
|
||
JLK@MIT-MC 11/21/77 17:05:07
|
||
To: INFO-PLOT2 at MIT-MC
|
||
Does anyone use the XGPSAVE command? If so, you most likely want to be
|
||
using PLOTMODE(XGP,...) instead. In any case, I am considering changing
|
||
it to use the same format used by GOULD plots (i.e. it will no longer use
|
||
the XP program). If there is a demand for it, the old style XGPSAVE
|
||
command may be kept around as OLDXGPSAVE. It might be more useful to
|
||
have a command called XGPFILE which takes a file saved by NAMEFILE and
|
||
prints it on the XGP. GOULDFILE would be good too. Then there would be
|
||
no need for XGPSAVE.
|
||
Comments?
|
||
|
||
BEE@MIT-MC 11/05/77 15:09:05
|
||
To: INFO-PLOT2 at MIT-MC
|
||
PLOT2 now outputs plots directly to the XGP, as mentioned in a previous message.
|
||
There are two new variables XGPLFTMAR and XGPBOTMAR. These adjust the bottom margin
|
||
and leftmargin for the XGP plots. These default to a value such that the
|
||
plots will fit comfortably on an 8 1/2 x 11 page.
|
||
|
||
JLK@MIT-MC 11/04/77 17:38:07
|
||
To: INFO-PLOT2 at MIT-MC
|
||
There is now a simpler way to get plots out on the XGP (and they look
|
||
better). Simply do PLOTMODE(XGP, ...) where ... is the correct plot
|
||
mode for your terminal (i.e. GR for Grinnell TV's, T for Tektronix, or
|
||
D for character display terminals like VT52's). Then you can use
|
||
linefeed at the end of the display of a plot, or HARDCOPY(); to cause
|
||
a hardcopy to be submitted to the XGP (it is processed by the Gould
|
||
spooler first). If AI is up and the queuing for the XGP is successful,
|
||
you will receive a message from the XGP spooler when your plot is
|
||
printed. If AI is down, your plot will be processed into an XGP scan
|
||
file, .GLPT.; > SCN, and the Gould spooler will send you a warning
|
||
message telling you that AI is down. You must copy the SCN file to AI
|
||
yourself when AI comes up and queue it by doing
|
||
:XGP ;SCAN AI:dir;* SCN
|
||
where dir is the directory on AI to which you copied the files (use
|
||
MACSYM; if you don't know of any other directory to use).
|
||
|
||
If you use the NAMEFILE command instead of HARDCOPY or linefeed,
|
||
you can print the plot file later by doing
|
||
:GTPL dir;fn1 fn2/a/o[x]
|
||
when dir, fn1, fn2 are the directory, first file name, and second file
|
||
name of the plot file stored with NAMEFILE.
|
||
|
||
XGPSAVE may be flushed in the future if there is no further demand for
|
||
it.
|
||
|
||
CFFK@MIT-MC 10/18/77 23:10:32 Re: MINOR CHANGE TO REPLOT4
|
||
To: INFO-PLOT2 at MIT-MC
|
||
REPLOT4 ONLY PUTS THE DATE ON THE TOP RIGHT PLOT (ASSUMING DATEPLOT:
|
||
TRUE$) THE EXCEPTION IS IF YOU ONLY ASK REPLOT4 TO PLOT 1 PLOT (BY GIVING
|
||
IT ONLY 1 ARGUMENT) IN WHICH CASE THE DATE GOES ON THAT PLOT.
|
||
|
||
|
||
JLK@MIT-MC 10/12/77 12:45:42
|
||
Re single date for REPLOT4, it would also be nice to have a single title
|
||
as well (of course it doesn't make much sense to allow single x and y
|
||
labels, but allowing both individual and overall titles would be nice).
|
||
|
||
JLK@MIT-MC 10/11/77 23:00:55
|
||
To: (BUG PLOT2) at MIT-MC
|
||
It would be nice if there were a way to get a single DATE printed out
|
||
on REPLOT4 plots, rather than having it redundantly printed 4 times, once
|
||
on each plot. A single date in the upper right would suffice.
|
||
CFFK@MIT-MC 10/05/77 21:49:10
|
||
To: EAK at MIT-MC
|
||
CC: PLOT2 at MIT-MC, CBF at MIT-MC
|
||
THE SLEEP PRIOR TO THE OUTPUT OF THE ENTER GRAPHICS COMMAND
|
||
HAS BEEN CHANGED TO AN OUTPUT OF 2 SPACES.
|
||
|
||
CFFK@MIT-MC 09/22/77 20:57:21
|
||
To: EAK at MIT-MC
|
||
CC: PLOT2 at MIT-MC, JLK at MIT-MC
|
||
Well I've implemented the stop and start sequences
|
||
for your tektronix. You should do PLOTMODE(TEK) (assuming that isn't
|
||
already the default) and TEK4662:TRUE$ (this can be doen at any time).
|
||
Could you give it a try? I have no way of checking it where I am.
|
||
|
||
JLK@MIT-MC 08/31/77 23:53:16
|
||
To: INFO-PLOT2 at MIT-MC
|
||
The bug were echoing of type-in gets permanently turned off, has
|
||
hopefully been fixed. This happened only when your MACSYMA was
|
||
continued while the plot was being computed (I.e. the TTY returned
|
||
to DDT). If further occurrances are observed, please send bug mail.
|
||
|
||
CFFK@MIT-MC 07/14/77 11:32:54 Re: PLOT2 in NEWIO MACSYMA
|
||
To: INFO-PLOT2 at MIT-MC
|
||
I've encountered a couple of bugs with the NEWIO version of
|
||
PLOT2. Both are fixed now. Be on the lookout for others and
|
||
let me know of them as soon as possible.
|
||
|
||
CFFK@MIT-MC 06/18/77 21:38:24 Re: Pattern generation using Fast Fourier Transforms
|
||
To: INFO-PLOT2 at MIT-MC
|
||
The following little program might amuse you. It plots pretty patterns.
|
||
(LOADFILE(FFT,FASL,DSK,SHARE),LOADFILE(ARRAY,FASL,DSK,SHARE));
|
||
(ARRAY(FR,FLOAT,255),ARRAY(FI,FLOAT,255));
|
||
PP():=(FILLARRAY(FR,[0.0]),FILLARRAY(FI,[0.0]),
|
||
THRU 2 DO FR[RANDOM(256)]:1.0,
|
||
FFT(FR,FI),
|
||
GRAPH2([FR,[FR[0],FR[255]]],[FI,[FI[0],FI[255]]]));
|
||
DO PP();
|
||
|
||
CFFK@MIT-MC 06/13/77 15:35:31
|
||
To: INFO-PLOT2 at MIT-MC
|
||
[1] PLOTRESET should no longer give Illegal REMVALUE attempt if e.g.
|
||
YMAX has a value but is not on the VALUES list.
|
||
[2] If CALCOMPNUM0 has a numeric value, then the 3D plotting functions
|
||
(PLOT3D, CONTOURPLOT2) will use that value instead of CALCOMPNUM. The
|
||
default is for CALCOMPNUM0 to be unbound; thus it is compatible with
|
||
the old scheme.
|
||
[3] Quitting in the middle of a plot resets CLEAR and WAIT to TRUE;
|
||
thus when quitting from inside a multiple plot [PLOT2(..., FIRST),
|
||
... , PLOT2(..., LAST)], you will not be left in an abnormal state.
|
||
|
||
CFFK@MIT-MC 06/13/77 11:52:43
|
||
To: INFO-PLOT2 at MIT-MC
|
||
PLOT2 tries not to change the DDT defaults for ^F and ^R (:PRINT ).
|
||
Changed functions are HARDCOPY, XGPSAVE, NAMEFILE etc.
|
||
|
||
CFFK@MIT-MC 06/08/77 22:26:00
|
||
To: INFO-PLOT2 at MIT-MC
|
||
APD wants to include some of the PLOT2 documentation in the new MACSYMA
|
||
manual. PLOT2 USAGE is probably to long as it stands, so I would
|
||
welcome suggestions as to what to include and leave out. Suggestions
|
||
for examples also welcome.
|
||
|
||
JLK@MIT-MC 05/31/77 15:20:38
|
||
To: PLOT2 at MIT-MC
|
||
DON'T USE REMVALUE IN PLOTRESET.
|
||
|
||
CFFK@MIT-MC 05/29/77 12:17:19
|
||
To: PLOT2 at MIT-MC
|
||
Distinguish AI-TVs and Grinnells.
|
||
|
||
|
||
JLK@MIT-MC 05/18/77 16:51:18
|
||
It would be nice if at the end of a plot, typing ? gave you a little menu
|
||
of options (in case you forgot). Looking breifly at PLOT2 USAGE I can see
|
||
I better read over it, since there are many things there I was not aware of!
|
||
(or I have forgotten about...)
|
||
cffk@MIT-MC (Sent by JLK@MIT-MC) 05/20/77 13:29:39
|
||
To: FCR at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
You could store the numbers in the lists in arrays (Use FILLARRAY
|
||
in ARRAY FASL DSK SHARE). Of course it might take as long to
|
||
store the numbers in the arrays, as it takes for GRAPH2 to deal
|
||
with the lists. You could win better, if you stuck your data
|
||
in arrays rather than lists in the first place.
|
||
|
||
cffk@MIT-MC (Sent by JLK@MIT-MC) 05/20/77 13:18:08
|
||
To: FCR at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
You mean GRAPH2([1.0,2.0 .. ], .. ); as compared with GRAPH2(<array>, ..);
|
||
Second one is a lot more effecient (of <array> must be declared floating).
|
||
If mean PLOT2(list[I],I, .. ); as compared with PLOT2(arr[I],I, .. );
|
||
then they are equally ineffecient.
|
||
|
||
CFFK@MIT-MC 05/18/77 17:00:33
|
||
To: PLOT2 at MIT-MC
|
||
Can't do shading or nice numbers or writing on plot.
|
||
|
||
CFFK@MIT-MC 05/17/77 00:52:43
|
||
To: PLOT2 at MIT-MC
|
||
Implement CALCOMPNUM0 for 3D plots
|
||
|
||
CFFK@MIT-MC 05/15/77 23:06:12
|
||
To: INFO-PLOT2 at MIT-MC
|
||
I've rearranged the files that PLOT2 lives in. Please let me
|
||
know of any problems. Those with autoload properties in their
|
||
MACSYM (INIT) files: Please note that the files now live on
|
||
SHARE;. Change your (INIT) files to reflect SHARE;PLOT2 LISP.
|
||
There will be links on my directory to the relevent files on
|
||
SHARE; for a while.
|
||
|
||
CFFK@MIT-MC 05/15/77 21:55:27
|
||
To: PLOT2 at MIT-MC
|
||
fix contours to work like ticks
|
||
|
||
CFFK@MIT-MC 05/11/77 21:38:30
|
||
To: FFM at MIT-MC
|
||
CC: PLOT2 at MIT-MC
|
||
You can partially win on AI-TV's by doing PLOTMODE(DISPLAY,XGP); or PLOTMODE
|
||
(XGP,DISPLAY); (These have slightly different meanings -- look in the document-
|
||
ation, or experiment.) Then the plots will come out as crumby character
|
||
plots on the TV's but internally a full resolution plot is remembered about.
|
||
The beautiful full resolution plot can then be printed on the XGP by doing
|
||
XGPSAVE(">",SCN,DSK,FFM); (or some other file-spec, this is recommended
|
||
though) and in DDT :XGP ;SCAN MC:FFM;*
|
||
(The * means all files >,SCN). (You might want to copy the files over
|
||
to AI first as if MC/AI is sluggish you might get a gap in your plot.)
|
||
WORLDPLOT hasn't been hacked for a long time.
|
||
|
||
|
||
CFFK@MIT-MC 03/15/77 16:36:07
|
||
What PLOT2 doen't do
|
||
|
||
BROM@MIT-MC 03/15/77 16:33:56
|
||
FIX UP THE DOCUMENTATION ABOUT ENTERGRAPH.
|
||
ALSO INCLUDE SOMETHONG ABOUT SETTING THE SWITCHES CLEAR AND
|
||
WAIT.
|
||
|
||
CFFK@MIT-MC 03/15/77 14:27:15
|
||
^^ in Plot2 should reset CLEAR and WAIT.
|
||
|
||
JLK@MIT-MC 03/08/77 15:12:37 Re: PLOT2 DOCUMENTATION
|
||
I have had several requests for help in generating figure quality
|
||
plots for view graphs etc. If you hack PLOT2 doc for INFO you
|
||
should somewhere have a section on generating specially configured
|
||
plots with examples (I doubt if all this winning documentation of
|
||
yours will stop people from asking questions though...)
|
||
CFFK@MIT-MC 03/21/77 21:34:41
|
||
To: INFO-PLOT2 at MIT-MC
|
||
The Grinnell TV's in Building 38 are now up and supported by PLOT2. The
|
||
new PLOTMODE is one of GRINNELL, or GR. (E.g. PLOTMODE(G,GR); plots
|
||
for the Gould and the Grinnells.) Although they only have a resolution
|
||
of 512*512, all coordinates are divided by 2 before being plotted, so
|
||
WINDOW etc. should be chosen as though the screen coordinates ran from
|
||
0 to 1023 each way. The default WINDOW for Grinnells is thus
|
||
[0,1023,0,1023] (the entire screen).
|
||
PLOT2 decides you're on a Grinnell if using the procedure described in
|
||
Sec 15.3 of PLOT2 USAGE, it thinks you're an Imlac, but your page height
|
||
is 46 or less.
|
||
(Imlac users elsewhere: let me know if this screws you up.)
|
||
|
||
CFFK@MIT-MC 03/17/77 22:28:48
|
||
To: INFO-PLOT2 at MIT-MC
|
||
A very pernicious bug has cropped up recently. Its symptoms are that
|
||
after a plot, you cannot type anything to your MACSYMA, you cannot quit
|
||
or anything useful like that. I am trying to find a fix for this bug,
|
||
but in the meanwhile the corrective action you should take, if it
|
||
strikes you is:
|
||
^Z :XFILE CFFK;PLOT2 FIX
|
||
$P
|
||
|
||
CFFK@MIT-MC 03/01/77 19:04:50 Re: Major revision of the documentation
|
||
To: INFO-PLOT2 at MIT-MC
|
||
Do :PRINT SHARE;PLOT2 USAGE
|
||
Please let me know of any inaccuracies, obscurities etc.
|
||
SHARE;PLOT2 RECENT has been renamed PLOT2 ARCHIV, and a new
|
||
PLOT2 RECENT started. PLOT2 DEMO has been rewritten. Old
|
||
demo is still to be found (for now) in PLOT2 ODEMO.
|
||
|
||
CFK@MIT-MC 01/31/77 12:44:35
|
||
To: INFO-PLOT2 at MIT-MC
|
||
CC: JPG at MIT-MC
|
||
|
||
PLOT2 in OLDIO Macsyma loses because a character outputting
|
||
function (TYO8) has been removed, and use of PLOT2 thoroughly
|
||
screws up the Macsyma.
|
||
|
||
This problem has been fixed. Ignore the message it came in.
|
||
|
||
CFK@MIT-MC 01/30/77 19:23:42
|
||
To: INFO-PLOT2 at MIT-MC
|
||
CC: JPG at MIT-MC
|
||
Bah! PLOT2 currently only works in NEWIO Macsyma (gotten via QA^K
|
||
at present). PLOT2 in OLDIO Macsyma loses because a character
|
||
outputting function (TYO8) has been removed, and use of PLOT2 thoroughly
|
||
screws up the Macsyma. This bug may be fixed by the time you read this;
|
||
but Beware!
|
||
|
||
CFK@MIT-MC 01/09/77 12:54:29 Re: PLOT2 in Newio
|
||
To: INFO-PLOT2 at MIT-MC
|
||
PLOT2 has been modified to run in Newio Macsyma (QA). The modified
|
||
files are APLOT2 NFASL, TEKPLT NFASL and WORLD NFASL. SHARE;PLOT2 LISP has
|
||
been altered to load these files if you're in Newio. Let me know of any
|
||
problems.
|
||
|
||
CFK@MIT-MC 11/06/76 13:22:36
|
||
To: INFO-PLOT2 at MIT-MC
|
||
/* MHR@MIT-AI 11/02/76 16:03:20
|
||
1) Is there a way to have the numbers which label the axes
|
||
appear outside of the plotting window? Now they are
|
||
intersected by the axes, and sometimes by the curves.
|
||
|
||
Suppose you want do PLOT2(X,X,1,2); then you could do */
|
||
BLOCK([YMAX,YMIN,XMAX,XMIN,DATEPLOT,NOPRINT,XAXIS,YAXIS,WINDOW,OWINDOW],
|
||
WINDOW:OWINDOW:[100,1023,100,790],
|
||
/* allow 100 raster units for writing in later*/
|
||
DATEPLOT:XAXIS:YAXIS:FALSE, /* turn off things that print*/
|
||
NOPRINT:TRUE,
|
||
PLOT2(X,X,1,2,FIRST), /* plot*/
|
||
YMAX:YMAX1,YMIN:YMIN1,XMAX:XMAX1,XMIN:XMIN1, /* save XMAX etc*/
|
||
BLOCK([XMIN,XMAX,YAXIS], /* push XMIN etc.*/
|
||
XMIN:-1,XMAX:1,
|
||
WINDOW:OWINDOW+[0,0,0,0],WINDOW[1]:0,WINDOW[2]:200,
|
||
YAXIS:ALL,
|
||
GRAPH2([],[])), /* plot Y axis */
|
||
BLOCK([YMAX,YMIN,XAXIS], /* do same for X axis*/
|
||
YMAX:1,YMIN:-1,
|
||
WINDOW:OWINDOW+[0,0,0,0],WINDOW[3]:0,WINDOW[4]:200,
|
||
XAXIS:ALL,
|
||
GRAPH2([],[],LAST)));
|
||
|
||
/* 2) When I use dashed lines of type [7,3], the resulting dashes
|
||
seem to be less straight than a corresponding solid line.
|
||
Is this an artifact of the particular line type I'm using,
|
||
is this an illusion, or is it because the plotting algorithm
|
||
different when the lines are not solid?
|
||
|
||
This is because dashed lines are implemented by drawing a sequence of
|
||
small undashed lines. Since these lines are about 4 - 10 raster units
|
||
long, there are only a small number of directions in which they can
|
||
point, and the chances are that none of these directions coincide with
|
||
the direction of the dashed line as a whole. Hence dashed lines often
|
||
appear to weave about.
|
||
|
||
Tektronix Users.
|
||
I have recently wirtten a function that allows you to use the cross-
|
||
hairs on a Tektronix. It is still in rather an embryonic stage, but
|
||
you may want to try it out. To load it do:
|
||
LOADFILE(EDIT,">",DSK,CFK);
|
||
The main function in it is called EDIT, and its intention is to allow
|
||
you to enter labels and various odd lines onto an existing plot. To
|
||
use it you must have a function of no arguments, whose body is a BLOCK
|
||
and the last statement in the BLOCK must be EXITGRAPH(). If the
|
||
function is P(), say then P(); should plot as much of your picture as
|
||
can be conveniently specified by PLOT2, GRAPH2 etc.
|
||
|
||
EDIT(P); will execute P(), but will stop before the final EXITGRAPH(),
|
||
and display the cross-hairs. By typing various letters EDIT will enter
|
||
commands into the function P directly before the EXITGRAPH(),
|
||
|
||
Allowed letters are:
|
||
Rubout, exit from EDIT
|
||
Space, save the location of the crosshairs
|
||
S or s, enters a SETPOINT command into your function
|
||
V or v, enters a VECTOR command (should be preceded by a
|
||
SETPOINT or another VECTOR command)
|
||
L or l, draws a line between the saved location and the
|
||
crosshairs and enters it in the function.
|
||
P or p, reads text from the keyboard and prints it left
|
||
justified at the cursor. Echoing is suppressed while
|
||
it is reading the text. Reading continues until a
|
||
Carriage-Return is encountered.
|
||
C or c, same as P, except the text is centered.
|
||
R or r, same as P, except the text is right justified
|
||
|
||
Remember that after exiting EDIT your function will have been changed,
|
||
so that P(); should give you the updated PLOT. Items maybe be removed
|
||
using the MACSYMA editor, or TECO. To draw a picture from scratch you
|
||
could do:
|
||
|
||
HOUSE():=BLOCK([],ENTERGRAPH(),EXITGRAPH());
|
||
EDIT(HOUSE); now with a sequence of S's and V's you can draw a house
|
||
terminating it with a Rubout.
|
||
HOUSE(); draws your house.
|
||
|
||
As an example consider the following program, that plots a labeled
|
||
figure. All the printing commands (GHPRINT( ... )) were entered using
|
||
EDIT. (Batch this in and do P(), to see how it looks.) */
|
||
|
||
( R : 47.5,
|
||
AAA : 1.13128698,
|
||
BB : 1.29027253 );
|
||
ATHRESH(NU) := BB/AAA*SQRT(ABS((NU-NU1)*SIN(%PI*NU))*R^3/NU^2);
|
||
PL(NU1) := ( PLOT2(ATHRESH(NU), NU, (NU1+30)/2, NU1, SAME),
|
||
PLOT2(ATHRESH(NU), NU, NU1, NU1+IF NU1 > 30 THEN 0.2 ELSE -0.2,
|
||
SAME) );
|
||
NUL :[29.62,29.97,30,30.11,30.23,30.28,30.42];
|
||
ISLANDL: [1.85,.45,0,1.67,1.45,1.78,2.03];
|
||
STOCHL :[4,3.7,4,3.5,3.9,3.6,3];
|
||
PLOTMODE(G, T);
|
||
BOTHCASES:TRUE;
|
||
P():=
|
||
BLOCK(
|
||
[CALCOMPNUM, WINDOW, CLEAR, WAIT, NOPRINT, DATEPLOT, XAXIS, YAXIS,
|
||
YMIN, YMAX, XMIN, XMAX],
|
||
AA:7,
|
||
DEFINESYMBOL(1,SQRT(2.)*[[0,AA],[0,-AA],[AA,0],[-AA,0],[0,0]]+.5),
|
||
DEFINESYMBOL(2,[[AA,AA],[-AA,-AA],[AA,-AA],[-AA,AA],[0,0]]),
|
||
OWINDOW:[0,1023,5,790],
|
||
WINDOW:OWINDOW+[100,-20,200,-20],
|
||
NOPRINT:TRUE, DATEPLOT:FALSE,
|
||
TICKNUM:-[10,5], TICKSIZE:2*AA,
|
||
YAXIS:TRUE, XAXIS:TRUE,
|
||
YMAX:4.5, YMIN:0,
|
||
XMIN:29.5, XMAX:30.5,
|
||
GRAPH2([],[],FIRST), /* Plots the axes with tickmarks, but no
|
||
labels */
|
||
YAXIS:XAXIS:FALSE,
|
||
CALCOMPNUM:3,
|
||
PLOT2(ABS(NU-30)/30*SQRT(%PI*R^3/2)*BB/AAA,NU,29.5,30.5),
|
||
CALCOMPNUM:10,
|
||
FOR DE IN [1/6.0,1/5.0,1/4.0,1/3.0,1/2.0,2/5.0]
|
||
DO (PL(30.0+DE),PL(30.0-DE)),
|
||
GRAPH2(NUL,[ISLANDL,STOCHL],[29,19]),
|
||
WINDOW:OWINDOW,
|
||
GRAPH2([],[]), /* This is so that the new WINDOW gets used for
|
||
GHPRINT calls */
|
||
ENTERGRAPH(),
|
||
CLEAR:WAIT:TRUE, /* So that the EXITGRAPH() waits and the next
|
||
plot clears the screen */
|
||
GHPRINT("0",87,203,2),
|
||
GHPRINT("4",87,688,2),
|
||
GHPRINT("29.5",99,167,1),
|
||
GHPRINT("30",553,167,1),
|
||
GHPRINT("30.5",1004,167,1),
|
||
GHPRINT("1",587,312,2),
|
||
GHPRINT("2",986,287,2),
|
||
GHPRINT("5",924,230,0),
|
||
GHPRINT("3",862,230,0),
|
||
GHPRINT("4",789,230,0),
|
||
GHPRINT("5",742,230,0),
|
||
GHPRINT("6",686,257,2),
|
||
GHPRINT("a",68,447,2),
|
||
GHPRINT("v",371,142,1),
|
||
EXITGRAPH())$
|
||
|
||
CFK@MIT-MC 08/31/76 00:46:40 Re: Minor Change to PLOTMODE
|
||
To: INFO-PLOT2 at MIT-MC
|
||
PLOTMODE:[G,I]; and PLOTMODE:T; are now valid ways of doing
|
||
PLOTMODE(G,I); and PLOTMODE(T); respectively. (This change is to make
|
||
PLOTMODE compatible with other MACSYMA switch-like functions e.g. FPPREC.)
|
||
|
||
CFK@MIT-MC 07/31/76 15:50:08
|
||
To: WHG at MIT-MC, TBW at MIT-MC, RXG at MIT-MC, ROBT at MIT-MC, MHR at MIT-MC
|
||
To: ITO at MIT-MC, FCR at MIT-MC, DBA at MIT-MC, CMA at MIT-MC, CAS at MIT-MC
|
||
To: ALEPH at MIT-MC, INFO-PLOT2 at MIT-MC, MEZRAH at MIT-ML
|
||
PLOT2 can be used to plot on character-only terminals. The intention is
|
||
to allow a preview of output on a higher resolution device like the XGP.
|
||
The relevant calls to PLOTMODE are:
|
||
|
||
PLOTMODE(P); or PLOTMODE(PRINTING); for plotting on a printing terminal.
|
||
PLOTMODE(D); or PLOTMODE(DISPLAY); for plotting on a terminal that
|
||
allows cursor positioning
|
||
|
||
These calls can, of course, be combined with X (XGP) or G (GOULD).
|
||
(E.g. PLOTMODE(X,D);)
|
||
|
||
Before making a call to PLOTMODE you might want to change the value of
|
||
CHARRATIO (default value 1.5). This should equal the ratio of
|
||
line-pitch to the character-pitch for your terminal. (This enables the
|
||
EQUALSCALE:TRUE mode to work, and ensures that what you see on your
|
||
screen/paper is the same shape as what will come out on the XGP.)
|
||
|
||
The default line type (type 0) is drawn with .'s. The other line
|
||
types (1 - 9) are drawn with other symbols (*, #, $ etc.). The symbols
|
||
(specified by the tens digit of the line type) are defined by the
|
||
letters (A, B, C etc.). No attempt is made to actually draw a dotted
|
||
line, or a fancy symbol on the terminal (although they will come out on
|
||
the XGP). Unfortunately if you choose a line type that specifies both a
|
||
line and a symbol, the line will in most cases overprint and so erase
|
||
the symbol.
|
||
|
||
The line and symbol characters may be changed using the DEFINEDASH and
|
||
DEFINESYMBOL functions, by suppliying as their second arguments, an
|
||
integer (the ASCII value of the char to be used) or a character (e.g. A,
|
||
"1", \$ etc. - the character itself). In order to specify no line (or
|
||
no symbol) give 0 as the second argument (not space or 32, as this will
|
||
cause existing lines, axes etc, to get over-written and, maybe erased,
|
||
by spaces).
|
||
|
||
The default line and symbol character are:
|
||
0 1 2 3 4 5 6 7 8 9
|
||
lines . * # $ % & + @ - none
|
||
symbols none A B C D E F G H I
|
||
|
||
Unless you set the PLOTMODE before PLOT2 is loaded, PLOTMODE gets
|
||
initiallized according to LISP's TTY variable as follows:
|
||
TTY PLOTMODE
|
||
0 PRINTING
|
||
1 DISPLAY (datapoint)
|
||
2 DISPLAY (datapoint)
|
||
4 TEKTRONIX
|
||
5 DISPLAY (TV. these may soon be supported)
|
||
6 PRINTING (memowreck)
|
||
7 IMLAC (if eraseable) (software tty)
|
||
TEKRONIX (otherwise)
|
||
8 PRINTING (terminet)
|
||
9 DISPLAY (other display)
|
||
|
||
CFK@MIT-MC 07/05/76 12:42:03 Re: various changes to PLOT2
|
||
To: TBW at MIT-MC, RXG at MIT-MC, ROBT at MIT-MC, OVER at MIT-MC, MHR at MIT-MC
|
||
To: MDT at MIT-MC, ITO at MIT-MC, FCR at MIT-MC, FBN at MIT-MC, INFO-PLOT2 at MIT-MC
|
||
To: MEZRAH at MIT-ML
|
||
summary:
|
||
1] more effecient evaluation of the first arg of the plotting functions
|
||
2] better scheme for naming and saving plots - NAMEPLOT, SAVEPLOTS etc.
|
||
3] REPLOT takes all the optional args PLOT2 takes, plus NONE and LIN
|
||
4] REPLOT can replot several plots, REPLOT([FOO,BAR])
|
||
5] negative TICKNUM to stop rounding out to nearest tickmark
|
||
6] negative ranges for PLOT2 etc allowed. bigfloats allowed.
|
||
7] DONT optional arg to suppress plotting
|
||
8] DATEPLOT governs dating of plot
|
||
9] hardcopy on gould 5200
|
||
10] XGPSAVE has been split in two.
|
||
11] arbitary transformations between data points and screen points
|
||
12] polar, log-log, lin-log and log-lin plots
|
||
13] first arg to 3d plotting functions is a z coordinate
|
||
14] crosshatching implemented for 3d plots, CROSSHATCH
|
||
15] perspective view for 3d plots more general, defaults better
|
||
16] scaling for 3d plots changed
|
||
17] GRAPH3D function implemented
|
||
18] multiple contour plots are allowed
|
||
19] contours chosen differently, INTEGER value for CONTOURS
|
||
20] LABELCONTOURS governs contour labeling
|
||
21] internal scaling info available, WINDOW1, XMAX1 etc.
|
||
|
||
details:
|
||
1] effecient evaluation of first arg of PLOT2, PLOT3D and of first two
|
||
args of PARAMPLOT2.
|
||
|
||
if what was normally the second arg to PLOT2 is missing, the first arg
|
||
is treated as a function name. the function must be a function of one
|
||
arg (or two args in for PLOT3D) and must be either a translated or
|
||
compiled function which returns a floating point number when it is given
|
||
floating point arg (or integer arg if the INTEGER arg to PLOT2 is
|
||
given). this is supposed to provide a quicker evaluation of the first
|
||
arg and for that reason NO checking is done on the result. if the wrong
|
||
sort arg is returned, you will get garbage plotted. with PARAMPLOT2
|
||
either both the first and second args must be of this form or neither of
|
||
them.
|
||
|
||
examples:
|
||
TRANSLATE:TRUE;
|
||
F(X):=(MODEDECLARE(X,FLOAT),EXP(-X*X));
|
||
PLOT2(F,-2,2); PLOT2(F,[-2,-1,0,1,2]);
|
||
ARRAY(V,FLOAT,10); FOR I FROM 0 THRU 10 DO V[I]:FLOAT(I*I); PLOT2(F,V);
|
||
G(X,Y):=(MODECLARE(X,FLOAT),EXP(-X*X-Y*Y));
|
||
PLOT3D(G,-2,2,-2,2);
|
||
F(X):=(MODEDECLARE(X,FLOAT),COS(X));
|
||
G(X):=(MODEDECLARE(X,FLOAT),SIN(X));
|
||
PARAMPLOT2(F,G,0,2*%PI);
|
||
|
||
2] better scheme for naming and saving plots
|
||
|
||
in order the avoid the gobbling of flonum space when plots are saved,
|
||
they are now saved in arrays. unfortunately this means they can no
|
||
longer be saved in the normal way. this following functions
|
||
manipulate saved plots:
|
||
|
||
NAMEPLOT(<plotname>); names the last call to one of the plotting
|
||
functions <plotname>. <plotname> must be either an atom (e.g. FOOP) or
|
||
an array element (e.g. SNOO[4]). <plotname> is stuck onto the list
|
||
PLOTS so it becomes for instance [<plotname>]. as before <plotname>
|
||
gets stuck on the VALUES or ARRAYS list as appropriate. typing rubout
|
||
at the end of a plot causes a <plotname> to get read in and NAMEPLOT
|
||
applied to it.
|
||
|
||
SAVEPLOTS([<filespec>],<plotname1>,<plotname2>, ... );
|
||
saves the plots <plotname1>, <plotname2> etc in the file <filespec>.
|
||
defaulting of <filespec> is traditional (e.g. FOO is the same as
|
||
FOO,">"). however caution should be exercised if the second filename
|
||
is ">" (see below). [<filespec>] may be omitted altogether in which
|
||
case the defaults (as used by e.g. LOADFILE) are used.
|
||
SAVEPLOTS([<filespec>],ALL); saves all the plots in PLOTS.
|
||
(or else you can say SAVEPLOT([<filespec>],PLOTS); )
|
||
(n.b. SAVEPLOTS may be done within a WRITEFILE, unlike for instance
|
||
SAVE.) another action of SAVEPLOTS is the put the <filespec> into the
|
||
value of the saved plots. thus a subsequent SAVE([<filespec1>],
|
||
FUNCTIONS,<plotname>); although it wont correctly save the data in
|
||
<plotname> will remember what file it was saved in using the SAVEPLOTS
|
||
command. SAVEPLOTS returns a list of plots it succeeded in saving
|
||
|
||
KILLPLOTS(<plotname1>,<plotname2>, ... );
|
||
frees up the array storage used by <plotname1> etc. KILLPLOTS(PLOTS),
|
||
KILLPLOTS(ALL) and KILLPLOTS() will apply KILLPLOTS to all the members
|
||
of PLOTS. note the KILLPLOTS does not KILL <plotname1> etc. and in
|
||
particular it leaves the <filespec> information stuck in by SAVEPLOTS.
|
||
(if you never want to reference a plot again it is probably better to do
|
||
a KILLPLOTS followed by a KILL, since KILLPLOTS takes care to totally
|
||
exorcise the arrays in the plot from the system, something that KILL
|
||
might not manage to do). if you doing a lot of plotting then you may
|
||
get a message like NO CORE ARRAY when trying the name a plot (either by
|
||
invoking NAMEPLOT explicitly or by typing rubout after a plot.) if that
|
||
happens all you have to do is check that all the plots that are
|
||
important are saved using the SAVEPLOTS command, then do KILLPLOTS();
|
||
NAMEPLOT(<plotname>);
|
||
LOADPLOTS(<filespec>);
|
||
loads a file of plots created by SAVEPLOTS. <filespec> defaults exactly
|
||
as with LOADFILE. it also sets the file defaults
|
||
|
||
REPLOT(<plotname>);
|
||
replots <plotname>. if the arrays of <plotname> were destroyed either
|
||
by a KILLPLOTS(<plotname>); or by SAVE'ing <plotname> and LOADFILE'ing
|
||
it into another MACSYMA, REPLOT checks to see if <plotname> was ever
|
||
saved using the SAVEPLOTS command, if it was it finds the <filespec>
|
||
under which it was saved, and then attempts a LOADPLOTS(<filespec>);
|
||
(but taking care not to change the current file defaults) and replots
|
||
<plotname> if it was found in the file. REPLOT understands the old
|
||
format of saved plots.
|
||
|
||
OLDNAMEPLOT(<plotname>); does what SAVEPLOT(<plotname>) used to do,
|
||
i.e. name the last plot <plotname> using the old format for naming
|
||
plots (which could be safely SAVE'd and LOADFILE'd but which took up
|
||
bags of space)
|
||
|
||
examples:
|
||
PLOT2(SIN(X),X,-%PI,%PI); <rubout> SNOO;
|
||
REPLOT(SNOO); replots snoo
|
||
PLOTS; [SNOO]
|
||
KILLPLOTS(); kills the plots in PLOTS i.e. SNOO
|
||
REPLOT(SNOO); SNOO not a plot (and it wasn't saved)
|
||
REPLOT(); replots the last plot (which so happens to be the same as
|
||
SNOO)
|
||
<rubout> ARF;
|
||
SAVEPLOTS([CFK,PLOT,DSK,USERS],ALL); saves the plots in PLOTS
|
||
KILLPLOTS();
|
||
PLOTS; [] there are now no active plots around
|
||
VALUES; [SNOO,ARF] both SNOO and ARF got put on the values list but
|
||
only ARF is any good because:
|
||
SAVE([CFK],VALUES); [[CFK, >, DSK, USERS], SNOO, ARF]
|
||
^Z MACSYM^K
|
||
LOADFILE(CFK,">",DSK,USERS);
|
||
VALUES; [SNOO,ARF]
|
||
PLOTS; []
|
||
REPLOT(SNOO); SNOO not a plot
|
||
REPLOT(ARF); CFK PLOT DSK USERS being loaded
|
||
loading done (ARF is automatically loaded in and replotted)
|
||
PLOTS; [ARF]
|
||
KILLPLOTS(); kills the arrays in ARF but saves the fact that it came
|
||
from CFK PLOT
|
||
REPLOT(ARF); CFK PLOT DSK USERS being loaded loading done etc.
|
||
|
||
note that things would be more difficult in the above example if i had
|
||
called both files CFK,">", for then SAVEPLOTS would put the plots in e.g
|
||
CFK,1 and SAVE would put the VALUES in CFK,2; however ARF would only
|
||
know that it was saved in CFK,">",DSK,USERS so that the automatic
|
||
LOADPLOTS that REPLOT tries to do would attempt to load from CFK,">"
|
||
i.e. CFK,2 caused an error. i would then have to explicitly load up
|
||
ARF by doing LOADPLOTS(CFK,1,DSK,USERS);
|
||
|
||
3] REPLOT can take all the optional args that PLOT2 etc took.
|
||
|
||
they will be merged in with the options in effect for the first arg to
|
||
REPLOT there are also provisions for turning of the options. FALSE is
|
||
treated is a spacing keyword for determining whether a subsequent option
|
||
is a title, ylabel etc. it does not turn off any of the labels, that is
|
||
acheived by the keyword NONE. similarly the use of the transformation
|
||
functions is turned off by the keyword LIN (for LINear). as before
|
||
NOT3D turns off the 3d plotting.
|
||
|
||
examples:
|
||
PLOT2(SIN(X),X,-%PI,%PI,FALSE,FALSE,"THE CAT SAT ON THE MAT");
|
||
title is set to "THE CAT .. "
|
||
REPLOT(TRUE,"X-AXIS");
|
||
replots with title and x label
|
||
REPLOT(TRUE,FALSE,"SIN(X)",NONE);
|
||
replots with same xlabel a new ylabel and no title
|
||
REPLOT(TRUE,FALSE,"Y-AXIS"); replots with new ylabel.
|
||
|
||
4] REPLOT can take a list for its first argument.
|
||
|
||
it then replots the elements of the list. i.e. REPLOT([FOO,BAR],
|
||
<optional-args>); is identical to (REPLOT(FOO,<optional-args>),
|
||
REPLOT(BAR,<optional -args>)); if the first arg to REPLOT is atomic
|
||
then it is evaluated and the evaluated form is used if is a list
|
||
|
||
5] if TICKNUM is negative then PLOT2 won't round your x and y axes out
|
||
to the nearest tick mark.
|
||
|
||
thus with TICKNUM:10; PLOT2(X,X,5,25); has the x and y scales going from
|
||
4 to 26, but with TICKNUM:-10; the scales will go from 5 to 25.
|
||
|
||
6] negative argument ranges are allowed in the plotting functions,
|
||
|
||
e.g. PLOT2(1/X,X,-1,-3); works. the first argument will be calculated
|
||
in the order indicated (thus 1/(-1.0) will be calculated before
|
||
1/(-3.0)) -- this only makes a difference if the computation of the
|
||
first arg changes variables which change the value returned by
|
||
subsequent computation. (however the x and y scales will come out in
|
||
the traditional way, this can be overridden using the SPECIAL option
|
||
with REFLECT as XFUN or YFUN. see below)
|
||
|
||
7] if DONT appears as an optional argument to the plotting functions
|
||
then the points will be calculated, but not plotted.
|
||
|
||
this is primarly of use for creating plots that are to be named and used
|
||
later. DONT is a non-sticky option (like FIRST and LAST), and so
|
||
doesn't get saved when the plot is named (so PLOT2(EXP(X),X,-1,1,DONT);
|
||
REPLOT(); will plot something).
|
||
|
||
8] if DATEPLOT is TRUE (the default) the date and time of the plot will
|
||
be stuck in the top right corner of the plot.
|
||
|
||
right now no effort is made to stop this from interferring with the
|
||
title (this may be changed in the near future). if people dont like
|
||
this i will consider changing the default to FALSE.
|
||
|
||
9] the HARDCOPY command knows about the GOULD 5200 in building 38.
|
||
|
||
if you have done PLOTMODE(G,I); PLOTMODE(G,T); or PLOTMODE(G); will
|
||
queue up your last plot for printing.
|
||
|
||
10] XGPSAVE has been split into two functions, called NAMEFILE and
|
||
XGPSAVE1.
|
||
|
||
NAMEFILE(<filespec>) takes the scratch file that PLOT2 uses in
|
||
PLOTMODE(GOULD); or PLOTMODE(XGP); and copies it to <filespec>.
|
||
|
||
XGPSAVE1(<filespec>) takes the file <filespec> and converts it into XGP
|
||
scan form.
|
||
|
||
XGPSAVE still exists and can be roughly defined as XGPSAVE(<filespec>)
|
||
:= (NAMEFILE(<filespec>),XGPSAVE1(<filespec>));
|
||
|
||
the form XGPSAVE(); now uses the traditional default file names. the
|
||
advantage of this change is that the scratch file (which contains ards
|
||
graphics commands) is usually much shorter than the corresponding XGP
|
||
file, thus if you want to generate several plots for the XGP, but aren't
|
||
able to actually get them out on the XGP for a while then use NAMEPLOT
|
||
now, and convert them to XGP format with XGPSAVE1 at the last minute.
|
||
incidently since the file produced by NAMEFILE is ards graphics commands
|
||
the plot it contains can be viewed by :IMPRNT'ing the file on an imlac
|
||
|
||
|
||
11] arbitrary 2 and 3 dimensional transformations before plotting.
|
||
|
||
if the optional argument SPECIAL appears in the call to PLOT2 then
|
||
immediately before sticking your data up on the screen PLOT2 looks at
|
||
the values of XFUN and YFUN (default values are FALSE). if they are
|
||
FALSE the data gets scaled in the normai way and is plotted without
|
||
further ado. if either is non-FALSE then it should be the name of a
|
||
function of 1 to 3 arguments which defines a transformation between the
|
||
data and the x and y screen coordinates. (the standard linear scaling
|
||
is still applied the result of this transformation.) the functions must
|
||
be translated or compiled and must return a floating point result. the
|
||
way they work is best illustrated by an example.
|
||
|
||
suppose
|
||
XFUN:POLARX;
|
||
and YFUN:POLARY;
|
||
where POLARX and POLARY are defined by
|
||
TRANSLATE:TRUE;
|
||
POLARX(X,Y):=(MODEDECLARE([X,Y],FLOAT),Y*COS(X));
|
||
POLARY(X,Y):=(MODEDECLARE([X,Y],FLOAT),Y*SIN(X));
|
||
(note that X and Y are the THETA and R coorinates of a polar system)
|
||
then PLOT2(1,X,0,2*%PI,SPECIAL);
|
||
produces CALCONMPNUM x data points (ranging from 0 to 2*%PI) and
|
||
CALCOMPNUM corresponding y data points (all 1 in this case). these x
|
||
and y are given to the POLARX and POLARY functions as the first and
|
||
second arguments and the value of these two functions is what is
|
||
supplied to the normal scaling routines. thus this PLOT2 command will
|
||
produce a circle (if EQUALSCALE:TRUE, an ellipse otherwise).
|
||
|
||
the arguments that XFUN and YFUN take are
|
||
1 arg 2 args 3 args
|
||
XFUN x x,y x,y,z
|
||
YFUN y x,y x,y,z
|
||
|
||
the first argument to PLOT2 is considered a y variable, and it's second
|
||
argument an x variable. for PARAMPLOT2 and GRAPH2 the first arguments
|
||
are x variables and the second arguments are y variables. for all the
|
||
2d plotting functions the z variable is 0.0. (see below for the
|
||
coordinate conventions for the 3d plotting functions).
|
||
|
||
12] polar, log-log, lin-log and log-lin plots
|
||
|
||
certain XFUN's and YFUN's are predefined and may be specified in the
|
||
optional args to PLOT2. if POLAR, LOG, LINLOG or LOLIN appear as an
|
||
optional argument then XFUN and YFUN are bound as follows:
|
||
|
||
optional arg. XFUN YFUN
|
||
POLAR POLARX POLARY
|
||
LOG CLOG CLOG
|
||
LINLOG FALSE CLOG
|
||
LOGLIN CLOG FALSE
|
||
|
||
where POLARX and POLARY are defined above and CLOG is defined by
|
||
CLOG(X):=(MODEDECLARE(X,FLOAT),
|
||
(IF X=0.0 THEN -90.0 ELSE LOG(ABS(X)))/LOG(10.0));
|
||
the optional arguments LOG and LOGLIN alse cause PLOT2 to choose
|
||
logarithmic intervals for the x variable. (something less than optimal
|
||
probably happens for PARAMPLOT2 in this case).
|
||
|
||
other XFUN's and YFUN's that may be of use are (omitting the
|
||
MODECLARE's):
|
||
REFLECT(X):=-X$
|
||
YTOX(X,Y):=Y$
|
||
XTOY(X,Y):=X$
|
||
ZTOY(X,Y,Z):=Z$
|
||
ZTOX(X,Y,Z):=Z$ (just the same function really)
|
||
ROTATEX(X,Y):=X*COSANG-Y*SINANG$
|
||
ROTATEY(X,Y):=X*SINANG+Y*COSANG$
|
||
(SINANG and COSANG are set up by
|
||
INITROTATE(ANG):=(COSANG:COS(ANG),SINANG:SIN(ANG));)
|
||
|
||
the various 3d perspective functions are documented below.
|
||
|
||
13] the first argument to the 3d plotting functions is considered
|
||
to be a z coordinate.
|
||
|
||
the optional argument NOT3D now causes YFUN to be bound to ZTOY.
|
||
contour plots dont bind XFUN or YFUN, but you can, so that
|
||
CONTOURPLOT2(Y,X,0,2*%PI,Y,0,1,POLAR); "works".
|
||
|
||
14] crosshatching implemented for 3d plots
|
||
|
||
as a default PLOT3D will crosshatch, i.e. plot lines of constant x as
|
||
well as constant y. you can turn this off by doing CROSSHATCH:FALSE;
|
||
|
||
15] perspective view for 3d plots more general, defaults better.
|
||
|
||
the line of sight for 3d plots is no longer parallel to one of the axes.
|
||
the view is now determined by VIEWPT and CENTERPLOT (defaulted to
|
||
be unbound - like XMAX etc.) VIEWPT may be set to a list of 3 numbers
|
||
and gives the point from which the projection should be made.
|
||
CENTERPLOT may likewise to set to a list of 3 numbers and gives a point
|
||
on the line of sight. the projection will be made onto a plane
|
||
perpendicular to a line joining VIEWPT and CENTERPLOT.
|
||
|
||
if VIEWPT and CENTERPLOT are unbound (the default) then they will be
|
||
chosen as follows: the extreme values of the coordinated are
|
||
determined. this gives the two points min:[xmin,ymin,zmin],
|
||
max:[xmax,ymax,zmax]. CENTERPLOT is chosen as (min+max)/2, and VIEWPT is
|
||
chosen as max+3*(max-min).
|
||
|
||
if CENTERPLOT is FALSE then the old type of perspective view will be
|
||
given (like setting the x and z components of CENTERPLOT to the
|
||
correspondeing components of VIEWPT).
|
||
|
||
PERSPECTIVE operates as before. REVERSE:TRUE causes a left-handed
|
||
coordinate system to be assumed.
|
||
|
||
the defaults were chosen so that they will serve for most purposes -
|
||
note the the default view has z increasing upwards, and x and y
|
||
increasing towards you to the left and right respectively (right and
|
||
left if REVERSE:TRUE).
|
||
|
||
the perspective transformations work by the same XFUN and YFUN mechanism
|
||
documented above. in case to want to try changing the transformation
|
||
here are the names of the functions used (although it is probably quite
|
||
easy to confuse the function that figures out the hidden lines)
|
||
|
||
\3DX and \3DY (standard functions)
|
||
\3DXR and \3DYR (functions when REVERSE:TRUE;)
|
||
NP3DX, NP3DY, NP3DXR and NP3DYR (non-perspective versions of the above)
|
||
all the above with OLD concatenated onto the front (e.g. OLD3DX,
|
||
OLDNP3DXR) give the old perspective views. (all these functions take 3
|
||
args). the type of view is setup by doing
|
||
INITPERSPEC(CX,CY,CZ,VX,VY,VZ);
|
||
where [VX,VY,VZ] the VIEWPT and [CX,CY,CZ] is the CENTERPLOT
|
||
|
||
16] scaling for 3d plots has changed.
|
||
|
||
the old scheme of setting ZMAX XMIN etc, to effect changes in the
|
||
scaling of 3d plots has been flushed. now you may set XMAX, XMIN, YMAX
|
||
and YMIN, where these quantities refer to the result of the 3d
|
||
perspective transformations described above. reasonable values for these
|
||
quantitles may be determined either by applying the transformations to
|
||
the untransformed values or by examining the value of XMAX1, YMIN1 etc.
|
||
(see below).
|
||
|
||
17] GRAPH3D function implemented.
|
||
|
||
right now this is at a fairly rudimentary stage. it takes 3 arguments
|
||
where GRAPH2 took 2 and interprets them as lists of x, y, and z points
|
||
which it uses to draw lines using the 3d transformations. it can be
|
||
used to add lines (e.g. axes) to your 3d plot. the hidden line
|
||
routines are not used.
|
||
|
||
there are now 4 optional arguments that describe the flavor of 3d
|
||
plotting, they are \3D (which uses the 3d transformations but not the
|
||
hidden line routine) HIDE (which is like \3D before, i.e. it uses the
|
||
hidden line routine) CONTOUR (which produces contour plots) and NOT3D
|
||
which plots a projection of the x-z plane.
|
||
|
||
so at present the implied optional args for the plotting routines are:
|
||
function implied optional arg
|
||
GRAPH3D \3D
|
||
PLOT3D HIDE
|
||
CONTOURPLOT2 CONTOUR
|
||
|
||
18] multiple contour plots are allowed.
|
||
|
||
e.g. CONTOURPLOT2([EXP(-X^2-Y^2),Y^2+SIN(X)],X,-%PI,%PI,Y,-2,2,[0,1]);
|
||
|
||
19] contours chosen differently.
|
||
|
||
the guy that figures out the contours to plot no longer uses the routine
|
||
that determines tickmarks. if you want the contours to lie on nice
|
||
values chose CONTOURS judiciously. the contours are chosen to lie
|
||
between ZMAX and ZMIN (rather than YMAX and YMIN) since the first arg to
|
||
CONTOURPLOT2 is considered a z variable. if CONTOURS is the atom
|
||
INTEGER then the contours will be at lnteger levels. the meaning of
|
||
CONTOURS being as list or an integer is unchanged.
|
||
|
||
20] as a default CONTOURPLOT2 will label the contours as best it can
|
||
|
||
this can be turned off by LABELCONTOURS:FALSE.
|
||
|
||
21] various internal scaling information is now available.
|
||
|
||
this may be of use for drawing axes on 3d plots etc. for most of the
|
||
options which default to being unbound (e.g. XMAX, WINDOW) the value
|
||
that PLOT2 assumed can be found by sticking a "1" on the end.
|
||
|
||
e.g.
|
||
PLOT2(X,X,0,10.1); YMAX; ==> YMAX
|
||
YMAX1; ==> 11.0 (the max value of y on the y axis)
|
||
|
||
variables in this class are:
|
||
XMAX1, XMIN1, YMAX1, YMIN1. (these refer to the quantities after the
|
||
transformation functions have been applied)
|
||
ZMAX1, ZMIN1 (only of use for contour plots)
|
||
WINDOW1 (the window in which plotting is done. does not include the
|
||
room used by titles etc.)
|
||
XMAX3D, XMIN3D, YMAX3D, YMIN3D, ZMAX3D, ZMIN3D. (these are the values
|
||
of the 3d data before transforming it to 2d. this will only be up to
|
||
date information if PLOT3D needed to calculate it to determined either
|
||
the default VIEWPT or the default CENTERPLOT.)
|
||
VIEWPT1, CENTERPLOT1 (only of use with 3d plots)
|
||
|
||
|
||
CFK@MIT-MC 06/30/76 11:05:16
|
||
To: PLASMA-GROUP at MIT-MC
|
||
in order to get plots out on the gould printer do: PLOTMODE(G,I);
|
||
or PLOTMODE(G,T); depending whether you're on the imlac or tektronix.
|
||
then HARDCOPY(); will queue your last plot for printing. alternatively
|
||
you can type <linefeed> after your plot. the plots will come out
|
||
in about 5 mins if the gould is connected.
|
||
|
||
CFK@MIT-MC (CFK0) 05/15/76 21:31:27 Re: contour plots
|
||
To: INFO-PLOT2 at MIT-MC
|
||
the contour tracking part of CONTOURPLOT2 has been made somewhat
|
||
smarter. contours now always form closed loops or begin and end
|
||
on the boundary. as an exercise try:
|
||
CONTOURS:10;
|
||
CALCOMPNUM:CALCOMPNUM1:10;
|
||
CONTOURPLOT2(RANDOM(100),X,0,1,Y,0,1);
|
||
let me know of any problems.
|
||
|
||
CFK@MIT-MC 05/14/76 00:18:22 Re: more on contour plots
|
||
To: INFO-PLOT2 at MIT-MC
|
||
you should choose CALCOMPNUM and CALCOMPNUM1 large enough so
|
||
that saddle points are not in adjacent mesh cells. the
|
||
contours dont necessarily form closed curves if this is not
|
||
the case.
|
||
|
||
CFK@MIT-MC 05/14/76 00:07:23
|
||
To: INFO-PLOT2 at MIT-MC
|
||
example:
|
||
CONTOURPLOT2(Z^2/2+COS(X)+X/2,X,-6,6,Z,-3,3);
|
||
(or: PLOT3D(Z^2/2+COS(X)+X/2,X,-6,6,Z,-3,3,CONTOUR);
|
||
the two forms are entirely equivalent)
|
||
|
||
CONTOURPLOT2 works by first creating a 2d array of values of its first
|
||
argument (as with PLOT3D, X takes on CALCOMPNUM values and Z takes on
|
||
CALCOMPNUM1 values). contours are then drawn using linear interpolation.
|
||
what contours are drawn is governed by the option CONTOURS (default
|
||
value 20) which may either be an integer or a list of numbers. if
|
||
CONTOURS is an integer then approximately CONTOURS equally spaced
|
||
contours will be drawn between the min and max values of CONTOURPLOT2's
|
||
first argument (this argument is considered to be a Y variable so
|
||
you can restrict the range in which contours are drawn by setting
|
||
YMIN or YMAX). the decision of what contour levels to use is made by
|
||
the same guy that decides the spacing of tickmarks, so the contours will
|
||
appear at nice values. if you want to decide on the contour levels
|
||
CONTOURS should be a list of those levels (in any order), e.g. CONTOURS:
|
||
[1,0.5,%PI];
|
||
|
||
Notes: [1] the vertical axis for CONTOURPLOT2 is reckoned to be a Z
|
||
axis so you change its scaling by changing ZMIN and ZMAX (not
|
||
YMIN and YMAX, these are used in deciding the contour levels).
|
||
this is for compatibity with PLOT3D. (however the drawing of the
|
||
vertical axis is still governed by YAXIS.)
|
||
[2] internally the data generated by CONTOURPLOT2 is usable by
|
||
PLOT3D (and vice-versa). once one of them has finished plotting
|
||
you can do ^A and set \3D to TRUE (to get the old 3d plots) or
|
||
to CONTOUR (to get a contour plots) or to FALSE (to get a 2d
|
||
projection of the curves). type EXIT; followed by a tab to
|
||
replot the plots the new format. alternatively you can do one
|
||
of the following: REPLOT(TRUE,\3D); REPLOT(TRUE,CONTOUR); or
|
||
REPLOT(TRUE,NOT3D);
|
||
[3] changing the values of CONTOURS and doing REPLOT(); will
|
||
replot your data with the new data. (CONTOURS may also be
|
||
changed in a ^A break.)
|
||
[4] all the normal optional arguments can be provided.
|
||
|
||
Defects:[1] you cant superimpose contour plots by supplying a list as
|
||
the first argument to CONTOURPLOT2. (however you can superimpose
|
||
them with separate calls to CONTOURPLOT2 by supplying the FIRST,
|
||
SAME and LAST optional arguments)
|
||
[2] some slightly higher order interpolation scheme should
|
||
probably be used to make the contours smoother.
|
||
[3] the contours are not marked.
|
||
these defects may be removed in due course.
|
||
|
||
CFK@MIT-MC 05/07/76 23:18:35
|
||
To: INFO-PLOT2 at MIT-MC
|
||
PLOT2 USAGE has been updated. PLOT2 DEMO has been expanded.
|
||
|
||
CFK@MIT-MC 05/07/76 22:26:03
|
||
To: PLOT2 at MIT-MC
|
||
document myoptions fo rplotting options
|
||
|
||
CFK@MIT-MC 05/04/76 12:21:46
|
||
To: PLOT2 at MIT-MC
|
||
TELL IMLAC USERS HOW TO RUN DEMO
|
||
|
||
CFK@MIT-MC 05/03/76 11:37:35
|
||
To: INFO-PLOT2 at MIT-MC
|
||
symbol 9 is now defined by DEFINESYMBOL(9,TRUE); with TRUE
|
||
meaning draw a dot. thus to get a point plot do e.g.
|
||
PLOT2(X,X,0,1,[99]);
|
||
|
||
CFK@MIT-MC 05/02/76 14:37:25
|
||
To: INFO-PLOT2 at MIT-MC
|
||
plot2 will pheep at you when it's expecting you to type a space,
|
||
rubout, carriage-return etc. if you find this annoying, you can
|
||
turn it off by doing PLOTBELL:FALSE$
|
||
|
||
CFK@MIT-MC 05/02/76 11:53:51
|
||
To: PLOT2 at MIT-MC
|
||
document ticknum:0;
|
||
|
||
CFK@MIT-MC 04/13/76 18:30:54 Re: markings on axes
|
||
To: INFO-PLOT2 at MIT-MC
|
||
XAXIS and YAXIS may be set to FALSE, TRUE or ALL (the default) with
|
||
the folowing meanings
|
||
FALSE: dont plot this axis
|
||
TRUE: plot this axis
|
||
ALL: plot this axis and put the values of xmax and xmin at the ends.
|
||
thus if you want to do all your own captioning you should do:
|
||
NOPRINT:XAXIS:YAXIS:TRUE$
|
||
|
||
CFK@MIT-MC 04/13/76 18:25:28
|
||
To: PLOT2 at MIT-MC
|
||
cross reference section v and replot4
|
||
cross reference same option in section ii
|
||
|
||
CFK@MIT-MC 04/06/76 22:10:54 Re: PLOT2 documentation
|
||
To: INFO-PLOT2 at MIT-MC
|
||
SHARE;PLOT2 USAGE has been updated,
|
||
as has SHARE;PLOT2 DEMO.
|
||
|
||
|
||
CFK@MIT-MC 04/01/76 17:41:50 Re: generalization of tick marks
|
||
To: INFO-PLOT2 at MIT-MC
|
||
both TICKSIZE and TICKNUM may now be lists of two numbers
|
||
the first referring to the ticks on the xaxis and the second
|
||
to the ticks on the y axis. thus:
|
||
TICKSIZE:[6,2000];
|
||
TICKNUM:[6,2];
|
||
as before if either is just a number it applies to both axes
|
||
|
||
CFK@MIT-MC 04/01/76 11:00:35 Re: incompatible change to the PLOTMODE function
|
||
To: INFO-PLOT2 at MIT-MC
|
||
PLOTMODE now has more easily remembered arguments.
|
||
|
||
possible arguments are:
|
||
I or IMLAC (plot on imlac)
|
||
T or TEKTRONIX (plot on tektronix)
|
||
G or GOULD (set things up for plotting on gould printer
|
||
not fully implemented yet)
|
||
X or XGP (set things up for plotting on xgp, using XGPSAVE)
|
||
|
||
any of these arguments may be given accept that I and T may
|
||
not appear together.
|
||
|
||
the first argument is used to determine the width and height
|
||
of characters being used.
|
||
|
||
the default settings are PLOTMODE(T); (if PLOT2 thinks you
|
||
are a tektronix) or PLOTMODE(I); (if it thinks you are an imlac)
|
||
|
||
PLOTMODE(); returns a list of the devices PLOT2 is plotting for
|
||
|
||
correspondence between the old and new PLOTMODE functions is:
|
||
PLOTMODE(0) ==> PLOTMODE(T)
|
||
PLOTMODE(1) ==> PLOTMODE(X)
|
||
PLOTMODE(2) ==> PLOTMODE(X,T)
|
||
PLOTMODE(3) ==> PLOTMODE(G,T)
|
||
PLOTMODE(4) ==> PLOTMODE(G)
|
||
with T being replaced by I if you're on an imlac
|
||
|
||
N.B. when plotting on imlacs PLOT2 now uses ards graphics conventions
|
||
this should enable most imlacs connected to ITS systems to work.
|
||
|
||
|
||
CFK@MIT-MC 03/25/76 21:35:32 Re: tty hanging after plot2
|
||
To: INFO-PLOT2 at MIT-MC
|
||
i fixed something that probably was the cause
|
||
of the tty not listening to anything typed at
|
||
it after PLOT2 is done. if this problem
|
||
re-occurs please let me know.
|
||
|
||
CFK@MIT-MC 03/08/76 10:23:25 Re: emptying the output buffer
|
||
To: INFO-PLOT2 at MIT-MC
|
||
the chars to create a plot get put in
|
||
a buffer, and normally only get
|
||
sent when the buffer is full or when the
|
||
plot is complete. the user can force the
|
||
buffer contents to be sent by typing ^\
|
||
(control-shift-L on the tektronix, control-\
|
||
on the imlac). (this is probably only
|
||
of use to to users of WORLDPLOT, which because
|
||
of its ridiculously inefficient implementation
|
||
will sometimes wait until it has gone thru the
|
||
whole world before sending anything out.)
|
||
|
||
CFK@MIT-MC 02/29/76 18:30:11 Re: how the type-list works
|
||
To: INFO-PLOT2 at MIT-MC
|
||
the elements of the type-list in the optional args to
|
||
plot2 are now evaluated. this allows the folowing
|
||
construction:
|
||
for i from 0 thru 10 do (plot2(sin(x)+i,x,0,10,[i]));
|
||
(previously you would have had to do:
|
||
for i from 0 thru 10 do (typel:[i],plot2(sin(x)+i,x,0,10,typel));
|
||
here typel gets evaluated because it is atomic)
|
||
|
||
CFK@MIT-MC 02/29/76 10:33:24 Re: geography
|
||
To: INFO-PLOT2 at MIT-MC
|
||
to plot your favorite portion of the world do
|
||
WORLDPLOT(<min-long>,<max-long>,<min-lat>,<max-lat>);
|
||
the arguments are in degrees. the projection is
|
||
unorthodox. e.g. WORLDPLOT(-10,10,48,60);
|
||
|
||
CFK@MIT-MC 02/21/76 19:58:43 Re: REPLOT4 for plotting 4 plots on the screen
|
||
To: INFO-PLOT2 at MIT-MC
|
||
the function REPLOT4 is available for quickly replotting
|
||
4 plots in different parts of the screen. it can take up
|
||
to 4 arguments which must be saved plots. it plots the
|
||
first plot in the upper left hand corner of the default
|
||
window (or of your own window, if WINDOW has a value), the
|
||
second arg in the upper right hand corner etc. it stops
|
||
when it runs out of things to plot. this function
|
||
takes care of the business of specifying the FIRST and LAST
|
||
options to REPLOT, so dont give them to REPLOT4.
|
||
example:
|
||
PLOT2(X,X,0,1); SAVEPLOT(A1);
|
||
PLOT2(SIN(X),X,0,2*%PI); SAVEPLOT(B[1]);
|
||
PLOT2(X^2,X,0,1); SAVEPLOT(FOO);
|
||
REPLOT4(A1,B[1],FOO);
|
||
|
||
CFK@MIT-MC 02/21/76 16:02:37 Re: plotting things on the SAME scale
|
||
To: INFO-PLOT2 at MIT-MC
|
||
if SAME appears amongst the last args to PLOT2, GRAPH2, PARAMPLOT2
|
||
or REPLOT, it means plot this plot to the same scale as the previous
|
||
plot. plotting of axes and the printing of the line giving XMAX etc
|
||
is supressed. specification of a title and labels is allowed, but if
|
||
the previous plot which defines the scale of this plot didnt have them
|
||
they may appear in the wrong place (having wrapped around the screen).
|
||
if you want to specify a title, then you should probably specify a null
|
||
title "" in the original plot. all this allows the superposition of
|
||
plots in a convenient way. e.g.
|
||
CALCOMPNUM:40$
|
||
PARAMPLOT2(SIN(T),COS(T),T,0,2*%PI,FALSE,FALSE,"");
|
||
EQUALSCALE:TRUE$
|
||
SAVEPLOT(TEMPLATE)$
|
||
FOR CALCOMPNUM FROM 4 THRU 10
|
||
DO (REPLOT(TEMPLATE,FIRST),
|
||
TITLE:CONCAT("N = ",CALCOMPNUM-1),
|
||
PARAMPLOT2(SIN(T),COS(T),T,0,2*%PI,FALSE,FALSE,TITLE,SAME,LAST) );
|
||
|
||
CFK@MIT-MC 02/21/76 13:41:42 Re: plotting at 9600 baud
|
||
To: PLOT2 at MIT-MC
|
||
when plotting on the tektronix PLOT2 uses a more long winded
|
||
form of vector drawing commands in order for things to work ok
|
||
at 9600 baud. whether the long winded form for vectors is used
|
||
is governed by the switch PADDED (defaults to TRUE for the tek-
|
||
tronix and FALSE for the imlac). so if you are using the tek-
|
||
tronix at low speed you may want to set PADDED to FALSE, to
|
||
speed things up
|
||
|
||
CFK@MIT-MC 02/21/76 13:38:34 Re: hardcopies, clearing the screen
|
||
To: PLOT2 at MIT-MC
|
||
there are two new characters you can type when a plot
|
||
is finished. they are:
|
||
<return> this clears the screen
|
||
<line-feed> this gives you a hardcopy
|
||
there are two new functions available. they are
|
||
CLEAR(); clears the screen
|
||
HARDCOPY(); makes a hardcopy (if you're on the tektronix)
|
||
|