Sherwood (Woody) Anderson's Master's Thesis at Syracuse University in 1967 resulted in two languages CAMP (2-D) and CAMPER (3-D) used to define animated films on a variety of devices. Both systems were presented at the UAIDE Conference in 1968.

CAMPER had the same basic philosophy as CAMP with graphical items defined on 80-column cards and placed in one of several lists, called arrays. The main difference was that in CAMP two (X,Y) coordinates could be punched on a single card while CAMPER's 3D coordinates were defined one per card.

In CAMPER, transformations (scale, rotate about each axis, translate) could be performed on single items in the list or the whole list. In consequence a complex object could be made up of several smaller ones. The objects could be parameterised using the same technique as CAMP which greatly increased the flexibility of the system. The systems were written in Fortran so moving it to another computer or even another output device was quite straightforward.

The CAMPER system at the Atlas Computer Laboratory was produced by Dave Ralphs, a Brunel undergraduate who spent part of his degree course at Atlas and then joined later as a permanent employee. Woody Anderson provided the Laboratory with a listing that was used to create the SC4020 version on Atlas.

CAMPER had a set of basic 2-D drawing objects such as circle, rectangle, arrow and also a set of 3D objects. The CAMPER font was a cut-down version of the CAMP one. The Atlas Computer Laboratory ported the CAMPER system to Atlas, ICL 1906A, IBM 360/195 and later to a PDP15 and Prime 400.

A Manual for the system on the ICL 1906A has several examples of animated films produced by the system.

The BBC 1971 Tomorrows World video shows off the CAMPER aeroplane produced by Woody Anderson and widely shown at the time.

The CAMPER system is very similar except that it is three-dimensional. The language allows the user to create, manipulate and plot three-dimensional figures onto a two-dimensional plane in true perspective. A similar but but distinct set of picture defining commands are provided. Many commands in CAMPER are either identical or a logical extension of the two-dimensional command in CAMP.

DESCRIPTIVE GEOMETRY

The user defines figures in an area 0 ≤ X ≤ 12, 0 ≤ Y ≤ 9, 0 ≤ Z ≤ 9. A viewing point of this scene is defined as the point (X,Y,Z). Alternatively, the viewing point can be defined in spherical ordinates as (OVER,UP,RAD). Both OVER and UP are given in degrees and RAD is the distance from the origin. A plane can be imagined perpendicular to the line from the viewing point to the origin. This plane is called the picture plane. The figure to be plotted normally lies on the opposite side of this plane. Visual arrays from the figure to the viewing point pierce the picture picture plane, tracing out a perspective drawing as it scans the figure. It is this projected view that is calculated by the computer and plotted. The user must define the distance he requires between the viewing point and picture plane. If the picture plane is moved towards the viewer, the image becomes proportionately smaller, and vice versa. The co-ordinates of the viewing point can be located in any of the eight octants, so that the figure can be observed from any possible position. Fig. 15 illustrates the geometry.

Y X Z Viewing Point at (X, Y, Z) or (OVER, UP, RAD) OVER UP RAD 3D Figure PP Picture Plane

Fig. 15: Geometry of the figure described

Before drawing a frame, there is still one parameter to be fixed and that is the part of the picture plane that will be viewed. Initially the perspective point on the picture plane equivalent to the three-dimensional is located at the ower left hand corner of the frame drawn, It is possible to change the part of the picture plane that is viewed by defining a new position for the three-dimensional origin.

DATA STORAGE

The format of arrays in CAMPER is very similar to that of CAMP except that each (X,Y) is replaced by an (X,Y,Z). As in CAMP, stack 7 contains the definitions of the character font. The space required for each character is considerably larger in CAMPER due to each point requiring a Z co-ordinate. For this reason the CAMPER character set is a subset of the CAMP one (see below).

The stack 8 is initialized to contain the three axes: X=12, Y=9, Z=9 in arrays 1, 2 and 3.

TO RUN CAMPER JOBS ON ATLAS

The format of the card deck is almost identical to the CAMP one except that

001/CAMP
is replaced by 
002/CAMPER 
in the Job Description.

The standard data cards required to identify the output are as follows:

CAMRA   
RDRAW  1  0.0   0.0   500.0   500.0
FRAME   
ERASE1 1  
RDRAW  2  0.0   0.0   500.0   500.0
FRAME   
ERASE2   
RDRAW  3  0.0   0.0   500.0   500.0
FRAME   
ERASE3  
LETER1 1                                BLOGGS
RDRAW  1  0.0   0.0   500.0   500.0
FRAME   
ERASE1  
CAMRA  2  2 

Class 1 commands:picture definitions

The S and ARR variables always refer to the stack and array to which the picture is being defined.

CIRCL S ARR D X Y Z RAD

defines a circle centred at (X,Y,Z) of radius RAD, in a plane parallel to the x-y plane. If D≠0, the circle is dashed. The array is comprised of 37 points, which produces 36 straight lines. The first point lies to the right of the centre, and successive points fall every 10 degrees counter clockwise around the circle. (Fig. 16).

Fig. 16: Class 1 commands: circle.
RECT S ARR * X Y Z LNGTH HGT 

defines a rectangle with lower left hand corner at (X,Y,Z) of length, LNGTH and height HGT This figure lies in a plane parallel to the x-y plane. (Fig.17).

Fig. 17: Class 1 commands: rectangle.
TRNGL S ARR * X Y Z BASE HGT 

defines an isosceles triangle with the lower left corner at (X,Y,Z) of base, BASE and height, HGT. The figure lies in a plane parallel to the x-y plane. (Fig. 18).

Fig. 18: Class 1 commands: triangle.
ARROW S ARR P X1 Y1 X2 Y2 HEAD 

defines an arrow directed from (X1,Y1,0) to (X2,Y2,0) with a head of length, HEAD. The figure lies in the X-Y plane. The use of the parameter, P, is shown in the diagram.

Fig. 19: Class 1 commands: arrow.
CROSS S ARR * X Y ZSIDE 

defines a cross with lower left hand corner at (X,Y,Z) of height and width SIDE. This figure lies in a plane parallel to the x-y plane. (Fig. 20).

Fig. 20: Class 1 commands: cross.
BOX S ARR * DX DY DZ

defines a box with one corner at the orgin and sides of length DX, DY and DZ in the positive X, Y and Z directions respectively. The order of points within the array is shown by the circled numbers in in the diagram. If only the top and the front of the box are required, the first 8 points should be transferred into a new array. No more than 8 points should be transferred from a box array. (Fig. 21).

Fig. 21: Class 1 commands: box.
CLOCK S ARR * X Y Z RAD TIME 

defines a clock face centred at (X,Y,Z) of radius RAD showing the time, TIME. The integer portion of TIME is the hour, and the fraction part is the decimal fraction of an hour. This figure lies in the plane parallel to the X-Y plane. (Fig. 22).

As in CAMP, additional figures can be defined out of lines.

Fig. 22: Class 1 commands: clock.
SETCV S ARR * X Y Z 

defines the first point (X,Y,Z) of a series of points to be connected consecutively by straight lines.

SETLN S ARR * X Y Z

defines the first point (X,Y,Z) of a series of pairs of points which represent a set of unconnected straight lines.

EXPAR S ARR * X Y Z

expands a previously defined SETCV or SETLN array by adding point (X,Y,Z) onto the end. EXPAR can be used as many times as desired, but it should only expand that array which is currently at the end of stack. SETCV should have at least one EXPAR command following it. SETLN should have an odd number of EXPAR commands following it to make sure that a complete set of pairs of points is defined.

Class 2 commands

C* * * * * * * * COMMENTS 

defines a COMMENT in columns 61-80 which will be printed on the output. This is the only action of the command.

ERASE S ARR

erases the contents of array ARR of stack S. If ARR is blank or zero the whole stak is erased. This command should be used at the beginning of each new frame to avoid any carry over from the previous frame.

XYROT S ARR * X Y ANG 

rotates array ARR of stack S about the line x=X, y=Y by ANG degrees. If ANG is positive the rotation is counter clockwise as the X-Y plane is viewed from the positive Z side. As the rotation is about a line perpendicular to the X-Y plane, the Z co-ordinates are not changed by this rotation. If ARR=0, the entire stack is rotated.

YZROT S ARR * Y Z ANG

rotates an array about the line y=Y, z=Z by ANG degrees. If ANG is positive, the rotation is counter clockwise as the Y-Z plane is viewed from the positive X side. As the rotation is about a line perpendicular to the Y-Z plane, the X co-ordinates are not changed by this rotation. If ARR=0, the entire stack is rotated.

XZROT S ARR * X Z ANG

rotates an array about the line x=X, z=Z by ANG degrees. If ANG is positive, the rotation is counter clockwise as the X-Z plane is viewed from the positive Y side. As the rotation is about a line perpendicular to the X-Z plane, the Y co-ordinates are not changed by this rotation. If ARR=0, the entire stack is rotated.

OFSET S ARR * DX DY DZ

offsets the points of the array ARR of stack S by DX, DY, DZ in the X,Y and Z directions respectively. DX, DY and DZ can be negative. If ARR=0, the entire stack is rotated.

SIZE S ARR * XREF YREF XMAG YMAG 

expands or contracts all the points of the array, ARR of stack, S about the reference line, x= XREF, y=YREF New co-ordinates are computed by the following relations:

x' - (x-XREF) * XMAG + XREF
y' = (y-YREF) * YMAG + YREF 

where (x,y) are the first two co-ordinates of a point in the array. If XMAG and YMAG are greater than one, the points expand about the reference line; if XMAG and YMAG are less than 1, the points contract about the reference line; if XMAG=YMAG=1, the points are unchanged. If XMAG=YMAG=0, all points are set onto the reference line. As long as XMAG and YMAG are equal, the picture merely changes its size without being distorted. If ARR=0, the entire stack is affected. The Z co-ordinates are unchanged by this command. To reduce or expand a figure in all three directions, use this in conjunction with ZSIZE.

ZSIZE S ARR * ZREF ZMAG 

expands or contracts all the points of an array about the reference plane z=ZREF New Z coordinates are computed by the relation:

z' = (z-ZREF) * ZMAG + ZREF 

where z is the third co-ordinate of a point in the array. ZMAG obeys the same properties as XMAG and YMAG do. To change the size of an array in three dimensions about the point (XREF, YREF, ZREF) use the SIZE command about x=XREF, y=YREF and the ZSIZE command about z= ZREF

MOVE STA ARRA * STB ARRB 

This command is used within a DO LOOP to move in equal increments, a figure whose initial position is stored in stack STA, array ARR A, to a final position which is stored in stack STB, array ARRB.

If both ARRA and ARRB are zero, the entire stack is moved. The parameter NTIMES from the DO instruction determines the total number of equal increments used. After the loop is executed, the stack STA has been set equal to the original value of stack STB, and stack STB has been destroyed.

TNSFR SB ARRB P P1 P2 SA ARRA BPT1 

transfers points P1 to P2 inclusively from array ARRA, stack SA into array ARRB, stack SB. Point P1 of array ARRA will begin loading into array ARRB, starting at point BPT1. If BPT1 is left blank or set to zero, it is assumed to be 1. If:

New        P = 0       all  three co-ordinates are transferred
array        = 1       only x-co-ordinates are transferred
ARRB         = 2       only y-co-ordinates are transferred
             = 3       only z-co-ordinates are transferred
             
ARRB         = 4       all  three co-ordinates are transferred
already      = 5       only x-co-ordinates are transferred
exists       = 6       only y-co-ordinates are transferred
only         = 7       only z-co-ordinates are transferred

             = 9       all co-ordinates of the points in array ARRB are transferred 
                       from the given starting point to array ARRB until either all 
                       the points P1 to P2 are transferred, or until the end of array 
                       ARRA is reached, whichever occurs first. To transfer the whole 
                       of an array of unknown size, a ficticiously high value of P2 
                       can therefore be used.
POINT S ARR * X Y Z PT

replace the PTth point of array ARR of stack S with the new point (X,Y,Z). Array ARR should already have been set up.

DUMP S

prints the contents of the 1000 locations of stack S.

LETER S ARR ****** TEXT 

adds up to 20 characters of TEXT into stack S, starting with array ARR. The text is placed in columns 61 onwards. If fewer than 20 characters are required, the > sign can be used to terminate the string. The text is then loaded into stack S, beginning in array ARR, with each new character placed into the next consecutive array and offset 1 unit in the positive x-direction. The first character is located with the lower left hand corner at (ARR-1, 0, 0) and the following characters at {ARR, 0, 0), (ARR+1, 0, 0) and so on. All characters lie in the X-Y plane (Z=0).

Type 3 commands

The CAMPER type 3 commands are identical to the CAMP type 3 commands.

Type 4 commands: picture output

RDRAW S ARR P X Y Z PP NODRW 
SDRAW S ARR P OVER UP RAD PP NODRW 

Both commands output the perspective trace of the picture contained in array ARR, stack S. If ARR=0, the entire stack is output. In RDRAW, the viewing point is given in Cartesian co-ordinates as (X,Y,Z). In SDRAW, the viewing point is given in spherical co-ordinates at OVER degrees from the Z-axis, UP degrees from the XZ plane and a radial distance of RAD from the origin.

The projection plane is located PP units from the viewing point, towards the origin. The figure to be plotted normally lies on the opposite side of the projection plane from the viewing point, since the projected image is then smaller than actual size. If the figure to be plotted lies between the projection plane and the viewing point, the plot will appear larger than actual size. As PP increases, the picture size is magnified, and vice versa. RAD and PP should always be positive. The angles OVER and UP can become negative, if desired.

If NODRW=Q, this command is executed while if NODRW=1 it is ignored. The value of NODRW is usually defined as a variable which changes its value around a loop to start or stop output of this picture.

The parameter P=1 will cause the perspective view of the figure to be tested at the outer border so that any portion of a line lying outside the 9 × 12 cine frame is not drawn. If P=0, no test is done. This feature is quite useful, since the programmer has no prior knowledge of whether the projected lines will spill out of the standard drawing rectangle.

If the solid figure lies within a 10 × 10 × 10 box, a good set of parameters for a 12 × 9 picture window would be OVER=45, UP=35, RAD=26, PP=12, or alternatively X=15, Y=15, Z=15, PP=12.

The geometry of the picture is given at the start of the CAMPER manual.

In the following commands, the 2-D origin referred to is the bottom left hand corner of the plotting area which is normally 12 × 9 in size. The 3-D origin is the location of the (0,0,0) point on the plotting area when the picture is output in perspective on the plotting area.

ORIGN * * * DIST

draws an L-shaped corner mark at the current 2-D origin of height and length, DIST. This is helpful in locating the origin of the frame.

BORDR

draws a 12 × 9 border around the plotting area where the lower left corner is the current 2-D origin. This can be used to frame a picture.

FRAME

This advances the film by one frame. A new frame is now available for output.

NUORG * * * X Y

This positions the 3-D origin X units over and Y units up from the current 2-D origin. X and Y may be negative if desired. This command is necessary to place the projected picture upon the centre of the plotting surface. Unless NUORG is called the 2-D and 3-D origins are at the same point. It is then likely that the part of the figure in the positive Z direction would spill off the bottom of the plotting area. A good set of values might be X=5, Y=4.

STOP

terminates the CAMPER program and outputs filemarks on the tape and generates statistics.

SAVE 
ESAVE 
REPET 
CAMRA * * P 

These commands are the same as for CAMP.

6 CAMPER COMMAND LIST

Columns 1-5 6 7-9 10 11-20 21-30 31-40 41-50 51-60 61-80
Class Name Stack Array Par Arg1 Arg2 Arg3 Arg4 Arg5 Comments
1 CIRCL S ARR D X Y Z RAD
1 RECT S ARR X Y Z LNGTH HGT
1 TRNGL S ARR X Y Z BASE HGT
1 ARROW S ARR P X1 Y1 X2 Y2 HEAD
1 SETCV S ARR X Y Z
1 SETLN S ARR X Y Z
1 EXPAR S ARR X Y Z
1 CROSS S ARR X Y Z SIDE
1 BOX S ARR D DX DY DZ RAD
1 CLOCK S ARR X Y Z RAD TIME
1 FOR1 S ARR P A1 A2 A3 A4 A5
1 FOR2 S ARR P A1 A2 A3 A4 A5
2 C COMMENTS
2 ERASE S ARR
2 XYROT S ARR X Y ANG
2 XZROT S ARR X Z ANG
2 YZROT S ARR Y Z ANG
2 OFSET S ARR DX DY DZ
2 SIZE S ARR XREF YREF XMAG YMAG
2 ZSIZE S ARR ZREF ZMAG
2 MOVE STA ARRA STB ARRB
2 TNSFR SB ARRB P P1 P2 SA ARRA BPT1
2 POINT S ARR X Y Z PT
2 DUMP S
2 LETER S ARR TEXT
3 ADDV VAR OPRND BGIN END
3 SUBV VAR OPRND BGIN END
3 MULTV VAR OPRND BGIN END
3 DIVV VAR OPRND BGIN END
3 SINV VAR OPRND BGIN END
3 COSV VAR OPRND BGIN END
3 EXPV VAR OPRND BGIN END
3 SQRTV VAR OPRND BGIN END
3 DO NTIMES
3 LOOP
4 RDRAW S ARR P X Y Z PP NODRW
4 SDRAW S ARR P OVER UP RAD PP NODRW
4 ORIGN DIST
4 BORDR
4 FRAME X Y
4 NUORG X Y
4 STOP
4 SAVE
4 ESAVE
4 REPET NTIMES
4 CAMRA P

TABLE OF LOCATIONS REQUIRED BY EACH FIGURE IN CAMPER

Figure                              Location

Circle                                112
Circle (dashed)                       109
Cross                                  13
Triangle                               13
Rectangle                              16
Box                                    51  
Clock                                 222
Arrow (Solid Tail, Open Head)          17
Arrow (Solid Tail, Closed Head)        20
Arrow (Dashed Tail, Open Head)         47
Arrow (Dashed Tail, Closed Head)       50
Set Line Array (SETLN)                  4
Set Curve Array (SETCV)                 4
Expand Array (EXPAR)                    3 (each time used)

CAMPER EXAMPLE 1

To demonstrate the effect of perspective drawings, a series of views is plotted of a stick figure advancing toward the picture plane. The standard set of axes in stack 8 is used here. A diagonal line is also shown at 45 degrees to the Z axis. The figure is advanced equal distances along the diagonal line and plotted. It appears larger as it approaches the picture plane. In the last view, it is drawn virtually the same size as the actual figure in 3D co-ordinates (which is 3.5 units high). This means that the picture plane is at about the same distance from the viewing point as the figure.

C                                                           MOVING STICK FIGURE 
NUORG      4.       5.                                      SET 3D ORIGIN       
ERASE3                                                      CLEAR STACK 3       
ERASE4  0                                                   CLEAR STACK 4       
SETLN3  1  0.       0.        0.                            SET UP DIAGONAL     
EXPAR3  1  9.       0.        9.                            LINE                
RDRAW8  0  9.       2.        15.       4.                  PLOT AXES           
RDRAW3  0  9.       2.        15.       4.                  PLOT DIAG LINE      
SETCV4  1  0.       0.        0.                            SET UP STICK        
EXPAR4  1  1.       1.        0.                            FIGURE...           
EXPAR4  1  2.       0.        0.                                                
SETLN4  2  1.       1.        0.                                                
EXPAR4  2  1.       2.5       0.        .5                                      
EXPAR4  2  0.       2.        0.                                                
EXPAR4  2  2.       2.        0.                                                
CIRCL4  3  1.       3.        0.        .5                                      
RDRAW4  0  9.       2.        15.       4.                  PLOT FIRST FIGURE   
OFSET4  0  3.       0.        3.                            MOVE ALONG DIAG.LINE
RDRAW4  0  9.       2.        15.       4.                  PLOT SECOND FIGURE  
OFSET4  0  3.       0.        3.                            MOVE ALONG DIAG.LINE
RDRAW4  0  9.       2.        15.       4.                  PLOT THIRD FIGURE   
OFSET4  0  3.       0.        3.                            MOVE ALONG DIAG.LINE
RDRAW4  0  9.       2.        15.       4.                  PLOT FOURTH FIGURE  
FRAME                                                                           

Fig. 42: Perspective drawing.

CAMPER EXAMPLE 2

Often a round surface must be depicted in a perspective plot. This is readily handled by showing the edge as a straight line. A soft drink can, for example, be set up by a circle, a semicircle, 2 puncture marks, and 2 straight lira for the sides. When viewed 'head-on' this appears quite normal. However, when either the point of view, or the can itself as below is rotated, an absurd picture results. This is because the straight lines actually represent the edge of a continuous surface. In the example below, only the can punctures (arrays 4 and 5 of stack 1) should have been rotated. Notice also that the semicircle was created by transferring the first 19 points of a full circle array.

C                                                           SOFT DRINK CAN      
NUORG      3.       3.                                      SET 3D ORIGIN       
ERASE1  0                                                   CLEAR STACK 1       
ERASE2  0                                                   CLEAR STACK 2       
CIRCL2  1  0.       0.        0.        1.5                 SET UP WHOLE CIRCLE 
YZROT2  1  0.       0.        90.                           ROTAT INTO X-Y PLANE
TNSFR1  1  1.       19.       2.        1.        1.        USE ONLY SEMICIRCLE 
CIRCL1  2  0.       5.        0.        1.5                 SET UP TOP CIRCLE   
YZROT1  2  5.       0.        90.                           ROTATE 90 DEGREES   
SETLN1  3  1.5      5.        0.                            SET UP SIDES        
EXPAR1  3  1.5      0.        0.                                                
EXPAR1  3  -1.5     0.        0.                                                
EXPAR1  3  -1.5     5.        0.                                                
SETCV1  4  -.5      5.        1.41                          SET UP THE          
EXPAR1  4  0.       5.        .7                            CAN PUNCTURES       
EXPAR1  4  .5       5.        1.41                                              
SETCV1  5  -.3      5.        -1.46                                             
EXPAR1  5  0.       5.        -1.                                               
EXPAR1  5  .3       5.        -1.46                                             
RDRAW1  0  0.       12.       15.       5.        0.        PLOT THE CAN        
NUORG      7.       3.                                      ADVANCE MORE PAPER  
XZROT1  0  0.       0.        75.                           ROTATE THE CAN      
RDRAW1  0  0.       12.       15.       5.        0.        PLOT AGAIN          
FRAME                                                                           

Fig. 43: Round Surface in perspective plot.

CAMPER EXAMPLE 3

When a moving solid figure is observed from fixed position, certain of its edges may disappear from view. These are called 'hidden' lines, and unfortunately it is the task of the CAMPER user to suppress them when necessary. Such a case is shown below; a brief 'case' in fact! It is rather simply set up by a series of rectangles and plotted in the closed position. The back and left edges of the top can be seen in this first view. Before the lid can be shown rotated upwards, however, these two lines must be eliminated, and the bottom of the lid must appear. These aims are both accomplished by offsetting those two lines down two units before the lid is rotated. One more line is set up for the left-hand edge of the bottom of the briefecase: and the second view can be plotted.

C                                                           BRIEFCASE           
ERASE1  0                                                   CLEAR STACK 1       
ERASE2  0                                                   CLEAR STACK 2       
NUORG      1.       3.                                      SET 3D ORIGIN       
RECT 1  1  0.       0.        12.       18.       3.        BOTTOM...           
RECT 1  2  18.      0.        12.       12.       3.                            
XZROT1  2  18.      12.       90.                           ON TOP OF CUBE      
RECT 1  3  2.       1.        12.       1.5       2.                            
RECT 1  4  14.5     1.        12.       1.5       2.                            
RECT 1  5  6.       1.        12.       6.        2.        HANDLE              
RECT 1  6  7.       1.75      12.       4.        1.25                          
RECT 2  1  0.       3.        12.       18.       2.        TOP...              
RECT 2  2  18.      3.        12.       12.       2.                            
XZROT2  2  18.      12.       90.                                               
RECT 2  3  2.       3.        12.       1.5       1.        TOP LATCHES...      
RECT 2  4  14.5     3.        12.       1.5       1.                            
SETCV2  5  0.       5.        12.                           TOP OUTLINE...      
EXPAR2  5  0.       5.        0.                                                
EXPAR2  5  18.      5.        0.                                                
RDRAW1  0  24.      12.       72.       10.                 PLOT BOTTOM HALF    
RDRAW2  0  24.      12.       72.       10.                 PLOT TOP HALF       
NUORG      5.       3.                                      ADVANCE PAPER       
OFSET2  5  0.       -2.       0.                            LOWER TOP OUTLINE   
SETLN1  7  0.       3.        0.                            ADD LEFT LINE       
EXPAR1  7  0.       3.        12.                           TO BOTTOM           
YZROT2  0  3.       0.        -25.                          ROTATE TOP UP       
RDRAW2  0  24.      12.       72.       10.                 PLOT TOP AGAIN      
RDRAW1  0  24.      12.       72.       10.                 PLOT BOTTOM AGAIN   
FRAME                                                                           

Fig. 44: Briefcase.

CAMPER: EXAMPLE 4

Suppose a clock is mounted on the face of a cube which rotates very slowly. To show this, a box is set up and the first eight points are transferred to plot the front and top places only. The side plane is set up separately by a SETCV array. A cross is set up and rotated parallel to the XY plane, and a line to its centre serves as a suspending cable. Four views show the clock every 15 minutes. Variable 1 is used for the argument TIME in the CLOCK command. It is incremented by .25 each iteration; this advances the clock hands 15 minutes of a hour each time. The rotation could have been achieved by rotating the whole figure, in which case the clock would have been set up parallel to the X-Y plane and rotated a little more for each view. It is slightly easier here to let the figure remain stationary, and simply rotate the point of view. This is accomplished by letting the argument OVER in the command SDRAW increase by 10 degrees for each view.

C                                                           ADVANCING CLOCK     
C                                                           IN ROTATING CUBE    
ERASE1  0                                                   CLEAR STACKS ...    
ERASE2  0                                                                       
NUORG      2.       5.0                                     SET 3D ORIGIN       
BOX  2  1  4.       4.        4.                            SET UP A BOX IN S2  
TNSFR1  10 1.       8.        2.        1.        1.        TRANSFER FRONT + TOP
SETCV1  2  4.       4.        0.                            RIGHT SIDE...       
EXPAR1  2  4.       0.        0.                                                
EXPAR1  2  4.       0.        4.                                                
CROSS1  3  0.       4.        4.        4.                  SET UP A CROSS      
YZROT1  3  4.       4.        -90.                          ON TOP OF CUBE      
SETLN1  4  2.       4.        2.                            SET UP SUSPENDING   
EXPAR1  4  2.       7.        2.                            WIRE...             
MULTV    1 0.                                               CLEAR VAR 1         
ADDV     1 25.                                              VAR. 1=OVER=25DEG.  
MULTV    2 0.                                               CLEAR VAR 2         
ADDV     2 12.25                                            VAR.2=TIME=12.25    
MULTV    3 0.                                                                   
ADDV     3 2.0                                                                  
MULTV    4 0.                                                                   
ADDV     4 5.0                                                                  
DO         4.                                                                   
CLOCK1  5  2.       2.        4.        1.5       902.      SET UP A NEW CLOCK  
SDRAW1  0  901.     30.       15.       2.                  PLOT A FIGURE       
ADDV     1 10.                                              OVER=OVER+00 DEG.   
ADDV     2 .25                                              TIME=TIME+15 MIN    
ADDV     3 1.5                                                                  
SUBV     4 1.0                                                                  
NUORG      903.0    904.0                                                       
ERASE1  5                                                                       
LOOP                                                                            
FRAME                                                                           

Fig. 45: Rotating example with clock face on cube.

CAMPER: EXAMPLE 5

A popular animation that was shown by Woody Anderson at conferences was a Piper plane.

C                                                                      AERO     
NUORG      5.0      6.0                                                         
C                                                                       AEROPL  
ERASE1                                                                          
ERASE2                                                                          
ERASE3                                                                          
LETER8  1                                                   XYZ>                
SIZE 8  1  0.       0.        .5        .5                                      
SIZE 8  2  0.       0.        .5        .5                                      
SIZE 8  3  0.       0.        .5        .5                                      
OFSET8  1  -3.5     -5.8      0.                                                
OFSET8  2  -6.8     -3.       0.                                                
OFSET8  3  -7.0     -6.5      3.2                                               
SETLN8  4  -6.5     -6.       0.                                                
EXPAR8  4  -3.2     -6.       0.                                                
SETLN8  5  -6.5     -6.       0.                                                
EXPAR8  5  -6.5     -2.8      0.                                                
SETLN8  6  -6.5     -6.       0.                                                
EXPAR8  6  -6.5     -6.5      3.                                                
SETCV1  1  0.       0.        -.75                                              
EXPAR1  1  4.       0.        -.75                                              
EXPAR1  1  4.4      0.        -.62                                              
EXPAR1  1  4.85     0.        -.4                                               
EXPAR1  1  5.13     0.        0.                                                
EXPAR1  1  5.22     0.        .43                                               
EXPAR1  1  5.15     0.        .66                                               
EXPAR1  1  5.       0.        .9                                                
EXPAR1  1  4.8      0.        1.1                                               
EXPAR1  1  4.25     0.        1.2                                               
EXPAR1  1  0.       0.        1.2                                               
SETCV1  2  .65      0.        -.75                                              
EXPAR1  2  .65      0.        -.35                                              
EXPAR1  2  4.4      0.        -.35                                              
EXPAR1  2  4.4      0.        -.62                                              
SETCV1  3  2.7      0.        -.75                                              
EXPAR1  3  2.7      0.        1.2                                               
TNSFR1  4  1.       11.       1.        1.                            RIGHT WING
TNSFR1  5  1.       4.        1.        2.                                      
TNSFR1  6  1.       2.        1.        3.                                      
SIZE 1  4  0.       0.        -1.       1.                                      
SIZE 1  5  0.       0.        -1.       1.                                      
SIZE 1  6  0.       0.        -1.       1.                                      
SETCV1  7  0.       -.6       2.7                                     LEFT FUS  
EXPAR1  7  .5       -.6       2.65                                              
EXPAR1  7  .5       -.5       1.75                                              
EXPAR1  7  .55      0.        1.2                                               
EXPAR1  7  .55      0.        -.75                                              
EXPAR1  7  .2       -.55      -2.95                                             
EXPAR1  7  0.       -.55      -2.95                                             
SETCV1  8  0.       -1.1      -3.85                                             
EXPAR1  8  .55      -1.5      -.45                                              
EXPAR1  8  .55      -1.6      .4                                                
EXPAR1  8  .55      -1.5      1.56                                              
EXPAR1  8  .5       -.85      2.65                                              
EXPAR1  8  .15      -1.2      2.7                                               
EXPAR1  8  0.       -1.2      2.7                                               
TNSFR1  9  1.       7.        1.        7.                              RGHT F  
TNSFR1 10  1.       7.        1.        8.                                      
SIZE 1  9  0.       0.        -1.       1.                                      
SIZE 1 10  0.       0.        -1.       1.                                      
SETCV1 11  0.       -.55      -2.95                                             
EXPAR1 11  0.       .2        -3.42                                             
EXPAR1 11  0.       .44       -3.64                                             
EXPAR1 11  0.       .5        -3.9                                              
EXPAR1 11  0.       .4        -4.1                                              
EXPAR1 11  0.       -.58      -4.48                                             
EXPAR1 11  0.       -.88      -4.38                                             
EXPAR1 11  0.       -1.05     -4.15                                             
EXPAR1 11  0.       -1.1      -3.85                                             
EXPAR1 11  0.       .2        -3.84                                             
EXPAR1 11  0.       .2        -3.42                                             
SETCV1 12  -0.08    -.8       -3.75                                    LFT STB  
EXPAR1 12  .15      -.8       -4.15                                             
EXPAR1 12  .26      -.8       -4.25                                             
EXPAR1 12  1.13     -.8       -4.29                                             
EXPAR1 12  1.69     -.8       -4.                                               
EXPAR1 12  1.75     -.8       -3.75                                             
EXPAR1 12  1.3      -.8       -3.25                                             
EXPAR1 12  .2       -.8       -2.95                                             
EXPAR1 12  .08      -.8       -3.75                                             
EXPAR1 12  1.3      -.8       -3.75                                             
EXPAR1 12  1.3      -.8       -3.25                                             
TNSFR1 13  1.       11.       1.        12.                            RGT STB  
SIZE 1 13  0.       0.        -1.       1.                                      
SETLN1 14  2.7      0.        -.1                                      LW STRT  
EXPAR1 14  .55      -1.57     .9                                                
EXPAR1 14  .55      -1.56     1.                                                
EXPAR1 14  2.7      0.        0.                                                
EXPAR1 14  2.7      0.        .9                                                
EXPAR1 14  .55      -1.57     .9                                                
EXPAR1 14  .55      -1.56     1.                                                
EXPAR1 14  2.7      0.        1.                                                
TNSFR1 15  1.       8.        1.        14.                            RW STRT  
SIZE 1 15  0.       0.        -1.       1.                                      
SETCV1 16  .55      -1.56     1.                                       WHEEL    
EXPAR1 16  1.3      -2.1      .2                                                
EXPAR1 16  .55      -1.55     .2                                                
CIRCL1 17  1.3      -2.1      .2        .25                                     
XZROT1 17  1.3      .2        90.                                               
TNSFR1 18  1.       3.        1.        16.                                     
TNSFR1 19  1.       37.       1.        17.                                     
SIZE 1 18  0.       0.        -1.       1.                                      
SIZE 1 19  0.       0.        -1.       1.                                      
SETCV1 20  0.       -1.32     2.27                                              
EXPAR1 20  0.       -2.1      2.45                                              
EXPAR1 20  0.       -2.1      2.35                                              
EXPAR1 20  0.       -1.35     2.17                                              
CIRCL1 21  0.       -2.1      2.4       .25                                     
XZROT1 21  0.       2.4       90.                                               
SETLN1 22  .2       -.55      -2.95                                             
EXPAR1 22  .08      -.8       -3.75                                             
EXPAR1 22  -.08     -.8       -3.75                                             
EXPAR1 22  -.2      -.55      -2.95                                             
SETLN1 23  .55      -1.56     1.                                                
EXPAR1 23  -.55     -1.56     1.                                                
EXPAR1 23  -.55     -1.55     .2                                                
EXPAR1 23  .55      -1.55     .2                                                
SETLN1 24  .5       -.85      2.65                                    NOSE SD   
EXPAR1 24  .5       -.6       2.65                                              
EXPAR1 24  -.5      -.6       2.65                                              
EXPAR1 24  -.5      -.85      2.65                                              
SETCV1 25  .55      -1.54     1.2                                               
EXPAR1 25  .55      0.        1.2                                               
EXPAR1 25  -.55     0.        -.75                                              
EXPAR1 25  -.495    -1.47     -.75                                              
SETCV1 26  .495     -1.47     -.75                                              
EXPAR1 26  .55      0.        -.75                                              
EXPAR1 26  -.55     0.        1.2                                               
EXPAR1 26  -.55     -1.54     1.2                                               
SETCV1 27  .53      -.5       -.75                                     WINDS    
EXPAR1 27  .55      -.5       1.2                                               
EXPAR1 27  .5       -.5       1.75                                              
EXPAR1 27  0.       -.51      1.85                                              
EXPAR1 27  -.5      -.5       1.75                                              
EXPAR1 27  -.55     -.5       1.2                                               
EXPAR1 27  -.53     -.5       -.75                                              
C                                                                      FLR NS   
SETCV1 28  -.55     -1.5      1.56                                              
EXPAR1 28  0.       -1.335    2.22                                              
EXPAR1 28  .55      -1.5      1.56                                              
SETCV1 29  .15      -1.2      2.7                                               
EXPAR1 29  0.       -1.335    2.22                                              
EXPAR1 29  -.15     -1.2      2.7                                               
C                                                                               
LETER2  1                                                   PIPER>              
SIZE 2  0  0.       0.        .15       .15                                     
XZROT2  0  0.       0.        90.                                               
OFSET2  0  .55      -1.       2.                                                
TNSFR1 30  1.       48.       2.        1.                                      
ERASE2                                                                          
C                                                           PROPELLER           
LETER2  1                                                   O>                  
SIZE 2  1  0.       0.        .6        .4                                      
OFSET2  1  -.2      -1.1      2.7                                               
SETCV2  2  .2       -.85      2.7                                               
EXPAR2  2  .65      -.8       2.7                                               
EXPAR2  2  1.15     -.85      2.7                                               
EXPAR2  2  1.15     -.95      2.7                                               
EXPAR2  2  .65      -1.       2.7                                               
EXPAR2  2  .2       -.95      2.7                                               
TNSFR2  3  1.       6.        2.        2.                                      
SIZE 2  3  0.       0.        -1.       1.                                      
XYROT2  3  0.       -.9       -45.                                              
XYROT2  2  0.       -.9       -45.                                              
NUORG      7.       6.                                                          
SDRAW1  0  20.      40.       40.       30.                                     
SDRAW2  0  20.      40.       40.       30.                                     
SDRAW8  0  20.      40.       40.       30.                                     

Fig. 46: Woody Anderson's PIPER aeroplane

Fig. 47: Woody Anderson's PIPER aeroplane animated.