Home » Archimedes archive » Acorn User » AU 1994-02.adf » !FEMS_App_FEMS_App » FEMSdoc2
FEMSdoc2
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1994-02.adf » !FEMS_App_FEMS_App |
Filename: | FEMSdoc2 |
Read OK: | ✔ |
File size: | 6E7C bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
FEMS VERSION 2.3 DOCUMENTATION FILE =================================== This file describes, in a more complete way than the magazine articles, the syntax of script files for FEMS version 2.3, as supplied on the cover disk of the February 1994 BBC Acorn User. In the interests of clarity, some parts of the articles are also included in this file. For a summary of the differences between this file and the one supplied on the January cover disk, please see the file "Changes2�3". DESIGNING YOUR OWN SCENES To give maximum flexibility in the setting up of simulations, and because there are so many possibilities, the scene and parameters are described in a text file "script" which tells the program what to do. Even if you don't feel up to creating your own scenes, fiddling with the provided definition files will allow you to change things like the screen resolution, rendering style (whether the picture is drawn with dots or lines) and the viewpoint used. Since the simulation setup files are just text files, they can be created and modified in Edit or any other text editor. The magazine explains the general idea of script files and some hints for the successful creation of animations. SCRIPT FILES: GENERAL 1 The first line of a script must be "FEMS2". This is so the program can recognize valid definition files, and knows which version they are. 2 The program doesn't care whether the letters in the script are upper or lower case, as it converts them all to lower case when it reads the file. 3 Lines can be concatenated by replacing a newline with a colon, and spaces can be used instead of commas if you wish. 4 Comments are anything between a /* and a */ (like in C), and are ignored. Comments can be nested (unlike in C). 5 A "block" consists of a block name followed by several commands enclosed in curly brackets. The brackets must have a separator to either side of them ie. use "rendering { type dots }" not "rendering{ type dots} " 6 A script consists of some global parameters, a "rendering" block, and any number of "solid" and "background" blocks. SCRIPT FILES: UNITS At points in a script where you need to specify a distance, a velocity or an angle, you have a choice of the units you can use. The units must come straight after the number, without a separating space, ie. use "12cm" not "12 cm". Recognized units for distance: in inches ft feet cm centimetres mm millimetres the default unit is 1/46080 of an inch Recognised units for velocity: ips inches per second ftps feet per second cmps centimetres per second mmps millimetres per second the default unit is 1/(921.6) of an inch per second Recognised units for angles: deg degrees rad radians the default unit is degrees Recognised units for angular velocity: degps degrees per second radps radians per second rpm revolutions per minute the default unit is 0.056889 degrees per second GLOBAL PARAMETERS There are three global parameter commands: frame_aim <number> gravity <number>,<number>,<number> time_div <number> The number after frame_aim is the number of frames you want to aim for. All this does is cause the program to pause after that many frames, so you don't overshoot if the computer is being left unattended. It also sets the number of frames used to estimate the finishing time. If the program has continued past the aim point, or there is not enough space to store the number of frames aimed for, the finishing time is based on the estimated maximum number of frames. "Gravity" sets the direction and speed with which things fall. There are three numbers for the amounts in the x, y and z directions. Normally these will be something like 0, 0 and -600 so things fall downwards. The script "UpStairs" uses a sideways gravity to make the cube appear to climb the stairs. The "time_div" command sets the number of times the finite element simulation procedures are called between frames, or in other words how finely divided the time steps are. The number must be a power of 2, eg. 1,2,4,8 etc. The main purpose of this is to allow objects to be stiffer without exploding, so the spring constants in the objects are automatically increased when this value is increased. THE RENDERING BLOCK The other set of options affects the appearance of the picture on the screen. This is called the "rendering block" and looks like this: rendering { type <render_type> resolution <number>,<number> view <number>,<number> background <back_type> } <render_type> is one of "dots", "lines", "all_dots" or "wireframe". "Dots" draws the points at the corners of the surface facets, and "lines" draws the edges of the surface facets. The other two options do the same but without removing hidden surfaces. The "dots" option uses the least memory for frame storage, and "all_dots" is the quickest to draw. The "resolution" command lets you choose the screen resolution you want to use, by specifying the number of horizontal and vertical pixels. Useful values are 320,256 (low resolution) 640,256 (high resolution) and 640,512 (multisync monitors), but you can use any resolution for which there is a screen mode. The program will give an error of there is no mode which fits. When choosing a resolution, bear in mind that higher resolutions will take more frame storage space. "View" specifies the angle from which you look at the scene. The numbers are angles in degrees, the first being the direction in the x-y plane. This is the angle through which the scene is rotated about the vertical axis. If this is 0, the x direction is horizontally across your screen (+x on the right, -y on the left) and the +y direction is out of the screen towards you. The second number is the "elevation": an value of zero will put the viewpoint on the x-y plane (looking horizontally, +z axis vertically upwards), and an angle of 90 would have you looking directly down from above. The "background" command is optional: if you include "background back" in the rendering block, the program assumes that the background object(s) are always behind the solid object(s), and does not redraw the background every frame. This is useful, for example, when the background is a set of stairs, as it reduces the frame drawing time. The default setting is "background mix" which lets the background object(s) be partly in front of and partly behind the solid(s). The order in which any of the above options are arranged does not matter, as long as the rendering options are kept inside the rendering block. CREATING OBJECTS: BACKGROUND OBJECTS Background objects are the fixed pieces of scenery which the moving objects interact with. You can have as many background objects as you want: they are all created at the origin but they can be moved to any position. The script to create a background object is as follows: background { create { type <object_type> points <points_spec> size <size_spec> } translate <x>,<y>,<z> } The indentation is optional: it was added for clarity. The first thing in a background block must be a create block, and there must be only one of these. The translate command is optional, and there may be any number of these. The three parameters are the amounts by which to move the object in the x, y and z directions. All distances should be followed by a unit, eg 3.3in (with no separating space) as described earlier. The default unit is 1/640 of a printer's point (a very small distance), so if the translate command has no visible effect, check the units. The first word in the create block must be "type", because the effect of the "points" and "size" commands are dependant on the object type. For a background object, <object_type> must be one of "sheet", "sphere" or "stairs". THE SPHERE OBJECT This has one "points" parameter and one "size" parameter, i.e. the word "points" must be followed by one number, and "size" must be followed by a distance. The previous remarks about units for distances also apply to all size parameters. The size parameter for a sphere sets its radius. The points parameter sets the number of points used to draw the sphere: if this parameter is P, there are P rings of points, and the widest one contains 2P points. 12 is an adequate value for this parameter. You should avoid creating objects which extend into a sphere, because these will be ejected outwards violently. THE SHEET OBJECT This has one "points" parameter and one "size" parameter. Sheets are always square: the points parameter sets the number of points along one side, and the size parameter sets the length of one side. For example, if you use "points 21" and "size 5in" the program will create a sheet with 21 x 21 = 441 points, so if you use "lines" as the rendering type the sheet will be divided into 20 x 20 squares, each 0.25in x 0.25in. The sheet is created horizontal (ie. on the x-y plane) and centred on the origin, so in the above example the sheet would extend from -5in to +5in in the x direction, from -5in to +5in in the y direction, and have z=0 for all points. When the sheet is created as a background object, it defines a "floor". No solid will be allowed to pass below the height of the sheet. You should avoid creating objects which extend below the floor, because these will be ejected upwards violently. Note that the floor effect does not depend on the size of the sheet, only on its vertical position.: the effective floor is an infinite plane at the same height as the sheet. If you wanted an invisible floor, therefore, you could create a small sheet with points set to 2, and move it out of sight in the x or y direction. THE STAIRS OBJECT Being a more complex object, this takes three points parameters and three size parameters. Just to confuse things, the points parameters do not correspond to the same features as the size parameters, unlike the other objects. Let's take the size parameters first; these are: size <step_width>,<step_height>,<step_depth> These are quite obvious: <step_width> is the width of the steps along the x axis (see diagram below), <step_height> is the amount you would have to lift your feet (z direction) and <step_depth> is the amount of room you have for your feet on each step (y direction). The points parameters are: points <pts_width>,<steps>,<pts_depth> The first and third of these just set the number of points used to draw the horizontal part of the steps: the second sets the number of steps. + |\ +---+ \ Axes: |\ \ \ z +---+ \ \ + | |\ \ \ \| | +---+ \ \ +---+ *-----y \ \ \ \| \ O \ +---+ \ \ \| x +---+ O is the position of the origin The above diagram shows the orientation and initial position of the stairs. You will normally want to translate the stairs in the -y,-z direction after creating them. Note that due to the orientation, the first view parameter will need to be between 90 and 270 for the viewpoint to be on the right side of the stairs. Like the sheet, the extent of the stairs is in fact infinite: solids do not fall off the sides of the stairs, and the stairs continue above and below those which are visible. CREATING OBJECTS: SOLID OBJECTS solid { create { type <object_type> points <points_spec> size <size_spec> } scale <xs>,<ys>,<zs> nearbonds { spring_const <lambda> range <range_val> } <other commands> } The block to create a solid starts with a "create" block, like backgrounds. The only difference here is the choice of objects you can create: a sheet, a cuboid, a cube, a tube or a compound object. These will be described individually later. The scale command is optional: it lets you scale an object in the x, y and z directions. This command is mainly present to allow you to change the size of a compound object, which would otherwise be very tedious. I would advise that you keep the x, y and z scalings similar, as objects which have different point spacings in different directions tend to be unstable. The scale command goes before nearbonds because otherwise would get stretched: you may want to use this effect, but keep the scale factors close to 1 to prevent explosions. The "nearbonds" block is what makes the solid a solid (but see "solid_damp -1" for another way). It needs to be put after the "create" block, because it creates all the little springs which hold the points in the object together. It is called "nearbonds" because it only bonds together points which are fairly close. The number after "spring_const" sets the stiffness of the springs, and "range" sets how near two points have to be for a spring to connect them. For each object, the program works out an average "nearest-neighbour" distance (call this D), and the "range" value is in terms of D. Points with a separation of between D/2 and D are linked with a spring of strength <lambda>, and points with a separation between D and D*<range_val> are linked with a spring of strength which decreases smoothly down to 0 for D*<range_val>. Points with a separation of less than D/2 are not connected. OTHER COMMANDS There are two commands you can use to place the object where you want it: translate <x>,<y>,<z> rotate <xr>,<yr>,<zr> The translate command has been described above. The rotate command rotates the object ABOUT THE ORIGIN. It rotates by <xr>, <yr> and <zr> degrees about the x, y, and z axes respectively. You can have any number of translate and rotate commands without fear of slowing down the program, because the commands only affect the initial setting up. For example, if you want to rotate by 15 degrees about the point (1in,1in,2in), around the x axis, you could use: translate -1in,-1in,-2in rotate 15,0,0 translate 1in,1in,2in and then translate the solid to where you want it. There are some other commands which can go in a solid block, but these should only be given once in each solid. They are: velocity <xv>,<yv>,<zv> spin <xr>,<yr>,<zr> air_damp <damp_val> solid_damp <damp_val> damping <damp_val> fix_vel <box_x>,<box_y>,<box_z>,<box_w>,<box_d>,<box_h>, <xv>,<yv>,<zv> pull <first>,<last>,<step>,<xv>,<yv>,<zv> repel <repel_strength> THE VELOCITY COMMAND The "velocity" command just gives the object an initial velocity, by setting the velocity of all the points to the amount specified. The parameters are the velocity components in the x, y and z directions, which can be given in various units as described earlier. NB: The velocity of an object is not rotated when you rotate the object. THE SPIN COMMAND The "spin" command gives the object an angular velocity. The three parameters are the components of angular velocity about the x, y and z axes. The centre of the rotation is always the origin: make sure that the point you want the object to spin around is at the origin when you use the "spin" command. If you want to give an object both a spin and a linear velocity, you must use the "velocity" command first, because "velocity" just sets the velocities of the points, whereas "spin" adds to the velocities already present. THE AIR_DAMP COMMAND "air_damp <damp_val>" is a command which simulates wind resistance on objects, by slowing down points on the surface of objects. This replaces the old command "damping" which affected all the points in an object, and was also slightly direction-dependant. The parameter for this command is an integer value: 4 is a good starting point. Increasing this value by 1 halves the amount of wind resistance, and decreasing it by 1 doubles it. Values below 2 may cause the object to explode. The use of this command is appropriate for: a/ Sheet-type objects, which in real life are slowed a lot by air pressure b/ Objects which are picking up speed too fast: try running the animation "FlopCube" with no air damping. THE "SOLID_DAMP" COMMAND: The damping routine in the previous version of FEMS used a simple method whose effect was similar to having wind resistance on every element in an object: the faster a point was moving, the more it was slowed down. This gave a realistic effect for objects like cloths, whose behaviour is strongly affected by air resistance, but it also rapidly slows the rotation of a spinning ball, for example, and prevents freely-falling solids from picking up much speed. The solid_damp command damps out wobbles without these side-effects, and makes the object slightly less floppy in the process. The parameter is the same as for air_damp, except... If you use the command "solid_damp -1", the object will be made completely solid ("frozen"). In this case any bonds in the object are not used, and can be left out of the script. You may notice that the frozen object will tend to stick into background objects: this is a consequence of the background objects being modelled as "force fields" and the frozen object being capable of applying much greater forces on them, where the non-frozen object would have bent or squashed. You can still have air damping on the same object, and there is nothing to stop you having a mixture of frozen and normal objects in one simulation. THE DAMPING COMMAND The "damping" command takes the same type of parameter as the other types of damping. This type of damping has drawbacks which are described above, but the command has been left in for downwards compatibility. THE FIX_VEL COMMAND Often in an animation, you need to give part or all of an object a fixed velocity or to hold it still. The "fix_vel" command lets you do this. The first six parameters define a cuboid of space. Any points which are in this cuboid at the time the "fix_vel" command is done are given a fixed velocity, which can be zero. The first three parameters are the position of the corner of the cuboid, and the next three are its extent in the x, y and z directions. In other words, the cuboid goes from <box_x> to <box_x>+<box_w> in the x direction, from <box_y> to <box_y>+<box_d> in the y direction, and from <box_z> to <box_z>+<box_h> in the z direction. The last three parameters are the velocity components in the three directions. You can have any number of "fix_vel" commands in a create block, but you can only have a maximum of 63 different velocities used by "fix_vel" commands in an animation script. THE PULL COMMAND The "pull" command is rather low-level: it needs to refer to the numbering of the points in an object. The first three parameters are like a FOR-NEXT loop which defines a set of points, and these points are given a fixed velocity given by the last three parameters. This command is only present for downwards compatibility: you should now use "fix_vel" instead. You can now have any number of "pull" commands for an object, but only 63 different pull velocities in a script. THE REPEL COMMAND The "repel" command causes solid objects to repel each other when they get close. The parameter specifies the strength of the repulsion. This command works by making the surface points of solids repel each other when they get within a certain range. For two solids to interact, they must both have a "repel" command in their create block. The range of the repulsive force is set to be twice the spacing of the points, so that the force is not too small in the gaps between the points. The unfortunate side effect of this is that objects start repelling each other before they meet. The only way round this is to reduce the repulsion until the objects just touch before separating again, but the value you need to make this happen will depend on how fast the objects are moving, how heavy they are, etc. You can reduce the range by using more points on the surfaces of the objects, but this means there are more points which have to be compared with each other, which slows things down. A compromise, which is used in the animation "repel.BallBlocks", is to have one object with closely spaced points, and one with widely separated points. The repulsion force range is twice the shorter point spacing, and the number of comparisons is the product of (repulsive points on first object) and (repulsive points on second object), so this gives the best of both worlds. The strength of the repulsive force used when two objects meet is the product of the "repel" parameter given for the two objects. As well as making the surface points repulsive, the program also makes the "second layer in" points repulsive, with four times the repulsion strength. This is why there is a pause during the reading of the script when a "repel" command is found: the program is working out which points are in the second layer. This is done so that objects will continue to repel even if they pass into each other slightly. THE CUBOID OBJECT To create a cuboid, use the following parameters in the "create" block: type cuboid size <x_size>,<y_size>,<z_size> points <x_pts>,<y_pts>,<z_pts> The meaning of the parameters is hopefully obvious. It is a good idea to keep the separation of the points the same in all three directions, ie. <size>/<pts> should be similar for x, y and z. The cuboid is created initially with one corner at the origin, with the rest of the object in the +x, +y, +z octant. THE CUBE OBJECT The setup for a cube is: type cube size <size> points <pts> This is basically the same as a cuboid, except the parameters for the three directions are all set to be equal, and the cube is created centred on the origin. THE SOLID SPHERE OBJECT type solid_sphere size <radius> points <pts>,<thick> The "sphere" object just creates the outer shell of a sphere. The "solid_sphere" object makes this more solid by adding concentric spheres of points inside the original sphere. The <radius> and <pts> parameters are the same as as for a sphere, and the <thick> parameter specifies how many concentric spheres are made (including the outer one). If you specify more than will fit, the program will put in as many as it can. The difference in the radii of the concentric spheres is PI*<radius>/<pts>. THE TUBE OBJECT type tube size <length>,<radius>,<thickness> points <length_pts>,<circ_points>,<thick_points> The <length> parameter sets the length of the tube. <Radius> sets the distance from the axis of the tube to the centre of its walls, and <thickness> sets the wall thickness. The three points parameters set the number of points along the length, around the circumference and across the wall respectively. As I mentioned earlier, it is a good idea to keep the "nearest-neighbour" distance fairly constant, so as a rough guide, try to keep: <length_pts> <circ_points> <thick_points> ------------ = ------------- = -------------- <length> 2*PI*<radius> <thickness> and <radius> > 2*<thickness> These are only approximate rules, so feel free to try things out and see what happens. COMPOUND OBJECTS Compound objects let you stick together any number of other solids to create a more complex object. Here is an example of how a compound object might look: create { type compound part { type cuboid points 7,3,3 size 3in,1in,1in offset 1in,0,0 } part { type cuboid:points 3,3,11:size 1in,1in,5in } part { type cuboid:points 3,7,3:size 1in,3in,1in:offset 0,1in,0 } } The first line in the "create" block is "type compound", then there is a list of "part" blocks. Each of these is much like a "create" block (it has type, size and points commands), but with the following differences: 1 You can add an "offset" command at the end 2 You cannot have a compound type object as a part! The "offset" command is exactly equivalent to a "translate" command, but only applies to the particular part whose block it is in. In the example above, the first "part" block is written out with one command per line, but the rest are contracted onto one line each by replacing newlines with colons. Remember that the curly brackets must be separated from the commands, else you will get an error. There is no limit on the number of parts a compound object can have. Compound solids work by letting you create several objects before you use the "nearbonds" command. When you do use this command, it connects the parts together. This method means that parts will not get connected if they are separated by more than the range of the "nearbonds" command. You should also not let parts pass through each other, as the resulting compound object is unstable. GETTING SCREENSHOTS There is no built-in facility for obtaining screenshots, but it is simple to do this by adding a line to PROCframe_actions in the program. This procedure is called after each frame has been drawn, with the frame number passed in frame%. To save a picture of frame 30, add a line at the beginning of PROCframe_actions which says: IF frame%=30 THEN *ScreenSave FEMSpic30 You could also make the ScreenSave conditional on the Alt key being held down, for example. FACET OUTPUT I have included in the program a facility to output the coordinates of all the triangular "facets" which make up the surfaces of the objects. You could use this data to create an input file for a ray tracer or other 3D rendering program. As for screenshots, you just add a line to PROCframe_actions like: IF frame%=30 THEN PROCoutput_facets("$.Temp.facets30") which will create a data file when the program reaches the 30th frame. The data file consists of a list of numbers which can the read by a INPUT#chan%,A% type BASIC statement. You can read the file with a program which looks something like this: REPEAT INPUT#chan%,A% IF A%<>1 THEN ERROR 1,"Bad file" INPUT#chan%,N% FOR i%=1 TO N% INPUT#chan%,X1%,Y1%,Z1% INPUT#chan%,X2%,Y2%,Z2% INPUT#chan%,X3%,Y3%,Z3% REM do something with the data here NEXT UNTIL EOF#chan% The coordinates of the three corners of each facet are given in units of 1/640th of a point, in other words 1/&B400 of an inch. Have fun!
00000000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000010 20 46 45 4d 53 20 56 45 52 53 49 4f 4e 20 32 2e | FEMS VERSION 2.| 00000020 33 20 44 4f 43 55 4d 45 4e 54 41 54 49 4f 4e 20 |3 DOCUMENTATION | 00000030 46 49 4c 45 0a 20 20 20 20 20 20 20 20 20 20 20 |FILE. | 00000040 20 20 20 20 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ===========| 00000050 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| 00000060 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 20 20 20 20 20 20 |========.. | 00000070 20 20 54 68 69 73 20 66 69 6c 65 20 64 65 73 63 | This file desc| 00000080 72 69 62 65 73 2c 20 69 6e 20 61 20 6d 6f 72 65 |ribes, in a more| 00000090 20 63 6f 6d 70 6c 65 74 65 20 77 61 79 20 74 68 | complete way th| 000000a0 61 6e 20 74 68 65 20 6d 61 67 61 7a 69 6e 65 0a |an the magazine.| 000000b0 61 72 74 69 63 6c 65 73 2c 20 74 68 65 20 73 79 |articles, the sy| 000000c0 6e 74 61 78 20 6f 66 20 73 63 72 69 70 74 20 66 |ntax of script f| 000000d0 69 6c 65 73 20 66 6f 72 20 46 45 4d 53 20 76 65 |iles for FEMS ve| 000000e0 72 73 69 6f 6e 20 32 2e 33 2c 20 61 73 20 73 75 |rsion 2.3, as su| 000000f0 70 70 6c 69 65 64 20 6f 6e 0a 74 68 65 20 63 6f |pplied on.the co| 00000100 76 65 72 20 64 69 73 6b 20 6f 66 20 74 68 65 20 |ver disk of the | 00000110 46 65 62 72 75 61 72 79 20 31 39 39 34 20 42 42 |February 1994 BB| 00000120 43 20 41 63 6f 72 6e 20 55 73 65 72 2e 20 20 49 |C Acorn User. I| 00000130 6e 20 74 68 65 20 69 6e 74 65 72 65 73 74 73 20 |n the interests | 00000140 6f 66 0a 63 6c 61 72 69 74 79 2c 20 73 6f 6d 65 |of.clarity, some| 00000150 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 61 72 | parts of the ar| 00000160 74 69 63 6c 65 73 20 61 72 65 20 61 6c 73 6f 20 |ticles are also | 00000170 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 69 73 |included in this| 00000180 20 66 69 6c 65 2e 0a 0a 20 20 20 20 20 20 20 20 | file... | 00000190 46 6f 72 20 61 20 73 75 6d 6d 61 72 79 20 6f 66 |For a summary of| 000001a0 20 74 68 65 20 64 69 66 66 65 72 65 6e 63 65 73 | the differences| 000001b0 20 62 65 74 77 65 65 6e 20 74 68 69 73 20 66 69 | between this fi| 000001c0 6c 65 20 61 6e 64 20 74 68 65 20 6f 6e 65 0a 73 |le and the one.s| 000001d0 75 70 70 6c 69 65 64 20 6f 6e 20 74 68 65 20 4a |upplied on the J| 000001e0 61 6e 75 61 72 79 20 63 6f 76 65 72 20 64 69 73 |anuary cover dis| 000001f0 6b 2c 20 70 6c 65 61 73 65 20 73 65 65 20 74 68 |k, please see th| 00000200 65 20 66 69 6c 65 20 22 43 68 61 6e 67 65 73 32 |e file "Changes2| 00000210 b7 33 22 2e 0a 0a 0a 44 45 53 49 47 4e 49 4e 47 |.3"....DESIGNING| 00000220 20 59 4f 55 52 20 4f 57 4e 20 53 43 45 4e 45 53 | YOUR OWN SCENES| 00000230 0a 0a 20 20 20 20 20 20 20 20 54 6f 20 67 69 76 |.. To giv| 00000240 65 20 6d 61 78 69 6d 75 6d 20 66 6c 65 78 69 62 |e maximum flexib| 00000250 69 6c 69 74 79 20 69 6e 20 74 68 65 20 73 65 74 |ility in the set| 00000260 74 69 6e 67 20 75 70 20 6f 66 20 73 69 6d 75 6c |ting up of simul| 00000270 61 74 69 6f 6e 73 2c 20 61 6e 64 0a 62 65 63 61 |ations, and.beca| 00000280 75 73 65 20 74 68 65 72 65 20 61 72 65 20 73 6f |use there are so| 00000290 20 6d 61 6e 79 20 70 6f 73 73 69 62 69 6c 69 74 | many possibilit| 000002a0 69 65 73 2c 20 74 68 65 20 73 63 65 6e 65 20 61 |ies, the scene a| 000002b0 6e 64 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 |nd parameters ar| 000002c0 65 0a 64 65 73 63 72 69 62 65 64 20 69 6e 20 61 |e.described in a| 000002d0 20 74 65 78 74 20 66 69 6c 65 20 22 73 63 72 69 | text file "scri| 000002e0 70 74 22 20 77 68 69 63 68 20 74 65 6c 6c 73 20 |pt" which tells | 000002f0 74 68 65 20 70 72 6f 67 72 61 6d 20 77 68 61 74 |the program what| 00000300 20 74 6f 20 64 6f 2e 20 20 45 76 65 6e 0a 69 66 | to do. Even.if| 00000310 20 79 6f 75 20 64 6f 6e 27 74 20 66 65 65 6c 20 | you don't feel | 00000320 75 70 20 74 6f 20 63 72 65 61 74 69 6e 67 20 79 |up to creating y| 00000330 6f 75 72 20 6f 77 6e 20 73 63 65 6e 65 73 2c 20 |our own scenes, | 00000340 66 69 64 64 6c 69 6e 67 20 77 69 74 68 20 74 68 |fiddling with th| 00000350 65 20 70 72 6f 76 69 64 65 64 0a 64 65 66 69 6e |e provided.defin| 00000360 69 74 69 6f 6e 20 66 69 6c 65 73 20 77 69 6c 6c |ition files will| 00000370 20 61 6c 6c 6f 77 20 79 6f 75 20 74 6f 20 63 68 | allow you to ch| 00000380 61 6e 67 65 20 74 68 69 6e 67 73 20 6c 69 6b 65 |ange things like| 00000390 20 74 68 65 20 73 63 72 65 65 6e 20 72 65 73 6f | the screen reso| 000003a0 6c 75 74 69 6f 6e 2c 0a 72 65 6e 64 65 72 69 6e |lution,.renderin| 000003b0 67 20 73 74 79 6c 65 20 28 77 68 65 74 68 65 72 |g style (whether| 000003c0 20 74 68 65 20 70 69 63 74 75 72 65 20 69 73 20 | the picture is | 000003d0 64 72 61 77 6e 20 77 69 74 68 20 64 6f 74 73 20 |drawn with dots | 000003e0 6f 72 20 6c 69 6e 65 73 29 20 61 6e 64 20 74 68 |or lines) and th| 000003f0 65 0a 76 69 65 77 70 6f 69 6e 74 20 75 73 65 64 |e.viewpoint used| 00000400 2e 20 20 53 69 6e 63 65 20 74 68 65 20 73 69 6d |. Since the sim| 00000410 75 6c 61 74 69 6f 6e 20 73 65 74 75 70 20 66 69 |ulation setup fi| 00000420 6c 65 73 20 61 72 65 20 6a 75 73 74 20 74 65 78 |les are just tex| 00000430 74 20 66 69 6c 65 73 2c 20 74 68 65 79 0a 63 61 |t files, they.ca| 00000440 6e 20 62 65 20 63 72 65 61 74 65 64 20 61 6e 64 |n be created and| 00000450 20 6d 6f 64 69 66 69 65 64 20 69 6e 20 45 64 69 | modified in Edi| 00000460 74 20 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 74 |t or any other t| 00000470 65 78 74 20 65 64 69 74 6f 72 2e 20 20 54 68 65 |ext editor. The| 00000480 20 6d 61 67 61 7a 69 6e 65 0a 65 78 70 6c 61 69 | magazine.explai| 00000490 6e 73 20 74 68 65 20 67 65 6e 65 72 61 6c 20 69 |ns the general i| 000004a0 64 65 61 20 6f 66 20 73 63 72 69 70 74 20 66 69 |dea of script fi| 000004b0 6c 65 73 20 61 6e 64 20 73 6f 6d 65 20 68 69 6e |les and some hin| 000004c0 74 73 20 66 6f 72 20 74 68 65 20 73 75 63 63 65 |ts for the succe| 000004d0 73 73 66 75 6c 0a 63 72 65 61 74 69 6f 6e 20 6f |ssful.creation o| 000004e0 66 20 61 6e 69 6d 61 74 69 6f 6e 73 2e 0a 0a 0a |f animations....| 000004f0 53 43 52 49 50 54 20 46 49 4c 45 53 3a 20 47 45 |SCRIPT FILES: GE| 00000500 4e 45 52 41 4c 0a 0a 31 20 20 20 20 20 20 20 54 |NERAL..1 T| 00000510 68 65 20 66 69 72 73 74 20 6c 69 6e 65 20 6f 66 |he first line of| 00000520 20 61 20 73 63 72 69 70 74 20 6d 75 73 74 20 62 | a script must b| 00000530 65 20 22 46 45 4d 53 32 22 2e 20 20 54 68 69 73 |e "FEMS2". This| 00000540 20 69 73 20 73 6f 20 74 68 65 20 70 72 6f 67 72 | is so the progr| 00000550 61 6d 0a 63 61 6e 20 72 65 63 6f 67 6e 69 7a 65 |am.can recognize| 00000560 20 76 61 6c 69 64 20 64 65 66 69 6e 69 74 69 6f | valid definitio| 00000570 6e 20 66 69 6c 65 73 2c 20 61 6e 64 20 6b 6e 6f |n files, and kno| 00000580 77 73 20 77 68 69 63 68 20 76 65 72 73 69 6f 6e |ws which version| 00000590 20 74 68 65 79 20 61 72 65 2e 0a 0a 32 20 20 20 | they are...2 | 000005a0 20 20 20 20 54 68 65 20 70 72 6f 67 72 61 6d 20 | The program | 000005b0 64 6f 65 73 6e 27 74 20 63 61 72 65 20 77 68 65 |doesn't care whe| 000005c0 74 68 65 72 20 74 68 65 20 6c 65 74 74 65 72 73 |ther the letters| 000005d0 20 69 6e 20 74 68 65 20 73 63 72 69 70 74 20 61 | in the script a| 000005e0 72 65 20 75 70 70 65 72 0a 6f 72 20 6c 6f 77 65 |re upper.or lowe| 000005f0 72 20 63 61 73 65 2c 20 61 73 20 69 74 20 63 6f |r case, as it co| 00000600 6e 76 65 72 74 73 20 74 68 65 6d 20 61 6c 6c 20 |nverts them all | 00000610 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 20 77 68 |to lower case wh| 00000620 65 6e 20 69 74 20 72 65 61 64 73 20 74 68 65 20 |en it reads the | 00000630 66 69 6c 65 2e 0a 0a 33 20 20 20 20 20 20 20 4c |file...3 L| 00000640 69 6e 65 73 20 63 61 6e 20 62 65 20 63 6f 6e 63 |ines can be conc| 00000650 61 74 65 6e 61 74 65 64 20 62 79 20 72 65 70 6c |atenated by repl| 00000660 61 63 69 6e 67 20 61 20 6e 65 77 6c 69 6e 65 20 |acing a newline | 00000670 77 69 74 68 20 61 20 63 6f 6c 6f 6e 2c 20 61 6e |with a colon, an| 00000680 64 0a 73 70 61 63 65 73 20 63 61 6e 20 62 65 20 |d.spaces can be | 00000690 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 |used instead of | 000006a0 63 6f 6d 6d 61 73 20 69 66 20 79 6f 75 20 77 69 |commas if you wi| 000006b0 73 68 2e 0a 0a 34 20 20 20 20 20 20 20 43 6f 6d |sh...4 Com| 000006c0 6d 65 6e 74 73 20 61 72 65 20 61 6e 79 74 68 69 |ments are anythi| 000006d0 6e 67 20 62 65 74 77 65 65 6e 20 61 20 2f 2a 20 |ng between a /* | 000006e0 61 6e 64 20 61 20 2a 2f 20 28 6c 69 6b 65 20 69 |and a */ (like i| 000006f0 6e 20 43 29 2c 20 61 6e 64 20 61 72 65 0a 69 67 |n C), and are.ig| 00000700 6e 6f 72 65 64 2e 20 20 43 6f 6d 6d 65 6e 74 73 |nored. Comments| 00000710 20 63 61 6e 20 62 65 20 6e 65 73 74 65 64 20 28 | can be nested (| 00000720 75 6e 6c 69 6b 65 20 69 6e 20 43 29 2e 0a 0a 35 |unlike in C)...5| 00000730 20 20 20 20 20 20 20 41 20 22 62 6c 6f 63 6b 22 | A "block"| 00000740 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 61 20 62 | consists of a b| 00000750 6c 6f 63 6b 20 6e 61 6d 65 20 66 6f 6c 6c 6f 77 |lock name follow| 00000760 65 64 20 62 79 20 73 65 76 65 72 61 6c 20 63 6f |ed by several co| 00000770 6d 6d 61 6e 64 73 0a 65 6e 63 6c 6f 73 65 64 20 |mmands.enclosed | 00000780 69 6e 20 63 75 72 6c 79 20 62 72 61 63 6b 65 74 |in curly bracket| 00000790 73 2e 20 20 54 68 65 20 62 72 61 63 6b 65 74 73 |s. The brackets| 000007a0 20 6d 75 73 74 20 68 61 76 65 20 61 20 73 65 70 | must have a sep| 000007b0 61 72 61 74 6f 72 20 74 6f 20 65 69 74 68 65 72 |arator to either| 000007c0 0a 73 69 64 65 20 6f 66 20 74 68 65 6d 20 69 65 |.side of them ie| 000007d0 2e 20 75 73 65 20 22 72 65 6e 64 65 72 69 6e 67 |. use "rendering| 000007e0 20 7b 20 74 79 70 65 20 64 6f 74 73 20 7d 22 20 | { type dots }" | 000007f0 6e 6f 74 20 22 72 65 6e 64 65 72 69 6e 67 7b 20 |not "rendering{ | 00000800 74 79 70 65 20 64 6f 74 73 7d 20 22 0a 0a 36 20 |type dots} "..6 | 00000810 20 20 20 20 20 20 41 20 73 63 72 69 70 74 20 63 | A script c| 00000820 6f 6e 73 69 73 74 73 20 6f 66 20 73 6f 6d 65 20 |onsists of some | 00000830 67 6c 6f 62 61 6c 20 70 61 72 61 6d 65 74 65 72 |global parameter| 00000840 73 2c 20 61 20 22 72 65 6e 64 65 72 69 6e 67 22 |s, a "rendering"| 00000850 20 62 6c 6f 63 6b 2c 0a 61 6e 64 20 61 6e 79 20 | block,.and any | 00000860 6e 75 6d 62 65 72 20 6f 66 20 22 73 6f 6c 69 64 |number of "solid| 00000870 22 20 61 6e 64 20 22 62 61 63 6b 67 72 6f 75 6e |" and "backgroun| 00000880 64 22 20 62 6c 6f 63 6b 73 2e 0a 0a 0a 53 43 52 |d" blocks....SCR| 00000890 49 50 54 20 46 49 4c 45 53 3a 20 55 4e 49 54 53 |IPT FILES: UNITS| 000008a0 0a 0a 20 20 20 20 20 20 20 20 41 74 20 70 6f 69 |.. At poi| 000008b0 6e 74 73 20 69 6e 20 61 20 73 63 72 69 70 74 20 |nts in a script | 000008c0 77 68 65 72 65 20 79 6f 75 20 6e 65 65 64 20 74 |where you need t| 000008d0 6f 20 73 70 65 63 69 66 79 20 61 20 64 69 73 74 |o specify a dist| 000008e0 61 6e 63 65 2c 20 61 0a 76 65 6c 6f 63 69 74 79 |ance, a.velocity| 000008f0 20 6f 72 20 61 6e 20 61 6e 67 6c 65 2c 20 79 6f | or an angle, yo| 00000900 75 20 68 61 76 65 20 61 20 63 68 6f 69 63 65 20 |u have a choice | 00000910 6f 66 20 74 68 65 20 75 6e 69 74 73 20 79 6f 75 |of the units you| 00000920 20 63 61 6e 20 75 73 65 2e 20 20 54 68 65 20 75 | can use. The u| 00000930 6e 69 74 73 0a 6d 75 73 74 20 63 6f 6d 65 20 73 |nits.must come s| 00000940 74 72 61 69 67 68 74 20 61 66 74 65 72 20 74 68 |traight after th| 00000950 65 20 6e 75 6d 62 65 72 2c 20 77 69 74 68 6f 75 |e number, withou| 00000960 74 20 61 20 73 65 70 61 72 61 74 69 6e 67 20 73 |t a separating s| 00000970 70 61 63 65 2c 20 69 65 2e 20 75 73 65 0a 22 31 |pace, ie. use."1| 00000980 32 63 6d 22 20 6e 6f 74 20 22 31 32 20 63 6d 22 |2cm" not "12 cm"| 00000990 2e 0a 0a 52 65 63 6f 67 6e 69 7a 65 64 20 75 6e |...Recognized un| 000009a0 69 74 73 20 66 6f 72 20 64 69 73 74 61 6e 63 65 |its for distance| 000009b0 3a 0a 20 20 20 20 20 20 20 20 69 6e 20 20 20 20 |:. in | 000009c0 20 20 69 6e 63 68 65 73 0a 20 20 20 20 20 20 20 | inches. | 000009d0 20 66 74 20 20 20 20 20 20 66 65 65 74 0a 20 20 | ft feet. | 000009e0 20 20 20 20 20 20 63 6d 20 20 20 20 20 20 63 65 | cm ce| 000009f0 6e 74 69 6d 65 74 72 65 73 0a 20 20 20 20 20 20 |ntimetres. | 00000a00 20 20 6d 6d 20 20 20 20 20 20 6d 69 6c 6c 69 6d | mm millim| 00000a10 65 74 72 65 73 0a 74 68 65 20 64 65 66 61 75 6c |etres.the defaul| 00000a20 74 20 75 6e 69 74 20 69 73 20 31 2f 34 36 30 38 |t unit is 1/4608| 00000a30 30 20 6f 66 20 61 6e 20 69 6e 63 68 20 0a 0a 52 |0 of an inch ..R| 00000a40 65 63 6f 67 6e 69 73 65 64 20 75 6e 69 74 73 20 |ecognised units | 00000a50 66 6f 72 20 76 65 6c 6f 63 69 74 79 3a 0a 20 20 |for velocity:. | 00000a60 20 20 20 20 20 20 69 70 73 20 20 20 20 20 69 6e | ips in| 00000a70 63 68 65 73 20 70 65 72 20 73 65 63 6f 6e 64 0a |ches per second.| 00000a80 20 20 20 20 20 20 20 20 66 74 70 73 20 20 20 20 | ftps | 00000a90 66 65 65 74 20 70 65 72 20 73 65 63 6f 6e 64 0a |feet per second.| 00000aa0 20 20 20 20 20 20 20 20 63 6d 70 73 20 20 20 20 | cmps | 00000ab0 63 65 6e 74 69 6d 65 74 72 65 73 20 70 65 72 20 |centimetres per | 00000ac0 73 65 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 6d |second. m| 00000ad0 6d 70 73 20 20 20 20 6d 69 6c 6c 69 6d 65 74 72 |mps millimetr| 00000ae0 65 73 20 70 65 72 20 73 65 63 6f 6e 64 20 0a 74 |es per second .t| 00000af0 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69 74 20 |he default unit | 00000b00 69 73 20 31 2f 28 39 32 31 2e 36 29 20 6f 66 20 |is 1/(921.6) of | 00000b10 61 6e 20 69 6e 63 68 20 70 65 72 20 73 65 63 6f |an inch per seco| 00000b20 6e 64 0a 0a 52 65 63 6f 67 6e 69 73 65 64 20 75 |nd..Recognised u| 00000b30 6e 69 74 73 20 66 6f 72 20 61 6e 67 6c 65 73 3a |nits for angles:| 00000b40 0a 20 20 20 20 20 20 20 20 64 65 67 20 20 20 20 |. deg | 00000b50 20 64 65 67 72 65 65 73 0a 20 20 20 20 20 20 20 | degrees. | 00000b60 20 72 61 64 20 20 20 20 20 72 61 64 69 61 6e 73 | rad radians| 00000b70 0a 74 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69 |.the default uni| 00000b80 74 20 69 73 20 64 65 67 72 65 65 73 0a 0a 52 65 |t is degrees..Re| 00000b90 63 6f 67 6e 69 73 65 64 20 75 6e 69 74 73 20 66 |cognised units f| 00000ba0 6f 72 20 61 6e 67 75 6c 61 72 20 76 65 6c 6f 63 |or angular veloc| 00000bb0 69 74 79 3a 0a 20 20 20 20 20 20 20 20 64 65 67 |ity:. deg| 00000bc0 70 73 20 20 20 64 65 67 72 65 65 73 20 70 65 72 |ps degrees per| 00000bd0 20 73 65 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 | second. | 00000be0 72 61 64 70 73 20 20 20 72 61 64 69 61 6e 73 20 |radps radians | 00000bf0 70 65 72 20 73 65 63 6f 6e 64 0a 20 20 20 20 20 |per second. | 00000c00 20 20 20 72 70 6d 20 20 20 20 20 72 65 76 6f 6c | rpm revol| 00000c10 75 74 69 6f 6e 73 20 70 65 72 20 6d 69 6e 75 74 |utions per minut| 00000c20 65 0a 74 68 65 20 64 65 66 61 75 6c 74 20 75 6e |e.the default un| 00000c30 69 74 20 69 73 20 30 2e 30 35 36 38 38 39 20 64 |it is 0.056889 d| 00000c40 65 67 72 65 65 73 20 70 65 72 20 73 65 63 6f 6e |egrees per secon| 00000c50 64 0a 0a 0a 47 4c 4f 42 41 4c 20 50 41 52 41 4d |d...GLOBAL PARAM| 00000c60 45 54 45 52 53 0a 0a 20 20 20 20 20 20 20 20 54 |ETERS.. T| 00000c70 68 65 72 65 20 61 72 65 20 74 68 72 65 65 20 67 |here are three g| 00000c80 6c 6f 62 61 6c 20 70 61 72 61 6d 65 74 65 72 20 |lobal parameter | 00000c90 63 6f 6d 6d 61 6e 64 73 3a 0a 0a 20 20 20 20 20 |commands:.. | 00000ca0 20 20 20 20 20 20 20 20 20 20 20 66 72 61 6d 65 | frame| 00000cb0 5f 61 69 6d 20 3c 6e 75 6d 62 65 72 3e 0a 20 20 |_aim <number>. | 00000cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 72 | gr| 00000cd0 61 76 69 74 79 20 3c 6e 75 6d 62 65 72 3e 2c 3c |avity <number>,<| 00000ce0 6e 75 6d 62 65 72 3e 2c 3c 6e 75 6d 62 65 72 3e |number>,<number>| 00000cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000d00 20 74 69 6d 65 5f 64 69 76 20 3c 6e 75 6d 62 65 | time_div <numbe| 00000d10 72 3e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 |r>.. The | 00000d20 6e 75 6d 62 65 72 20 61 66 74 65 72 20 66 72 61 |number after fra| 00000d30 6d 65 5f 61 69 6d 20 69 73 20 74 68 65 20 6e 75 |me_aim is the nu| 00000d40 6d 62 65 72 20 6f 66 20 66 72 61 6d 65 73 20 79 |mber of frames y| 00000d50 6f 75 20 77 61 6e 74 20 74 6f 20 61 69 6d 0a 66 |ou want to aim.f| 00000d60 6f 72 2e 20 20 41 6c 6c 20 74 68 69 73 20 64 6f |or. All this do| 00000d70 65 73 20 69 73 20 63 61 75 73 65 20 74 68 65 20 |es is cause the | 00000d80 70 72 6f 67 72 61 6d 20 74 6f 20 70 61 75 73 65 |program to pause| 00000d90 20 61 66 74 65 72 20 74 68 61 74 20 6d 61 6e 79 | after that many| 00000da0 20 66 72 61 6d 65 73 2c 20 73 6f 0a 79 6f 75 20 | frames, so.you | 00000db0 64 6f 6e 27 74 20 6f 76 65 72 73 68 6f 6f 74 20 |don't overshoot | 00000dc0 69 66 20 74 68 65 20 63 6f 6d 70 75 74 65 72 20 |if the computer | 00000dd0 69 73 20 62 65 69 6e 67 20 6c 65 66 74 20 75 6e |is being left un| 00000de0 61 74 74 65 6e 64 65 64 2e 20 20 49 74 20 61 6c |attended. It al| 00000df0 73 6f 20 73 65 74 73 0a 74 68 65 20 6e 75 6d 62 |so sets.the numb| 00000e00 65 72 20 6f 66 20 66 72 61 6d 65 73 20 75 73 65 |er of frames use| 00000e10 64 20 74 6f 20 65 73 74 69 6d 61 74 65 20 74 68 |d to estimate th| 00000e20 65 20 66 69 6e 69 73 68 69 6e 67 20 74 69 6d 65 |e finishing time| 00000e30 2e 20 20 49 66 20 74 68 65 20 70 72 6f 67 72 61 |. If the progra| 00000e40 6d 0a 68 61 73 20 63 6f 6e 74 69 6e 75 65 64 20 |m.has continued | 00000e50 70 61 73 74 20 74 68 65 20 61 69 6d 20 70 6f 69 |past the aim poi| 00000e60 6e 74 2c 20 6f 72 20 74 68 65 72 65 20 69 73 20 |nt, or there is | 00000e70 6e 6f 74 20 65 6e 6f 75 67 68 20 73 70 61 63 65 |not enough space| 00000e80 20 74 6f 20 73 74 6f 72 65 20 74 68 65 0a 6e 75 | to store the.nu| 00000e90 6d 62 65 72 20 6f 66 20 66 72 61 6d 65 73 20 61 |mber of frames a| 00000ea0 69 6d 65 64 20 66 6f 72 2c 20 74 68 65 20 66 69 |imed for, the fi| 00000eb0 6e 69 73 68 69 6e 67 20 74 69 6d 65 20 69 73 20 |nishing time is | 00000ec0 62 61 73 65 64 20 6f 6e 20 74 68 65 20 65 73 74 |based on the est| 00000ed0 69 6d 61 74 65 64 0a 6d 61 78 69 6d 75 6d 20 6e |imated.maximum n| 00000ee0 75 6d 62 65 72 20 6f 66 20 66 72 61 6d 65 73 2e |umber of frames.| 00000ef0 0a 0a 20 20 20 20 20 20 20 20 22 47 72 61 76 69 |.. "Gravi| 00000f00 74 79 22 20 73 65 74 73 20 74 68 65 20 64 69 72 |ty" sets the dir| 00000f10 65 63 74 69 6f 6e 20 61 6e 64 20 73 70 65 65 64 |ection and speed| 00000f20 20 77 69 74 68 20 77 68 69 63 68 20 74 68 69 6e | with which thin| 00000f30 67 73 20 66 61 6c 6c 2e 20 0a 54 68 65 72 65 20 |gs fall. .There | 00000f40 61 72 65 20 74 68 72 65 65 20 6e 75 6d 62 65 72 |are three number| 00000f50 73 20 66 6f 72 20 74 68 65 20 61 6d 6f 75 6e 74 |s for the amount| 00000f60 73 20 69 6e 20 74 68 65 20 78 2c 20 79 20 61 6e |s in the x, y an| 00000f70 64 20 7a 20 64 69 72 65 63 74 69 6f 6e 73 2e 20 |d z directions. | 00000f80 0a 4e 6f 72 6d 61 6c 6c 79 20 74 68 65 73 65 20 |.Normally these | 00000f90 77 69 6c 6c 20 62 65 20 73 6f 6d 65 74 68 69 6e |will be somethin| 00000fa0 67 20 6c 69 6b 65 20 30 2c 20 30 20 20 61 6e 64 |g like 0, 0 and| 00000fb0 20 2d 36 30 30 20 73 6f 20 74 68 69 6e 67 73 20 | -600 so things | 00000fc0 66 61 6c 6c 0a 64 6f 77 6e 77 61 72 64 73 2e 20 |fall.downwards. | 00000fd0 20 54 68 65 20 73 63 72 69 70 74 20 22 55 70 53 | The script "UpS| 00000fe0 74 61 69 72 73 22 20 75 73 65 73 20 61 20 73 69 |tairs" uses a si| 00000ff0 64 65 77 61 79 73 20 67 72 61 76 69 74 79 20 74 |deways gravity t| 00001000 6f 20 6d 61 6b 65 20 74 68 65 20 63 75 62 65 0a |o make the cube.| 00001010 61 70 70 65 61 72 20 74 6f 20 63 6c 69 6d 62 20 |appear to climb | 00001020 74 68 65 20 73 74 61 69 72 73 2e 0a 0a 20 20 20 |the stairs... | 00001030 20 20 20 20 20 54 68 65 20 22 74 69 6d 65 5f 64 | The "time_d| 00001040 69 76 22 20 63 6f 6d 6d 61 6e 64 20 73 65 74 73 |iv" command sets| 00001050 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 | the number of t| 00001060 69 6d 65 73 20 74 68 65 20 66 69 6e 69 74 65 20 |imes the finite | 00001070 65 6c 65 6d 65 6e 74 0a 73 69 6d 75 6c 61 74 69 |element.simulati| 00001080 6f 6e 20 70 72 6f 63 65 64 75 72 65 73 20 61 72 |on procedures ar| 00001090 65 20 63 61 6c 6c 65 64 20 62 65 74 77 65 65 6e |e called between| 000010a0 20 66 72 61 6d 65 73 2c 20 6f 72 20 69 6e 20 6f | frames, or in o| 000010b0 74 68 65 72 20 77 6f 72 64 73 20 68 6f 77 0a 66 |ther words how.f| 000010c0 69 6e 65 6c 79 20 64 69 76 69 64 65 64 20 74 68 |inely divided th| 000010d0 65 20 74 69 6d 65 20 73 74 65 70 73 20 61 72 65 |e time steps are| 000010e0 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6d 75 |. The number mu| 000010f0 73 74 20 62 65 20 61 20 70 6f 77 65 72 20 6f 66 |st be a power of| 00001100 20 32 2c 20 65 67 2e 0a 31 2c 32 2c 34 2c 38 20 | 2, eg..1,2,4,8 | 00001110 65 74 63 2e 20 20 54 68 65 20 6d 61 69 6e 20 70 |etc. The main p| 00001120 75 72 70 6f 73 65 20 6f 66 20 74 68 69 73 20 69 |urpose of this i| 00001130 73 20 74 6f 20 61 6c 6c 6f 77 20 6f 62 6a 65 63 |s to allow objec| 00001140 74 73 20 74 6f 20 62 65 20 73 74 69 66 66 65 72 |ts to be stiffer| 00001150 0a 77 69 74 68 6f 75 74 20 65 78 70 6c 6f 64 69 |.without explodi| 00001160 6e 67 2c 20 73 6f 20 74 68 65 20 73 70 72 69 6e |ng, so the sprin| 00001170 67 20 63 6f 6e 73 74 61 6e 74 73 20 69 6e 20 74 |g constants in t| 00001180 68 65 20 6f 62 6a 65 63 74 73 20 61 72 65 20 61 |he objects are a| 00001190 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 69 6e 63 |utomatically.inc| 000011a0 72 65 61 73 65 64 20 77 68 65 6e 20 74 68 69 73 |reased when this| 000011b0 20 76 61 6c 75 65 20 69 73 20 69 6e 63 72 65 61 | value is increa| 000011c0 73 65 64 2e 0a 0a 0a 54 48 45 20 52 45 4e 44 45 |sed....THE RENDE| 000011d0 52 49 4e 47 20 42 4c 4f 43 4b 0a 0a 20 20 20 20 |RING BLOCK.. | 000011e0 20 20 20 20 54 68 65 20 6f 74 68 65 72 20 73 65 | The other se| 000011f0 74 20 6f 66 20 6f 70 74 69 6f 6e 73 20 61 66 66 |t of options aff| 00001200 65 63 74 73 20 74 68 65 20 61 70 70 65 61 72 61 |ects the appeara| 00001210 6e 63 65 20 6f 66 20 74 68 65 20 70 69 63 74 75 |nce of the pictu| 00001220 72 65 20 6f 6e 0a 74 68 65 20 73 63 72 65 65 6e |re on.the screen| 00001230 2e 20 20 54 68 69 73 20 69 73 20 63 61 6c 6c 65 |. This is calle| 00001240 64 20 74 68 65 20 22 72 65 6e 64 65 72 69 6e 67 |d the "rendering| 00001250 20 62 6c 6f 63 6b 22 20 61 6e 64 20 6c 6f 6f 6b | block" and look| 00001260 73 20 6c 69 6b 65 20 74 68 69 73 3a 0a 20 0a 20 |s like this:. . | 00001270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 | r| 00001280 65 6e 64 65 72 69 6e 67 20 7b 0a 20 20 20 20 20 |endering {. | 00001290 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 | type| 000012a0 20 3c 72 65 6e 64 65 72 5f 74 79 70 65 3e 0a 20 | <render_type>. | 000012b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000012c0 72 65 73 6f 6c 75 74 69 6f 6e 20 3c 6e 75 6d 62 |resolution <numb| 000012d0 65 72 3e 2c 3c 6e 75 6d 62 65 72 3e 0a 20 20 20 |er>,<number>. | 000012e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 69 | vi| 000012f0 65 77 20 3c 6e 75 6d 62 65 72 3e 2c 3c 6e 75 6d |ew <number>,<num| 00001300 62 65 72 3e 0a 20 20 20 20 20 20 20 20 20 20 20 |ber>. | 00001310 20 20 20 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 | background| 00001320 20 3c 62 61 63 6b 5f 74 79 70 65 3e 0a 20 20 20 | <back_type>. | 00001330 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a | }..| 00001340 20 20 20 20 20 20 20 20 3c 72 65 6e 64 65 72 5f | <render_| 00001350 74 79 70 65 3e 20 69 73 20 6f 6e 65 20 6f 66 20 |type> is one of | 00001360 22 64 6f 74 73 22 2c 20 22 6c 69 6e 65 73 22 2c |"dots", "lines",| 00001370 20 22 61 6c 6c 5f 64 6f 74 73 22 20 6f 72 20 22 | "all_dots" or "| 00001380 77 69 72 65 66 72 61 6d 65 22 2e 20 0a 22 44 6f |wireframe". ."Do| 00001390 74 73 22 20 64 72 61 77 73 20 74 68 65 20 70 6f |ts" draws the po| 000013a0 69 6e 74 73 20 61 74 20 74 68 65 20 63 6f 72 6e |ints at the corn| 000013b0 65 72 73 20 6f 66 20 74 68 65 20 73 75 72 66 61 |ers of the surfa| 000013c0 63 65 20 66 61 63 65 74 73 2c 20 61 6e 64 20 22 |ce facets, and "| 000013d0 6c 69 6e 65 73 22 0a 64 72 61 77 73 20 74 68 65 |lines".draws the| 000013e0 20 65 64 67 65 73 20 6f 66 20 74 68 65 20 73 75 | edges of the su| 000013f0 72 66 61 63 65 20 66 61 63 65 74 73 2e 20 20 54 |rface facets. T| 00001400 68 65 20 6f 74 68 65 72 20 74 77 6f 20 6f 70 74 |he other two opt| 00001410 69 6f 6e 73 20 64 6f 20 74 68 65 20 73 61 6d 65 |ions do the same| 00001420 0a 62 75 74 20 77 69 74 68 6f 75 74 20 72 65 6d |.but without rem| 00001430 6f 76 69 6e 67 20 68 69 64 64 65 6e 20 73 75 72 |oving hidden sur| 00001440 66 61 63 65 73 2e 20 20 54 68 65 20 22 64 6f 74 |faces. The "dot| 00001450 73 22 20 6f 70 74 69 6f 6e 20 75 73 65 73 20 74 |s" option uses t| 00001460 68 65 20 6c 65 61 73 74 0a 6d 65 6d 6f 72 79 20 |he least.memory | 00001470 66 6f 72 20 66 72 61 6d 65 20 73 74 6f 72 61 67 |for frame storag| 00001480 65 2c 20 61 6e 64 20 22 61 6c 6c 5f 64 6f 74 73 |e, and "all_dots| 00001490 22 20 69 73 20 74 68 65 20 71 75 69 63 6b 65 73 |" is the quickes| 000014a0 74 20 74 6f 20 64 72 61 77 2e 0a 0a 20 20 20 20 |t to draw... | 000014b0 20 20 20 20 54 68 65 20 22 72 65 73 6f 6c 75 74 | The "resolut| 000014c0 69 6f 6e 22 20 63 6f 6d 6d 61 6e 64 20 6c 65 74 |ion" command let| 000014d0 73 20 79 6f 75 20 63 68 6f 6f 73 65 20 74 68 65 |s you choose the| 000014e0 20 73 63 72 65 65 6e 20 72 65 73 6f 6c 75 74 69 | screen resoluti| 000014f0 6f 6e 20 79 6f 75 0a 77 61 6e 74 20 74 6f 20 75 |on you.want to u| 00001500 73 65 2c 20 62 79 20 73 70 65 63 69 66 79 69 6e |se, by specifyin| 00001510 67 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 |g the number of | 00001520 68 6f 72 69 7a 6f 6e 74 61 6c 20 61 6e 64 20 76 |horizontal and v| 00001530 65 72 74 69 63 61 6c 20 70 69 78 65 6c 73 2e 20 |ertical pixels. | 00001540 0a 55 73 65 66 75 6c 20 76 61 6c 75 65 73 20 61 |.Useful values a| 00001550 72 65 20 33 32 30 2c 32 35 36 20 28 6c 6f 77 20 |re 320,256 (low | 00001560 72 65 73 6f 6c 75 74 69 6f 6e 29 20 36 34 30 2c |resolution) 640,| 00001570 32 35 36 20 28 68 69 67 68 20 72 65 73 6f 6c 75 |256 (high resolu| 00001580 74 69 6f 6e 29 20 61 6e 64 0a 36 34 30 2c 35 31 |tion) and.640,51| 00001590 32 20 28 6d 75 6c 74 69 73 79 6e 63 20 6d 6f 6e |2 (multisync mon| 000015a0 69 74 6f 72 73 29 2c 20 62 75 74 20 79 6f 75 20 |itors), but you | 000015b0 63 61 6e 20 75 73 65 20 61 6e 79 20 72 65 73 6f |can use any reso| 000015c0 6c 75 74 69 6f 6e 20 66 6f 72 20 77 68 69 63 68 |lution for which| 000015d0 20 74 68 65 72 65 0a 69 73 20 61 20 73 63 72 65 | there.is a scre| 000015e0 65 6e 20 6d 6f 64 65 2e 20 20 54 68 65 20 70 72 |en mode. The pr| 000015f0 6f 67 72 61 6d 20 77 69 6c 6c 20 67 69 76 65 20 |ogram will give | 00001600 61 6e 20 65 72 72 6f 72 20 6f 66 20 74 68 65 72 |an error of ther| 00001610 65 20 69 73 20 6e 6f 20 6d 6f 64 65 20 77 68 69 |e is no mode whi| 00001620 63 68 0a 66 69 74 73 2e 20 20 57 68 65 6e 20 63 |ch.fits. When c| 00001630 68 6f 6f 73 69 6e 67 20 61 20 72 65 73 6f 6c 75 |hoosing a resolu| 00001640 74 69 6f 6e 2c 20 62 65 61 72 20 69 6e 20 6d 69 |tion, bear in mi| 00001650 6e 64 20 74 68 61 74 20 68 69 67 68 65 72 20 72 |nd that higher r| 00001660 65 73 6f 6c 75 74 69 6f 6e 73 20 77 69 6c 6c 0a |esolutions will.| 00001670 74 61 6b 65 20 6d 6f 72 65 20 66 72 61 6d 65 20 |take more frame | 00001680 73 74 6f 72 61 67 65 20 73 70 61 63 65 2e 0a 0a |storage space...| 00001690 20 20 20 20 20 20 20 20 22 56 69 65 77 22 20 73 | "View" s| 000016a0 70 65 63 69 66 69 65 73 20 74 68 65 20 61 6e 67 |pecifies the ang| 000016b0 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 79 6f |le from which yo| 000016c0 75 20 6c 6f 6f 6b 20 61 74 20 74 68 65 20 73 63 |u look at the sc| 000016d0 65 6e 65 2e 20 20 54 68 65 0a 6e 75 6d 62 65 72 |ene. The.number| 000016e0 73 20 61 72 65 20 61 6e 67 6c 65 73 20 69 6e 20 |s are angles in | 000016f0 64 65 67 72 65 65 73 2c 20 74 68 65 20 66 69 72 |degrees, the fir| 00001700 73 74 20 62 65 69 6e 67 20 74 68 65 20 64 69 72 |st being the dir| 00001710 65 63 74 69 6f 6e 20 69 6e 20 74 68 65 20 78 2d |ection in the x-| 00001720 79 0a 70 6c 61 6e 65 2e 20 20 54 68 69 73 20 69 |y.plane. This i| 00001730 73 20 74 68 65 20 61 6e 67 6c 65 20 74 68 72 6f |s the angle thro| 00001740 75 67 68 20 77 68 69 63 68 20 74 68 65 20 73 63 |ugh which the sc| 00001750 65 6e 65 20 69 73 20 72 6f 74 61 74 65 64 20 61 |ene is rotated a| 00001760 62 6f 75 74 20 74 68 65 0a 76 65 72 74 69 63 61 |bout the.vertica| 00001770 6c 20 61 78 69 73 2e 20 20 49 66 20 74 68 69 73 |l axis. If this| 00001780 20 69 73 20 30 2c 20 74 68 65 20 78 20 64 69 72 | is 0, the x dir| 00001790 65 63 74 69 6f 6e 20 69 73 20 68 6f 72 69 7a 6f |ection is horizo| 000017a0 6e 74 61 6c 6c 79 20 61 63 72 6f 73 73 20 79 6f |ntally across yo| 000017b0 75 72 0a 73 63 72 65 65 6e 20 28 2b 78 20 6f 6e |ur.screen (+x on| 000017c0 20 74 68 65 20 72 69 67 68 74 2c 20 2d 79 20 6f | the right, -y o| 000017d0 6e 20 74 68 65 20 6c 65 66 74 29 20 61 6e 64 20 |n the left) and | 000017e0 74 68 65 20 2b 79 20 64 69 72 65 63 74 69 6f 6e |the +y direction| 000017f0 20 69 73 20 6f 75 74 20 6f 66 20 74 68 65 0a 73 | is out of the.s| 00001800 63 72 65 65 6e 20 74 6f 77 61 72 64 73 20 79 6f |creen towards yo| 00001810 75 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 6e |u. The second n| 00001820 75 6d 62 65 72 20 69 73 20 74 68 65 20 22 65 6c |umber is the "el| 00001830 65 76 61 74 69 6f 6e 22 3a 20 61 6e 20 76 61 6c |evation": an val| 00001840 75 65 20 6f 66 20 7a 65 72 6f 0a 77 69 6c 6c 20 |ue of zero.will | 00001850 70 75 74 20 74 68 65 20 76 69 65 77 70 6f 69 6e |put the viewpoin| 00001860 74 20 6f 6e 20 74 68 65 20 78 2d 79 20 70 6c 61 |t on the x-y pla| 00001870 6e 65 20 28 6c 6f 6f 6b 69 6e 67 20 68 6f 72 69 |ne (looking hori| 00001880 7a 6f 6e 74 61 6c 6c 79 2c 20 2b 7a 20 61 78 69 |zontally, +z axi| 00001890 73 0a 76 65 72 74 69 63 61 6c 6c 79 20 75 70 77 |s.vertically upw| 000018a0 61 72 64 73 29 2c 20 61 6e 64 20 61 6e 20 61 6e |ards), and an an| 000018b0 67 6c 65 20 6f 66 20 39 30 20 77 6f 75 6c 64 20 |gle of 90 would | 000018c0 68 61 76 65 20 79 6f 75 20 6c 6f 6f 6b 69 6e 67 |have you looking| 000018d0 20 64 69 72 65 63 74 6c 79 20 64 6f 77 6e 0a 66 | directly down.f| 000018e0 72 6f 6d 20 61 62 6f 76 65 2e 0a 0a 20 20 20 20 |rom above... | 000018f0 20 20 20 20 54 68 65 20 22 62 61 63 6b 67 72 6f | The "backgro| 00001900 75 6e 64 22 20 63 6f 6d 6d 61 6e 64 20 69 73 20 |und" command is | 00001910 6f 70 74 69 6f 6e 61 6c 3a 20 69 66 20 79 6f 75 |optional: if you| 00001920 20 69 6e 63 6c 75 64 65 20 22 62 61 63 6b 67 72 | include "backgr| 00001930 6f 75 6e 64 0a 62 61 63 6b 22 20 69 6e 20 74 68 |ound.back" in th| 00001940 65 20 72 65 6e 64 65 72 69 6e 67 20 62 6c 6f 63 |e rendering bloc| 00001950 6b 2c 20 74 68 65 20 70 72 6f 67 72 61 6d 20 61 |k, the program a| 00001960 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65 20 |ssumes that the | 00001970 62 61 63 6b 67 72 6f 75 6e 64 0a 6f 62 6a 65 63 |background.objec| 00001980 74 28 73 29 20 61 72 65 20 61 6c 77 61 79 73 20 |t(s) are always | 00001990 62 65 68 69 6e 64 20 74 68 65 20 73 6f 6c 69 64 |behind the solid| 000019a0 20 6f 62 6a 65 63 74 28 73 29 2c 20 61 6e 64 20 | object(s), and | 000019b0 64 6f 65 73 20 6e 6f 74 20 72 65 64 72 61 77 20 |does not redraw | 000019c0 74 68 65 0a 62 61 63 6b 67 72 6f 75 6e 64 20 65 |the.background e| 000019d0 76 65 72 79 20 66 72 61 6d 65 2e 20 20 54 68 69 |very frame. Thi| 000019e0 73 20 69 73 20 75 73 65 66 75 6c 2c 20 66 6f 72 |s is useful, for| 000019f0 20 65 78 61 6d 70 6c 65 2c 20 77 68 65 6e 20 74 | example, when t| 00001a00 68 65 20 62 61 63 6b 67 72 6f 75 6e 64 20 69 73 |he background is| 00001a10 0a 61 20 73 65 74 20 6f 66 20 73 74 61 69 72 73 |.a set of stairs| 00001a20 2c 20 61 73 20 69 74 20 72 65 64 75 63 65 73 20 |, as it reduces | 00001a30 74 68 65 20 66 72 61 6d 65 20 64 72 61 77 69 6e |the frame drawin| 00001a40 67 20 74 69 6d 65 2e 20 20 54 68 65 20 64 65 66 |g time. The def| 00001a50 61 75 6c 74 20 73 65 74 74 69 6e 67 0a 69 73 20 |ault setting.is | 00001a60 22 62 61 63 6b 67 72 6f 75 6e 64 20 6d 69 78 22 |"background mix"| 00001a70 20 77 68 69 63 68 20 6c 65 74 73 20 74 68 65 20 | which lets the | 00001a80 62 61 63 6b 67 72 6f 75 6e 64 20 6f 62 6a 65 63 |background objec| 00001a90 74 28 73 29 20 62 65 20 70 61 72 74 6c 79 20 69 |t(s) be partly i| 00001aa0 6e 20 66 72 6f 6e 74 0a 6f 66 20 61 6e 64 20 70 |n front.of and p| 00001ab0 61 72 74 6c 79 20 62 65 68 69 6e 64 20 74 68 65 |artly behind the| 00001ac0 20 73 6f 6c 69 64 28 73 29 2e 0a 0a 20 20 20 20 | solid(s)... | 00001ad0 20 20 20 20 54 68 65 20 6f 72 64 65 72 20 69 6e | The order in| 00001ae0 20 77 68 69 63 68 20 61 6e 79 20 6f 66 20 74 68 | which any of th| 00001af0 65 20 61 62 6f 76 65 20 6f 70 74 69 6f 6e 73 20 |e above options | 00001b00 61 72 65 20 61 72 72 61 6e 67 65 64 20 64 6f 65 |are arranged doe| 00001b10 73 20 6e 6f 74 0a 6d 61 74 74 65 72 2c 20 61 73 |s not.matter, as| 00001b20 20 6c 6f 6e 67 20 61 73 20 74 68 65 20 72 65 6e | long as the ren| 00001b30 64 65 72 69 6e 67 20 6f 70 74 69 6f 6e 73 20 61 |dering options a| 00001b40 72 65 20 6b 65 70 74 20 69 6e 73 69 64 65 20 74 |re kept inside t| 00001b50 68 65 20 72 65 6e 64 65 72 69 6e 67 0a 62 6c 6f |he rendering.blo| 00001b60 63 6b 2e 0a 0a 0a 20 20 20 20 20 20 20 20 43 52 |ck.... CR| 00001b70 45 41 54 49 4e 47 20 4f 42 4a 45 43 54 53 3a 20 |EATING OBJECTS: | 00001b80 42 41 43 4b 47 52 4f 55 4e 44 20 4f 42 4a 45 43 |BACKGROUND OBJEC| 00001b90 54 53 0a 0a 20 20 20 20 20 20 20 20 42 61 63 6b |TS.. Back| 00001ba0 67 72 6f 75 6e 64 20 6f 62 6a 65 63 74 73 20 61 |ground objects a| 00001bb0 72 65 20 74 68 65 20 66 69 78 65 64 20 70 69 65 |re the fixed pie| 00001bc0 63 65 73 20 6f 66 20 73 63 65 6e 65 72 79 20 77 |ces of scenery w| 00001bd0 68 69 63 68 20 74 68 65 20 6d 6f 76 69 6e 67 0a |hich the moving.| 00001be0 6f 62 6a 65 63 74 73 20 69 6e 74 65 72 61 63 74 |objects interact| 00001bf0 20 77 69 74 68 2e 20 20 59 6f 75 20 63 61 6e 20 | with. You can | 00001c00 68 61 76 65 20 61 73 20 6d 61 6e 79 20 62 61 63 |have as many bac| 00001c10 6b 67 72 6f 75 6e 64 20 6f 62 6a 65 63 74 73 20 |kground objects | 00001c20 61 73 20 79 6f 75 20 77 61 6e 74 3a 0a 74 68 65 |as you want:.the| 00001c30 79 20 61 72 65 20 61 6c 6c 20 63 72 65 61 74 65 |y are all create| 00001c40 64 20 61 74 20 74 68 65 20 6f 72 69 67 69 6e 20 |d at the origin | 00001c50 62 75 74 20 74 68 65 79 20 63 61 6e 20 62 65 20 |but they can be | 00001c60 6d 6f 76 65 64 20 74 6f 20 61 6e 79 20 70 6f 73 |moved to any pos| 00001c70 69 74 69 6f 6e 2e 0a 0a 20 20 20 20 20 20 20 20 |ition... | 00001c80 54 68 65 20 73 63 72 69 70 74 20 74 6f 20 63 72 |The script to cr| 00001c90 65 61 74 65 20 61 20 62 61 63 6b 67 72 6f 75 6e |eate a backgroun| 00001ca0 64 20 6f 62 6a 65 63 74 20 69 73 20 61 73 20 66 |d object is as f| 00001cb0 6f 6c 6c 6f 77 73 3a 0a 0a 20 20 20 20 20 20 20 |ollows:.. | 00001cc0 20 20 20 20 20 20 20 20 20 62 61 63 6b 67 72 6f | backgro| 00001cd0 75 6e 64 20 7b 0a 20 20 20 20 20 20 20 20 20 20 |und {. | 00001ce0 20 20 20 20 20 20 20 63 72 65 61 74 65 20 7b 0a | create {.| 00001cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001d00 20 20 74 79 70 65 20 3c 6f 62 6a 65 63 74 5f 74 | type <object_t| 00001d10 79 70 65 3e 0a 20 20 20 20 20 20 20 20 20 20 20 |ype>. | 00001d20 20 20 20 20 20 20 20 70 6f 69 6e 74 73 20 3c 70 | points <p| 00001d30 6f 69 6e 74 73 5f 73 70 65 63 3e 0a 20 20 20 20 |oints_spec>. | 00001d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 | si| 00001d50 7a 65 20 3c 73 69 7a 65 5f 73 70 65 63 3e 0a 20 |ze <size_spec>. | 00001d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001d70 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |}. | 00001d80 20 20 20 74 72 61 6e 73 6c 61 74 65 20 3c 78 3e | translate <x>| 00001d90 2c 3c 79 3e 2c 3c 7a 3e 0a 20 20 20 20 20 20 20 |,<y>,<z>. | 00001da0 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 | }.. | 00001db0 20 20 20 20 54 68 65 20 69 6e 64 65 6e 74 61 74 | The indentat| 00001dc0 69 6f 6e 20 69 73 20 6f 70 74 69 6f 6e 61 6c 3a |ion is optional:| 00001dd0 20 69 74 20 77 61 73 20 61 64 64 65 64 20 66 6f | it was added fo| 00001de0 72 20 63 6c 61 72 69 74 79 2e 20 20 54 68 65 20 |r clarity. The | 00001df0 66 69 72 73 74 0a 74 68 69 6e 67 20 69 6e 20 61 |first.thing in a| 00001e00 20 62 61 63 6b 67 72 6f 75 6e 64 20 62 6c 6f 63 | background bloc| 00001e10 6b 20 6d 75 73 74 20 62 65 20 61 20 63 72 65 61 |k must be a crea| 00001e20 74 65 20 62 6c 6f 63 6b 2c 20 61 6e 64 20 74 68 |te block, and th| 00001e30 65 72 65 20 6d 75 73 74 20 62 65 20 6f 6e 6c 79 |ere must be only| 00001e40 0a 6f 6e 65 20 6f 66 20 74 68 65 73 65 2e 20 20 |.one of these. | 00001e50 54 68 65 20 74 72 61 6e 73 6c 61 74 65 20 63 6f |The translate co| 00001e60 6d 6d 61 6e 64 20 69 73 20 6f 70 74 69 6f 6e 61 |mmand is optiona| 00001e70 6c 2c 20 61 6e 64 20 74 68 65 72 65 20 6d 61 79 |l, and there may| 00001e80 20 62 65 20 61 6e 79 0a 6e 75 6d 62 65 72 20 6f | be any.number o| 00001e90 66 20 74 68 65 73 65 2e 20 20 54 68 65 20 74 68 |f these. The th| 00001ea0 72 65 65 20 70 61 72 61 6d 65 74 65 72 73 20 61 |ree parameters a| 00001eb0 72 65 20 74 68 65 20 61 6d 6f 75 6e 74 73 20 62 |re the amounts b| 00001ec0 79 20 77 68 69 63 68 20 74 6f 20 6d 6f 76 65 20 |y which to move | 00001ed0 74 68 65 0a 6f 62 6a 65 63 74 20 69 6e 20 74 68 |the.object in th| 00001ee0 65 20 78 2c 20 79 20 61 6e 64 20 7a 20 64 69 72 |e x, y and z dir| 00001ef0 65 63 74 69 6f 6e 73 2e 20 20 41 6c 6c 20 64 69 |ections. All di| 00001f00 73 74 61 6e 63 65 73 20 73 68 6f 75 6c 64 20 62 |stances should b| 00001f10 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 0a |e followed by a.| 00001f20 75 6e 69 74 2c 20 65 67 20 33 2e 33 69 6e 20 28 |unit, eg 3.3in (| 00001f30 77 69 74 68 20 6e 6f 20 73 65 70 61 72 61 74 69 |with no separati| 00001f40 6e 67 20 73 70 61 63 65 29 20 61 73 20 64 65 73 |ng space) as des| 00001f50 63 72 69 62 65 64 20 65 61 72 6c 69 65 72 2e 20 |cribed earlier. | 00001f60 20 54 68 65 20 64 65 66 61 75 6c 74 0a 75 6e 69 | The default.uni| 00001f70 74 20 69 73 20 31 2f 36 34 30 20 6f 66 20 61 20 |t is 1/640 of a | 00001f80 70 72 69 6e 74 65 72 27 73 20 70 6f 69 6e 74 20 |printer's point | 00001f90 28 61 20 76 65 72 79 20 73 6d 61 6c 6c 20 64 69 |(a very small di| 00001fa0 73 74 61 6e 63 65 29 2c 20 73 6f 20 69 66 20 74 |stance), so if t| 00001fb0 68 65 0a 74 72 61 6e 73 6c 61 74 65 20 63 6f 6d |he.translate com| 00001fc0 6d 61 6e 64 20 68 61 73 20 6e 6f 20 76 69 73 69 |mand has no visi| 00001fd0 62 6c 65 20 65 66 66 65 63 74 2c 20 63 68 65 63 |ble effect, chec| 00001fe0 6b 20 74 68 65 20 75 6e 69 74 73 2e 0a 0a 20 20 |k the units... | 00001ff0 20 20 20 20 20 20 54 68 65 20 66 69 72 73 74 20 | The first | 00002000 77 6f 72 64 20 69 6e 20 74 68 65 20 63 72 65 61 |word in the crea| 00002010 74 65 20 62 6c 6f 63 6b 20 6d 75 73 74 20 62 65 |te block must be| 00002020 20 22 74 79 70 65 22 2c 20 62 65 63 61 75 73 65 | "type", because| 00002030 20 74 68 65 0a 65 66 66 65 63 74 20 6f 66 20 74 | the.effect of t| 00002040 68 65 20 22 70 6f 69 6e 74 73 22 20 61 6e 64 20 |he "points" and | 00002050 22 73 69 7a 65 22 20 63 6f 6d 6d 61 6e 64 73 20 |"size" commands | 00002060 61 72 65 20 64 65 70 65 6e 64 61 6e 74 20 6f 6e |are dependant on| 00002070 20 74 68 65 20 6f 62 6a 65 63 74 20 74 79 70 65 | the object type| 00002080 2e 0a 20 46 6f 72 20 61 20 62 61 63 6b 67 72 6f |.. For a backgro| 00002090 75 6e 64 20 6f 62 6a 65 63 74 2c 20 3c 6f 62 6a |und object, <obj| 000020a0 65 63 74 5f 74 79 70 65 3e 20 6d 75 73 74 20 62 |ect_type> must b| 000020b0 65 20 6f 6e 65 20 6f 66 20 22 73 68 65 65 74 22 |e one of "sheet"| 000020c0 2c 20 22 73 70 68 65 72 65 22 20 6f 72 0a 22 73 |, "sphere" or."s| 000020d0 74 61 69 72 73 22 2e 0a 0a 0a 54 48 45 20 53 50 |tairs"....THE SP| 000020e0 48 45 52 45 20 4f 42 4a 45 43 54 0a 0a 20 20 20 |HERE OBJECT.. | 000020f0 20 20 20 20 20 54 68 69 73 20 68 61 73 20 6f 6e | This has on| 00002100 65 20 22 70 6f 69 6e 74 73 22 20 70 61 72 61 6d |e "points" param| 00002110 65 74 65 72 20 61 6e 64 20 6f 6e 65 20 22 73 69 |eter and one "si| 00002120 7a 65 22 20 70 61 72 61 6d 65 74 65 72 2c 20 69 |ze" parameter, i| 00002130 2e 65 2e 20 74 68 65 0a 77 6f 72 64 20 22 70 6f |.e. the.word "po| 00002140 69 6e 74 73 22 20 6d 75 73 74 20 62 65 20 66 6f |ints" must be fo| 00002150 6c 6c 6f 77 65 64 20 62 79 20 6f 6e 65 20 6e 75 |llowed by one nu| 00002160 6d 62 65 72 2c 20 61 6e 64 20 22 73 69 7a 65 22 |mber, and "size"| 00002170 20 6d 75 73 74 20 62 65 20 66 6f 6c 6c 6f 77 65 | must be followe| 00002180 64 20 62 79 0a 61 20 64 69 73 74 61 6e 63 65 2e |d by.a distance.| 00002190 20 20 54 68 65 20 70 72 65 76 69 6f 75 73 20 72 | The previous r| 000021a0 65 6d 61 72 6b 73 20 61 62 6f 75 74 20 75 6e 69 |emarks about uni| 000021b0 74 73 20 66 6f 72 20 64 69 73 74 61 6e 63 65 73 |ts for distances| 000021c0 20 61 6c 73 6f 20 61 70 70 6c 79 20 74 6f 0a 61 | also apply to.a| 000021d0 6c 6c 20 73 69 7a 65 20 70 61 72 61 6d 65 74 65 |ll size paramete| 000021e0 72 73 2e 20 20 54 68 65 20 73 69 7a 65 20 70 61 |rs. The size pa| 000021f0 72 61 6d 65 74 65 72 20 66 6f 72 20 61 20 73 70 |rameter for a sp| 00002200 68 65 72 65 20 73 65 74 73 20 69 74 73 20 72 61 |here sets its ra| 00002210 64 69 75 73 2e 20 20 54 68 65 0a 70 6f 69 6e 74 |dius. The.point| 00002220 73 20 70 61 72 61 6d 65 74 65 72 20 73 65 74 73 |s parameter sets| 00002230 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 | the number of p| 00002240 6f 69 6e 74 73 20 75 73 65 64 20 74 6f 20 64 72 |oints used to dr| 00002250 61 77 20 74 68 65 20 73 70 68 65 72 65 3a 20 69 |aw the sphere: i| 00002260 66 20 74 68 69 73 0a 70 61 72 61 6d 65 74 65 72 |f this.parameter| 00002270 20 69 73 20 50 2c 20 74 68 65 72 65 20 61 72 65 | is P, there are| 00002280 20 50 20 72 69 6e 67 73 20 6f 66 20 70 6f 69 6e | P rings of poin| 00002290 74 73 2c 20 61 6e 64 20 74 68 65 20 77 69 64 65 |ts, and the wide| 000022a0 73 74 20 6f 6e 65 20 63 6f 6e 74 61 69 6e 73 20 |st one contains | 000022b0 32 50 0a 70 6f 69 6e 74 73 2e 20 20 31 32 20 69 |2P.points. 12 i| 000022c0 73 20 61 6e 20 61 64 65 71 75 61 74 65 20 76 61 |s an adequate va| 000022d0 6c 75 65 20 66 6f 72 20 74 68 69 73 20 70 61 72 |lue for this par| 000022e0 61 6d 65 74 65 72 2e 0a 20 20 20 20 20 20 20 20 |ameter.. | 000022f0 59 6f 75 20 73 68 6f 75 6c 64 20 61 76 6f 69 64 |You should avoid| 00002300 20 63 72 65 61 74 69 6e 67 20 6f 62 6a 65 63 74 | creating object| 00002310 73 20 77 68 69 63 68 20 65 78 74 65 6e 64 20 69 |s which extend i| 00002320 6e 74 6f 20 61 20 73 70 68 65 72 65 2c 0a 62 65 |nto a sphere,.be| 00002330 63 61 75 73 65 20 74 68 65 73 65 20 77 69 6c 6c |cause these will| 00002340 20 62 65 20 65 6a 65 63 74 65 64 20 6f 75 74 77 | be ejected outw| 00002350 61 72 64 73 20 76 69 6f 6c 65 6e 74 6c 79 2e 0a |ards violently..| 00002360 0a 0a 54 48 45 20 53 48 45 45 54 20 4f 42 4a 45 |..THE SHEET OBJE| 00002370 43 54 0a 0a 20 20 20 20 20 20 20 20 54 68 69 73 |CT.. This| 00002380 20 68 61 73 20 6f 6e 65 20 22 70 6f 69 6e 74 73 | has one "points| 00002390 22 20 70 61 72 61 6d 65 74 65 72 20 61 6e 64 20 |" parameter and | 000023a0 6f 6e 65 20 22 73 69 7a 65 22 20 70 61 72 61 6d |one "size" param| 000023b0 65 74 65 72 2e 20 20 53 68 65 65 74 73 0a 61 72 |eter. Sheets.ar| 000023c0 65 20 61 6c 77 61 79 73 20 73 71 75 61 72 65 3a |e always square:| 000023d0 20 74 68 65 20 70 6f 69 6e 74 73 20 70 61 72 61 | the points para| 000023e0 6d 65 74 65 72 20 73 65 74 73 20 74 68 65 20 6e |meter sets the n| 000023f0 75 6d 62 65 72 20 6f 66 20 70 6f 69 6e 74 73 20 |umber of points | 00002400 61 6c 6f 6e 67 20 6f 6e 65 0a 73 69 64 65 2c 20 |along one.side, | 00002410 61 6e 64 20 74 68 65 20 73 69 7a 65 20 70 61 72 |and the size par| 00002420 61 6d 65 74 65 72 20 73 65 74 73 20 74 68 65 20 |ameter sets the | 00002430 6c 65 6e 67 74 68 20 6f 66 20 6f 6e 65 20 73 69 |length of one si| 00002440 64 65 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 |de. For example| 00002450 2c 20 69 66 0a 79 6f 75 20 75 73 65 20 22 70 6f |, if.you use "po| 00002460 69 6e 74 73 20 32 31 22 20 61 6e 64 20 22 73 69 |ints 21" and "si| 00002470 7a 65 20 35 69 6e 22 20 74 68 65 20 70 72 6f 67 |ze 5in" the prog| 00002480 72 61 6d 20 77 69 6c 6c 20 63 72 65 61 74 65 20 |ram will create | 00002490 61 20 73 68 65 65 74 20 77 69 74 68 20 32 31 20 |a sheet with 21 | 000024a0 78 0a 32 31 20 3d 20 34 34 31 20 70 6f 69 6e 74 |x.21 = 441 point| 000024b0 73 2c 20 73 6f 20 69 66 20 79 6f 75 20 75 73 65 |s, so if you use| 000024c0 20 22 6c 69 6e 65 73 22 20 61 73 20 74 68 65 20 | "lines" as the | 000024d0 72 65 6e 64 65 72 69 6e 67 20 74 79 70 65 20 74 |rendering type t| 000024e0 68 65 20 73 68 65 65 74 20 77 69 6c 6c 0a 62 65 |he sheet will.be| 000024f0 20 64 69 76 69 64 65 64 20 69 6e 74 6f 20 32 30 | divided into 20| 00002500 20 78 20 32 30 20 73 71 75 61 72 65 73 2c 20 65 | x 20 squares, e| 00002510 61 63 68 20 30 2e 32 35 69 6e 20 78 20 30 2e 32 |ach 0.25in x 0.2| 00002520 35 69 6e 2e 20 20 54 68 65 20 73 68 65 65 74 20 |5in. The sheet | 00002530 69 73 20 63 72 65 61 74 65 64 0a 68 6f 72 69 7a |is created.horiz| 00002540 6f 6e 74 61 6c 20 28 69 65 2e 20 6f 6e 20 74 68 |ontal (ie. on th| 00002550 65 20 78 2d 79 20 70 6c 61 6e 65 29 20 61 6e 64 |e x-y plane) and| 00002560 20 63 65 6e 74 72 65 64 20 6f 6e 20 74 68 65 20 | centred on the | 00002570 6f 72 69 67 69 6e 2c 20 73 6f 20 69 6e 20 74 68 |origin, so in th| 00002580 65 20 61 62 6f 76 65 0a 65 78 61 6d 70 6c 65 20 |e above.example | 00002590 74 68 65 20 73 68 65 65 74 20 77 6f 75 6c 64 20 |the sheet would | 000025a0 65 78 74 65 6e 64 20 66 72 6f 6d 20 2d 35 69 6e |extend from -5in| 000025b0 20 74 6f 20 2b 35 69 6e 20 69 6e 20 74 68 65 20 | to +5in in the | 000025c0 78 20 64 69 72 65 63 74 69 6f 6e 2c 20 66 72 6f |x direction, fro| 000025d0 6d 0a 2d 35 69 6e 20 74 6f 20 2b 35 69 6e 20 69 |m.-5in to +5in i| 000025e0 6e 20 74 68 65 20 79 20 64 69 72 65 63 74 69 6f |n the y directio| 000025f0 6e 2c 20 61 6e 64 20 68 61 76 65 20 7a 3d 30 20 |n, and have z=0 | 00002600 66 6f 72 20 61 6c 6c 20 70 6f 69 6e 74 73 2e 0a |for all points..| 00002610 0a 20 20 20 20 20 20 20 20 57 68 65 6e 20 74 68 |. When th| 00002620 65 20 73 68 65 65 74 20 69 73 20 63 72 65 61 74 |e sheet is creat| 00002630 65 64 20 61 73 20 61 20 62 61 63 6b 67 72 6f 75 |ed as a backgrou| 00002640 6e 64 20 6f 62 6a 65 63 74 2c 20 69 74 20 64 65 |nd object, it de| 00002650 66 69 6e 65 73 20 61 0a 22 66 6c 6f 6f 72 22 2e |fines a."floor".| 00002660 20 20 4e 6f 20 73 6f 6c 69 64 20 77 69 6c 6c 20 | No solid will | 00002670 62 65 20 61 6c 6c 6f 77 65 64 20 74 6f 20 70 61 |be allowed to pa| 00002680 73 73 20 62 65 6c 6f 77 20 74 68 65 20 68 65 69 |ss below the hei| 00002690 67 68 74 20 6f 66 20 74 68 65 20 73 68 65 65 74 |ght of the sheet| 000026a0 2e 20 0a 59 6f 75 20 73 68 6f 75 6c 64 20 61 76 |. .You should av| 000026b0 6f 69 64 20 63 72 65 61 74 69 6e 67 20 6f 62 6a |oid creating obj| 000026c0 65 63 74 73 20 77 68 69 63 68 20 65 78 74 65 6e |ects which exten| 000026d0 64 20 62 65 6c 6f 77 20 74 68 65 20 66 6c 6f 6f |d below the floo| 000026e0 72 2c 20 62 65 63 61 75 73 65 0a 74 68 65 73 65 |r, because.these| 000026f0 20 77 69 6c 6c 20 62 65 20 65 6a 65 63 74 65 64 | will be ejected| 00002700 20 75 70 77 61 72 64 73 20 76 69 6f 6c 65 6e 74 | upwards violent| 00002710 6c 79 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 |ly. Note that t| 00002720 68 65 20 66 6c 6f 6f 72 20 65 66 66 65 63 74 20 |he floor effect | 00002730 64 6f 65 73 0a 6e 6f 74 20 64 65 70 65 6e 64 20 |does.not depend | 00002740 6f 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 |on the size of t| 00002750 68 65 20 73 68 65 65 74 2c 20 6f 6e 6c 79 20 6f |he sheet, only o| 00002760 6e 20 69 74 73 20 76 65 72 74 69 63 61 6c 20 70 |n its vertical p| 00002770 6f 73 69 74 69 6f 6e 2e 3a 20 74 68 65 0a 65 66 |osition.: the.ef| 00002780 66 65 63 74 69 76 65 20 66 6c 6f 6f 72 20 69 73 |fective floor is| 00002790 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 70 6c 61 | an infinite pla| 000027a0 6e 65 20 61 74 20 74 68 65 20 73 61 6d 65 20 68 |ne at the same h| 000027b0 65 69 67 68 74 20 61 73 20 74 68 65 20 73 68 65 |eight as the she| 000027c0 65 74 2e 20 20 49 66 0a 79 6f 75 20 77 61 6e 74 |et. If.you want| 000027d0 65 64 20 61 6e 20 69 6e 76 69 73 69 62 6c 65 20 |ed an invisible | 000027e0 66 6c 6f 6f 72 2c 20 74 68 65 72 65 66 6f 72 65 |floor, therefore| 000027f0 2c 20 79 6f 75 20 63 6f 75 6c 64 20 63 72 65 61 |, you could crea| 00002800 74 65 20 61 20 73 6d 61 6c 6c 20 73 68 65 65 74 |te a small sheet| 00002810 0a 77 69 74 68 20 70 6f 69 6e 74 73 20 73 65 74 |.with points set| 00002820 20 74 6f 20 32 2c 20 61 6e 64 20 6d 6f 76 65 20 | to 2, and move | 00002830 69 74 20 6f 75 74 20 6f 66 20 73 69 67 68 74 20 |it out of sight | 00002840 69 6e 20 74 68 65 20 78 20 6f 72 20 79 20 64 69 |in the x or y di| 00002850 72 65 63 74 69 6f 6e 2e 0a 0a 0a 54 48 45 20 53 |rection....THE S| 00002860 54 41 49 52 53 20 4f 42 4a 45 43 54 0a 0a 20 20 |TAIRS OBJECT.. | 00002870 20 20 20 20 20 20 42 65 69 6e 67 20 61 20 6d 6f | Being a mo| 00002880 72 65 20 63 6f 6d 70 6c 65 78 20 6f 62 6a 65 63 |re complex objec| 00002890 74 2c 20 74 68 69 73 20 74 61 6b 65 73 20 74 68 |t, this takes th| 000028a0 72 65 65 20 70 6f 69 6e 74 73 20 70 61 72 61 6d |ree points param| 000028b0 65 74 65 72 73 20 61 6e 64 0a 74 68 72 65 65 20 |eters and.three | 000028c0 73 69 7a 65 20 70 61 72 61 6d 65 74 65 72 73 2e |size parameters.| 000028d0 20 20 4a 75 73 74 20 74 6f 20 63 6f 6e 66 75 73 | Just to confus| 000028e0 65 20 74 68 69 6e 67 73 2c 20 74 68 65 20 70 6f |e things, the po| 000028f0 69 6e 74 73 20 70 61 72 61 6d 65 74 65 72 73 20 |ints parameters | 00002900 64 6f 20 6e 6f 74 0a 63 6f 72 72 65 73 70 6f 6e |do not.correspon| 00002910 64 20 74 6f 20 74 68 65 20 73 61 6d 65 20 66 65 |d to the same fe| 00002920 61 74 75 72 65 73 20 61 73 20 74 68 65 20 73 69 |atures as the si| 00002930 7a 65 20 70 61 72 61 6d 65 74 65 72 73 2c 20 75 |ze parameters, u| 00002940 6e 6c 69 6b 65 20 74 68 65 20 6f 74 68 65 72 0a |nlike the other.| 00002950 6f 62 6a 65 63 74 73 2e 20 20 4c 65 74 27 73 20 |objects. Let's | 00002960 74 61 6b 65 20 74 68 65 20 73 69 7a 65 20 70 61 |take the size pa| 00002970 72 61 6d 65 74 65 72 73 20 66 69 72 73 74 3b 20 |rameters first; | 00002980 74 68 65 73 65 20 61 72 65 3a 0a 0a 20 20 20 20 |these are:.. | 00002990 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 | size| 000029a0 20 3c 73 74 65 70 5f 77 69 64 74 68 3e 2c 3c 73 | <step_width>,<s| 000029b0 74 65 70 5f 68 65 69 67 68 74 3e 2c 3c 73 74 65 |tep_height>,<ste| 000029c0 70 5f 64 65 70 74 68 3e 0a 0a 20 20 20 20 20 20 |p_depth>.. | 000029d0 20 20 54 68 65 73 65 20 61 72 65 20 71 75 69 74 | These are quit| 000029e0 65 20 6f 62 76 69 6f 75 73 3a 20 3c 73 74 65 70 |e obvious: <step| 000029f0 5f 77 69 64 74 68 3e 20 69 73 20 74 68 65 20 77 |_width> is the w| 00002a00 69 64 74 68 20 6f 66 20 74 68 65 20 73 74 65 70 |idth of the step| 00002a10 73 0a 61 6c 6f 6e 67 20 74 68 65 20 78 20 61 78 |s.along the x ax| 00002a20 69 73 20 28 73 65 65 20 64 69 61 67 72 61 6d 20 |is (see diagram | 00002a30 62 65 6c 6f 77 29 2c 20 3c 73 74 65 70 5f 68 65 |below), <step_he| 00002a40 69 67 68 74 3e 20 69 73 20 74 68 65 20 61 6d 6f |ight> is the amo| 00002a50 75 6e 74 20 79 6f 75 20 77 6f 75 6c 64 0a 68 61 |unt you would.ha| 00002a60 76 65 20 74 6f 20 6c 69 66 74 20 79 6f 75 72 20 |ve to lift your | 00002a70 66 65 65 74 20 28 7a 20 64 69 72 65 63 74 69 6f |feet (z directio| 00002a80 6e 29 20 61 6e 64 20 3c 73 74 65 70 5f 64 65 70 |n) and <step_dep| 00002a90 74 68 3e 20 69 73 20 74 68 65 20 61 6d 6f 75 6e |th> is the amoun| 00002aa0 74 20 6f 66 20 72 6f 6f 6d 0a 79 6f 75 20 68 61 |t of room.you ha| 00002ab0 76 65 20 66 6f 72 20 79 6f 75 72 20 66 65 65 74 |ve for your feet| 00002ac0 20 6f 6e 20 65 61 63 68 20 73 74 65 70 20 28 79 | on each step (y| 00002ad0 20 64 69 72 65 63 74 69 6f 6e 29 2e 0a 0a 20 20 | direction)... | 00002ae0 20 20 20 20 20 20 54 68 65 20 70 6f 69 6e 74 73 | The points| 00002af0 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 3a | parameters are:| 00002b00 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.. | 00002b10 20 20 70 6f 69 6e 74 73 20 3c 70 74 73 5f 77 69 | points <pts_wi| 00002b20 64 74 68 3e 2c 3c 73 74 65 70 73 3e 2c 3c 70 74 |dth>,<steps>,<pt| 00002b30 73 5f 64 65 70 74 68 3e 0a 0a 20 20 20 20 20 20 |s_depth>.. | 00002b40 20 20 54 68 65 20 66 69 72 73 74 20 61 6e 64 20 | The first and | 00002b50 74 68 69 72 64 20 6f 66 20 74 68 65 73 65 20 6a |third of these j| 00002b60 75 73 74 20 73 65 74 20 74 68 65 20 6e 75 6d 62 |ust set the numb| 00002b70 65 72 20 6f 66 20 70 6f 69 6e 74 73 20 75 73 65 |er of points use| 00002b80 64 20 74 6f 0a 64 72 61 77 20 74 68 65 20 68 6f |d to.draw the ho| 00002b90 72 69 7a 6f 6e 74 61 6c 20 70 61 72 74 20 6f 66 |rizontal part of| 00002ba0 20 74 68 65 20 73 74 65 70 73 3a 20 74 68 65 20 | the steps: the | 00002bb0 73 65 63 6f 6e 64 20 73 65 74 73 20 74 68 65 20 |second sets the | 00002bc0 6e 75 6d 62 65 72 20 6f 66 20 73 74 65 70 73 2e |number of steps.| 00002bd0 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.. | 00002be0 20 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | +. | 00002bf0 20 20 7c 5c 0a 20 20 20 20 20 20 20 20 20 20 20 | |\. | 00002c00 2b 2d 2d 2d 2b 20 5c 20 20 20 20 20 41 78 65 73 |+---+ \ Axes| 00002c10 3a 0a 20 20 20 20 20 20 20 20 20 20 20 7c 5c 20 |:. |\ | 00002c20 20 20 5c 20 5c 20 20 20 20 20 20 7a 0a 20 20 20 | \ \ z. | 00002c30 20 20 20 20 2b 2d 2d 2d 2b 20 5c 20 20 20 5c 20 | +---+ \ \ | 00002c40 2b 20 20 20 20 20 7c 0a 20 20 20 20 20 20 20 7c |+ |. || 00002c50 5c 20 20 20 5c 20 5c 20 20 20 5c 7c 20 20 20 20 |\ \ \ \| | 00002c60 20 7c 0a 20 20 20 2b 2d 2d 2d 2b 20 5c 20 20 20 | |. +---+ \ | 00002c70 5c 20 2b 2d 2d 2d 2b 20 20 20 20 20 2a 2d 2d 2d |\ +---+ *---| 00002c80 2d 2d 79 0a 20 20 20 20 5c 20 20 20 5c 20 5c 20 |--y. \ \ \ | 00002c90 20 20 5c 7c 20 20 20 20 20 20 20 20 20 20 5c 0a | \| \.| 00002ca0 20 20 20 20 20 4f 20 20 20 5c 20 2b 2d 2d 2d 2b | O \ +---+| 00002cb0 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 | \. | 00002cc0 20 20 20 5c 20 20 20 5c 7c 20 20 20 20 20 20 20 | \ \| | 00002cd0 20 20 20 20 20 20 20 20 20 78 0a 20 20 20 20 20 | x. | 00002ce0 20 20 2b 2d 2d 2d 2b 20 20 20 20 20 20 20 20 20 | +---+ | 00002cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f | O| 00002d00 20 69 73 20 74 68 65 20 70 6f 73 69 74 69 6f 6e | is the position| 00002d10 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 0a 0a | of the origin..| 00002d20 20 20 20 20 20 20 20 20 54 68 65 20 61 62 6f 76 | The abov| 00002d30 65 20 64 69 61 67 72 61 6d 20 73 68 6f 77 73 20 |e diagram shows | 00002d40 74 68 65 20 6f 72 69 65 6e 74 61 74 69 6f 6e 20 |the orientation | 00002d50 61 6e 64 20 69 6e 69 74 69 61 6c 20 70 6f 73 69 |and initial posi| 00002d60 74 69 6f 6e 20 6f 66 20 74 68 65 0a 73 74 61 69 |tion of the.stai| 00002d70 72 73 2e 20 20 59 6f 75 20 77 69 6c 6c 20 6e 6f |rs. You will no| 00002d80 72 6d 61 6c 6c 79 20 77 61 6e 74 20 74 6f 20 74 |rmally want to t| 00002d90 72 61 6e 73 6c 61 74 65 20 74 68 65 20 73 74 61 |ranslate the sta| 00002da0 69 72 73 20 69 6e 20 74 68 65 20 2d 79 2c 2d 7a |irs in the -y,-z| 00002db0 0a 64 69 72 65 63 74 69 6f 6e 20 61 66 74 65 72 |.direction after| 00002dc0 20 63 72 65 61 74 69 6e 67 20 74 68 65 6d 2e 20 | creating them. | 00002dd0 20 4e 6f 74 65 20 74 68 61 74 20 64 75 65 20 74 | Note that due t| 00002de0 6f 20 74 68 65 20 6f 72 69 65 6e 74 61 74 69 6f |o the orientatio| 00002df0 6e 2c 20 74 68 65 20 66 69 72 73 74 0a 76 69 65 |n, the first.vie| 00002e00 77 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c |w parameter will| 00002e10 20 6e 65 65 64 20 74 6f 20 62 65 20 62 65 74 77 | need to be betw| 00002e20 65 65 6e 20 39 30 20 61 6e 64 20 32 37 30 20 66 |een 90 and 270 f| 00002e30 6f 72 20 74 68 65 20 76 69 65 77 70 6f 69 6e 74 |or the viewpoint| 00002e40 20 74 6f 20 62 65 20 6f 6e 0a 74 68 65 20 72 69 | to be on.the ri| 00002e50 67 68 74 20 73 69 64 65 20 6f 66 20 74 68 65 20 |ght side of the | 00002e60 73 74 61 69 72 73 2e 0a 0a 20 20 20 20 20 20 20 |stairs... | 00002e70 20 4c 69 6b 65 20 74 68 65 20 73 68 65 65 74 2c | Like the sheet,| 00002e80 20 74 68 65 20 65 78 74 65 6e 74 20 6f 66 20 74 | the extent of t| 00002e90 68 65 20 73 74 61 69 72 73 20 69 73 20 69 6e 20 |he stairs is in | 00002ea0 66 61 63 74 20 69 6e 66 69 6e 69 74 65 3a 20 73 |fact infinite: s| 00002eb0 6f 6c 69 64 73 0a 64 6f 20 6e 6f 74 20 66 61 6c |olids.do not fal| 00002ec0 6c 20 6f 66 66 20 74 68 65 20 73 69 64 65 73 20 |l off the sides | 00002ed0 6f 66 20 74 68 65 20 73 74 61 69 72 73 2c 20 61 |of the stairs, a| 00002ee0 6e 64 20 74 68 65 20 73 74 61 69 72 73 20 63 6f |nd the stairs co| 00002ef0 6e 74 69 6e 75 65 20 61 62 6f 76 65 20 61 6e 64 |ntinue above and| 00002f00 0a 62 65 6c 6f 77 20 74 68 6f 73 65 20 77 68 69 |.below those whi| 00002f10 63 68 20 61 72 65 20 76 69 73 69 62 6c 65 2e 0a |ch are visible..| 00002f20 0a 0a 20 20 20 20 20 20 20 20 43 52 45 41 54 49 |.. CREATI| 00002f30 4e 47 20 4f 42 4a 45 43 54 53 3a 20 53 4f 4c 49 |NG OBJECTS: SOLI| 00002f40 44 20 4f 42 4a 45 43 54 53 0a 0a 20 20 20 20 20 |D OBJECTS.. | 00002f50 20 20 20 20 20 20 20 20 20 20 20 73 6f 6c 69 64 | solid| 00002f60 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | {. | 00002f70 20 20 20 20 63 72 65 61 74 65 20 7b 0a 20 20 20 | create {. | 00002f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 | t| 00002f90 79 70 65 20 3c 6f 62 6a 65 63 74 5f 74 79 70 65 |ype <object_type| 00002fa0 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |>. | 00002fb0 20 20 20 20 70 6f 69 6e 74 73 20 3c 70 6f 69 6e | points <poin| 00002fc0 74 73 5f 73 70 65 63 3e 0a 20 20 20 20 20 20 20 |ts_spec>. | 00002fd0 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 20 | size | 00002fe0 3c 73 69 7a 65 5f 73 70 65 63 3e 0a 20 20 20 20 |<size_spec>. | 00002ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 | }. | 00003000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003010 73 63 61 6c 65 20 3c 78 73 3e 2c 3c 79 73 3e 2c |scale <xs>,<ys>,| 00003020 3c 7a 73 3e 0a 20 20 20 20 20 20 20 20 20 20 20 |<zs>. | 00003030 20 20 20 20 20 20 6e 65 61 72 62 6f 6e 64 73 20 | nearbonds | 00003040 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |{. | 00003050 20 20 20 20 73 70 72 69 6e 67 5f 63 6f 6e 73 74 | spring_const| 00003060 20 3c 6c 61 6d 62 64 61 3e 0a 20 20 20 20 20 20 | <lambda>. | 00003070 20 20 20 20 20 20 20 20 20 20 20 20 72 61 6e 67 | rang| 00003080 65 20 3c 72 61 6e 67 65 5f 76 61 6c 3e 0a 20 20 |e <range_val>. | 00003090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d | }| 000030a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 000030b0 20 20 3c 6f 74 68 65 72 20 63 6f 6d 6d 61 6e 64 | <other command| 000030c0 73 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 |s>. | 000030d0 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 54 68 | }.. Th| 000030e0 65 20 62 6c 6f 63 6b 20 74 6f 20 63 72 65 61 74 |e block to creat| 000030f0 65 20 61 20 73 6f 6c 69 64 20 73 74 61 72 74 73 |e a solid starts| 00003100 20 77 69 74 68 20 61 20 22 63 72 65 61 74 65 22 | with a "create"| 00003110 20 62 6c 6f 63 6b 2c 20 6c 69 6b 65 0a 62 61 63 | block, like.bac| 00003120 6b 67 72 6f 75 6e 64 73 2e 20 20 54 68 65 20 6f |kgrounds. The o| 00003130 6e 6c 79 20 64 69 66 66 65 72 65 6e 63 65 20 68 |nly difference h| 00003140 65 72 65 20 69 73 20 74 68 65 20 63 68 6f 69 63 |ere is the choic| 00003150 65 20 6f 66 20 6f 62 6a 65 63 74 73 20 79 6f 75 |e of objects you| 00003160 20 63 61 6e 0a 63 72 65 61 74 65 3a 20 61 20 73 | can.create: a s| 00003170 68 65 65 74 2c 20 61 20 63 75 62 6f 69 64 2c 20 |heet, a cuboid, | 00003180 61 20 63 75 62 65 2c 20 61 20 74 75 62 65 20 6f |a cube, a tube o| 00003190 72 20 61 20 63 6f 6d 70 6f 75 6e 64 20 6f 62 6a |r a compound obj| 000031a0 65 63 74 2e 20 20 54 68 65 73 65 20 77 69 6c 6c |ect. These will| 000031b0 0a 62 65 20 64 65 73 63 72 69 62 65 64 20 69 6e |.be described in| 000031c0 64 69 76 69 64 75 61 6c 6c 79 20 6c 61 74 65 72 |dividually later| 000031d0 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 73 |... The s| 000031e0 63 61 6c 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 |cale command is | 000031f0 6f 70 74 69 6f 6e 61 6c 3a 20 69 74 20 6c 65 74 |optional: it let| 00003200 73 20 79 6f 75 20 73 63 61 6c 65 20 61 6e 20 6f |s you scale an o| 00003210 62 6a 65 63 74 20 69 6e 20 74 68 65 20 78 2c 0a |bject in the x,.| 00003220 79 20 61 6e 64 20 7a 20 64 69 72 65 63 74 69 6f |y and z directio| 00003230 6e 73 2e 20 20 54 68 69 73 20 63 6f 6d 6d 61 6e |ns. This comman| 00003240 64 20 69 73 20 6d 61 69 6e 6c 79 20 70 72 65 73 |d is mainly pres| 00003250 65 6e 74 20 74 6f 20 61 6c 6c 6f 77 20 79 6f 75 |ent to allow you| 00003260 20 74 6f 20 63 68 61 6e 67 65 0a 74 68 65 20 73 | to change.the s| 00003270 69 7a 65 20 6f 66 20 61 20 63 6f 6d 70 6f 75 6e |ize of a compoun| 00003280 64 20 6f 62 6a 65 63 74 2c 20 77 68 69 63 68 20 |d object, which | 00003290 77 6f 75 6c 64 20 6f 74 68 65 72 77 69 73 65 20 |would otherwise | 000032a0 62 65 20 76 65 72 79 20 74 65 64 69 6f 75 73 2e |be very tedious.| 000032b0 20 20 49 0a 77 6f 75 6c 64 20 61 64 76 69 73 65 | I.would advise| 000032c0 20 74 68 61 74 20 79 6f 75 20 6b 65 65 70 20 74 | that you keep t| 000032d0 68 65 20 78 2c 20 79 20 61 6e 64 20 7a 20 73 63 |he x, y and z sc| 000032e0 61 6c 69 6e 67 73 20 73 69 6d 69 6c 61 72 2c 20 |alings similar, | 000032f0 61 73 20 6f 62 6a 65 63 74 73 20 77 68 69 63 68 |as objects which| 00003300 0a 68 61 76 65 20 64 69 66 66 65 72 65 6e 74 20 |.have different | 00003310 70 6f 69 6e 74 20 73 70 61 63 69 6e 67 73 20 69 |point spacings i| 00003320 6e 20 64 69 66 66 65 72 65 6e 74 20 64 69 72 65 |n different dire| 00003330 63 74 69 6f 6e 73 20 74 65 6e 64 20 74 6f 20 62 |ctions tend to b| 00003340 65 20 75 6e 73 74 61 62 6c 65 2e 20 0a 54 68 65 |e unstable. .The| 00003350 20 73 63 61 6c 65 20 63 6f 6d 6d 61 6e 64 20 67 | scale command g| 00003360 6f 65 73 20 62 65 66 6f 72 65 20 6e 65 61 72 62 |oes before nearb| 00003370 6f 6e 64 73 20 62 65 63 61 75 73 65 20 6f 74 68 |onds because oth| 00003380 65 72 77 69 73 65 20 77 6f 75 6c 64 20 67 65 74 |erwise would get| 00003390 0a 73 74 72 65 74 63 68 65 64 3a 20 79 6f 75 20 |.stretched: you | 000033a0 6d 61 79 20 77 61 6e 74 20 74 6f 20 75 73 65 20 |may want to use | 000033b0 74 68 69 73 20 65 66 66 65 63 74 2c 20 62 75 74 |this effect, but| 000033c0 20 6b 65 65 70 20 74 68 65 20 73 63 61 6c 65 20 | keep the scale | 000033d0 66 61 63 74 6f 72 73 20 63 6c 6f 73 65 0a 74 6f |factors close.to| 000033e0 20 31 20 74 6f 20 70 72 65 76 65 6e 74 20 65 78 | 1 to prevent ex| 000033f0 70 6c 6f 73 69 6f 6e 73 2e 0a 0a 20 20 20 20 20 |plosions... | 00003400 20 20 20 54 68 65 20 22 6e 65 61 72 62 6f 6e 64 | The "nearbond| 00003410 73 22 20 62 6c 6f 63 6b 20 69 73 20 77 68 61 74 |s" block is what| 00003420 20 6d 61 6b 65 73 20 74 68 65 20 73 6f 6c 69 64 | makes the solid| 00003430 20 61 20 73 6f 6c 69 64 20 28 62 75 74 20 73 65 | a solid (but se| 00003440 65 0a 22 73 6f 6c 69 64 5f 64 61 6d 70 20 2d 31 |e."solid_damp -1| 00003450 22 20 66 6f 72 20 61 6e 6f 74 68 65 72 20 77 61 |" for another wa| 00003460 79 29 2e 20 20 49 74 20 6e 65 65 64 73 20 74 6f |y). It needs to| 00003470 20 62 65 20 70 75 74 20 61 66 74 65 72 20 74 68 | be put after th| 00003480 65 20 22 63 72 65 61 74 65 22 0a 62 6c 6f 63 6b |e "create".block| 00003490 2c 20 62 65 63 61 75 73 65 20 69 74 20 63 72 65 |, because it cre| 000034a0 61 74 65 73 20 61 6c 6c 20 74 68 65 20 6c 69 74 |ates all the lit| 000034b0 74 6c 65 20 73 70 72 69 6e 67 73 20 77 68 69 63 |tle springs whic| 000034c0 68 20 68 6f 6c 64 20 74 68 65 20 70 6f 69 6e 74 |h hold the point| 000034d0 73 20 69 6e 0a 74 68 65 20 6f 62 6a 65 63 74 20 |s in.the object | 000034e0 74 6f 67 65 74 68 65 72 2e 20 20 49 74 20 69 73 |together. It is| 000034f0 20 63 61 6c 6c 65 64 20 22 6e 65 61 72 62 6f 6e | called "nearbon| 00003500 64 73 22 20 62 65 63 61 75 73 65 20 69 74 20 6f |ds" because it o| 00003510 6e 6c 79 20 62 6f 6e 64 73 0a 74 6f 67 65 74 68 |nly bonds.togeth| 00003520 65 72 20 70 6f 69 6e 74 73 20 77 68 69 63 68 20 |er points which | 00003530 61 72 65 20 66 61 69 72 6c 79 20 63 6c 6f 73 65 |are fairly close| 00003540 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 61 66 |. The number af| 00003550 74 65 72 20 22 73 70 72 69 6e 67 5f 63 6f 6e 73 |ter "spring_cons| 00003560 74 22 0a 73 65 74 73 20 74 68 65 20 73 74 69 66 |t".sets the stif| 00003570 66 6e 65 73 73 20 6f 66 20 74 68 65 20 73 70 72 |fness of the spr| 00003580 69 6e 67 73 2c 20 61 6e 64 20 22 72 61 6e 67 65 |ings, and "range| 00003590 22 20 73 65 74 73 20 68 6f 77 20 6e 65 61 72 20 |" sets how near | 000035a0 74 77 6f 20 70 6f 69 6e 74 73 20 68 61 76 65 0a |two points have.| 000035b0 74 6f 20 62 65 20 66 6f 72 20 61 20 73 70 72 69 |to be for a spri| 000035c0 6e 67 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 68 |ng to connect th| 000035d0 65 6d 2e 20 20 46 6f 72 20 65 61 63 68 20 6f 62 |em. For each ob| 000035e0 6a 65 63 74 2c 20 74 68 65 20 70 72 6f 67 72 61 |ject, the progra| 000035f0 6d 20 77 6f 72 6b 73 20 6f 75 74 0a 61 6e 20 61 |m works out.an a| 00003600 76 65 72 61 67 65 20 22 6e 65 61 72 65 73 74 2d |verage "nearest-| 00003610 6e 65 69 67 68 62 6f 75 72 22 20 64 69 73 74 61 |neighbour" dista| 00003620 6e 63 65 20 28 63 61 6c 6c 20 74 68 69 73 20 44 |nce (call this D| 00003630 29 2c 20 61 6e 64 20 74 68 65 20 22 72 61 6e 67 |), and the "rang| 00003640 65 22 20 76 61 6c 75 65 0a 69 73 20 69 6e 20 74 |e" value.is in t| 00003650 65 72 6d 73 20 6f 66 20 44 2e 20 20 50 6f 69 6e |erms of D. Poin| 00003660 74 73 20 77 69 74 68 20 61 20 73 65 70 61 72 61 |ts with a separa| 00003670 74 69 6f 6e 20 6f 66 20 62 65 74 77 65 65 6e 20 |tion of between | 00003680 44 2f 32 20 61 6e 64 20 44 20 61 72 65 20 6c 69 |D/2 and D are li| 00003690 6e 6b 65 64 0a 77 69 74 68 20 61 20 73 70 72 69 |nked.with a spri| 000036a0 6e 67 20 6f 66 20 73 74 72 65 6e 67 74 68 20 3c |ng of strength <| 000036b0 6c 61 6d 62 64 61 3e 2c 20 61 6e 64 20 70 6f 69 |lambda>, and poi| 000036c0 6e 74 73 20 77 69 74 68 20 61 20 73 65 70 61 72 |nts with a separ| 000036d0 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 44 0a |ation between D.| 000036e0 61 6e 64 20 44 2a 3c 72 61 6e 67 65 5f 76 61 6c |and D*<range_val| 000036f0 3e 20 61 72 65 20 6c 69 6e 6b 65 64 20 77 69 74 |> are linked wit| 00003700 68 20 61 20 73 70 72 69 6e 67 20 6f 66 20 73 74 |h a spring of st| 00003710 72 65 6e 67 74 68 20 77 68 69 63 68 20 64 65 63 |rength which dec| 00003720 72 65 61 73 65 73 0a 73 6d 6f 6f 74 68 6c 79 20 |reases.smoothly | 00003730 64 6f 77 6e 20 74 6f 20 30 20 66 6f 72 20 44 2a |down to 0 for D*| 00003740 3c 72 61 6e 67 65 5f 76 61 6c 3e 2e 20 20 20 50 |<range_val>. P| 00003750 6f 69 6e 74 73 20 77 69 74 68 20 61 20 73 65 70 |oints with a sep| 00003760 61 72 61 74 69 6f 6e 20 6f 66 20 6c 65 73 73 0a |aration of less.| 00003770 74 68 61 6e 20 44 2f 32 20 61 72 65 20 6e 6f 74 |than D/2 are not| 00003780 20 63 6f 6e 6e 65 63 74 65 64 2e 0a 0a 0a 20 20 | connected.... | 00003790 20 20 20 20 20 20 4f 54 48 45 52 20 43 4f 4d 4d | OTHER COMM| 000037a0 41 4e 44 53 0a 0a 20 20 20 20 20 20 20 20 54 68 |ANDS.. Th| 000037b0 65 72 65 20 61 72 65 20 74 77 6f 20 63 6f 6d 6d |ere are two comm| 000037c0 61 6e 64 73 20 79 6f 75 20 63 61 6e 20 75 73 65 |ands you can use| 000037d0 20 74 6f 20 70 6c 61 63 65 20 74 68 65 20 6f 62 | to place the ob| 000037e0 6a 65 63 74 20 77 68 65 72 65 20 79 6f 75 0a 77 |ject where you.w| 000037f0 61 6e 74 20 69 74 3a 0a 0a 20 20 20 20 20 20 20 |ant it:.. | 00003800 20 20 20 20 20 20 20 20 20 74 72 61 6e 73 6c 61 | transla| 00003810 74 65 20 3c 78 3e 2c 3c 79 3e 2c 3c 7a 3e 0a 20 |te <x>,<y>,<z>. | 00003820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 | r| 00003830 6f 74 61 74 65 20 3c 78 72 3e 2c 3c 79 72 3e 2c |otate <xr>,<yr>,| 00003840 3c 7a 72 3e 0a 0a 20 20 20 20 20 20 20 20 54 68 |<zr>.. Th| 00003850 65 20 74 72 61 6e 73 6c 61 74 65 20 63 6f 6d 6d |e translate comm| 00003860 61 6e 64 20 68 61 73 20 62 65 65 6e 20 64 65 73 |and has been des| 00003870 63 72 69 62 65 64 20 61 62 6f 76 65 2e 20 20 54 |cribed above. T| 00003880 68 65 20 72 6f 74 61 74 65 20 63 6f 6d 6d 61 6e |he rotate comman| 00003890 64 0a 72 6f 74 61 74 65 73 20 74 68 65 20 6f 62 |d.rotates the ob| 000038a0 6a 65 63 74 20 41 42 4f 55 54 20 54 48 45 20 4f |ject ABOUT THE O| 000038b0 52 49 47 49 4e 2e 20 20 49 74 20 72 6f 74 61 74 |RIGIN. It rotat| 000038c0 65 73 20 62 79 20 3c 78 72 3e 2c 20 3c 79 72 3e |es by <xr>, <yr>| 000038d0 20 61 6e 64 20 3c 7a 72 3e 0a 64 65 67 72 65 65 | and <zr>.degree| 000038e0 73 20 61 62 6f 75 74 20 74 68 65 20 78 2c 20 79 |s about the x, y| 000038f0 2c 20 61 6e 64 20 7a 20 61 78 65 73 20 72 65 73 |, and z axes res| 00003900 70 65 63 74 69 76 65 6c 79 2e 20 20 59 6f 75 20 |pectively. You | 00003910 63 61 6e 20 68 61 76 65 20 61 6e 79 20 6e 75 6d |can have any num| 00003920 62 65 72 20 6f 66 0a 74 72 61 6e 73 6c 61 74 65 |ber of.translate| 00003930 20 61 6e 64 20 72 6f 74 61 74 65 20 63 6f 6d 6d | and rotate comm| 00003940 61 6e 64 73 20 77 69 74 68 6f 75 74 20 66 65 61 |ands without fea| 00003950 72 20 6f 66 20 73 6c 6f 77 69 6e 67 20 64 6f 77 |r of slowing dow| 00003960 6e 20 74 68 65 20 70 72 6f 67 72 61 6d 2c 0a 62 |n the program,.b| 00003970 65 63 61 75 73 65 20 74 68 65 20 63 6f 6d 6d 61 |ecause the comma| 00003980 6e 64 73 20 6f 6e 6c 79 20 61 66 66 65 63 74 20 |nds only affect | 00003990 74 68 65 20 69 6e 69 74 69 61 6c 20 73 65 74 74 |the initial sett| 000039a0 69 6e 67 20 75 70 2e 20 20 46 6f 72 20 65 78 61 |ing up. For exa| 000039b0 6d 70 6c 65 2c 20 69 66 0a 79 6f 75 20 77 61 6e |mple, if.you wan| 000039c0 74 20 74 6f 20 72 6f 74 61 74 65 20 62 79 20 31 |t to rotate by 1| 000039d0 35 20 64 65 67 72 65 65 73 20 61 62 6f 75 74 20 |5 degrees about | 000039e0 74 68 65 20 70 6f 69 6e 74 20 28 31 69 6e 2c 31 |the point (1in,1| 000039f0 69 6e 2c 32 69 6e 29 2c 20 61 72 6f 75 6e 64 20 |in,2in), around | 00003a00 74 68 65 20 78 0a 61 78 69 73 2c 20 79 6f 75 20 |the x.axis, you | 00003a10 63 6f 75 6c 64 20 75 73 65 3a 0a 0a 20 20 20 20 |could use:.. | 00003a20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 6e | tran| 00003a30 73 6c 61 74 65 20 2d 31 69 6e 2c 2d 31 69 6e 2c |slate -1in,-1in,| 00003a40 2d 32 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 |-2in. | 00003a50 20 20 20 20 20 72 6f 74 61 74 65 20 31 35 2c 30 | rotate 15,0| 00003a60 2c 30 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 |,0 . | 00003a70 20 20 20 20 20 20 20 20 20 20 74 72 61 6e 73 6c | transl| 00003a80 61 74 65 20 31 69 6e 2c 31 69 6e 2c 32 69 6e 0a |ate 1in,1in,2in.| 00003a90 0a 20 20 20 20 20 20 20 20 61 6e 64 20 74 68 65 |. and the| 00003aa0 6e 20 74 72 61 6e 73 6c 61 74 65 20 74 68 65 20 |n translate the | 00003ab0 73 6f 6c 69 64 20 74 6f 20 77 68 65 72 65 20 79 |solid to where y| 00003ac0 6f 75 20 77 61 6e 74 20 69 74 2e 0a 0a 20 20 20 |ou want it... | 00003ad0 20 20 20 20 20 54 68 65 72 65 20 61 72 65 20 73 | There are s| 00003ae0 6f 6d 65 20 6f 74 68 65 72 20 63 6f 6d 6d 61 6e |ome other comman| 00003af0 64 73 20 77 68 69 63 68 20 63 61 6e 20 67 6f 20 |ds which can go | 00003b00 69 6e 20 61 20 73 6f 6c 69 64 20 62 6c 6f 63 6b |in a solid block| 00003b10 2c 20 62 75 74 0a 74 68 65 73 65 20 73 68 6f 75 |, but.these shou| 00003b20 6c 64 20 6f 6e 6c 79 20 62 65 20 67 69 76 65 6e |ld only be given| 00003b30 20 6f 6e 63 65 20 69 6e 20 65 61 63 68 20 73 6f | once in each so| 00003b40 6c 69 64 2e 20 20 54 68 65 79 20 61 72 65 3a 0a |lid. They are:.| 00003b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 00003b70 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 | . | 00003b80 20 20 20 20 20 76 65 6c 6f 63 69 74 79 20 3c 78 | velocity <x| 00003b90 76 3e 2c 3c 79 76 3e 2c 3c 7a 76 3e 0a 20 20 20 |v>,<yv>,<zv>. | 00003ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70 69 | spi| 00003bb0 6e 20 3c 78 72 3e 2c 3c 79 72 3e 2c 3c 7a 72 3e |n <xr>,<yr>,<zr>| 00003bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00003bd0 20 61 69 72 5f 64 61 6d 70 20 3c 64 61 6d 70 5f | air_damp <damp_| 00003be0 76 61 6c 3e 20 20 0a 20 20 20 20 20 20 20 20 20 |val> . | 00003bf0 20 20 20 20 20 20 20 73 6f 6c 69 64 5f 64 61 6d | solid_dam| 00003c00 70 20 3c 64 61 6d 70 5f 76 61 6c 3e 0a 20 20 20 |p <damp_val>. | 00003c10 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 6d | dam| 00003c20 70 69 6e 67 20 3c 64 61 6d 70 5f 76 61 6c 3e 0a |ping <damp_val>.| 00003c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003c40 66 69 78 5f 76 65 6c 20 3c 62 6f 78 5f 78 3e 2c |fix_vel <box_x>,| 00003c50 3c 62 6f 78 5f 79 3e 2c 3c 62 6f 78 5f 7a 3e 2c |<box_y>,<box_z>,| 00003c60 3c 62 6f 78 5f 77 3e 2c 3c 62 6f 78 5f 64 3e 2c |<box_w>,<box_d>,| 00003c70 3c 62 6f 78 5f 68 3e 2c 0a 20 20 20 20 20 20 20 |<box_h>,. | 00003c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003c90 20 3c 78 76 3e 2c 3c 79 76 3e 2c 3c 7a 76 3e 20 | <xv>,<yv>,<zv> | 00003ca0 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 | . | 00003cb0 20 20 20 20 20 70 75 6c 6c 20 3c 66 69 72 73 74 | pull <first| 00003cc0 3e 2c 3c 6c 61 73 74 3e 2c 3c 73 74 65 70 3e 2c |>,<last>,<step>,| 00003cd0 3c 78 76 3e 2c 3c 79 76 3e 2c 3c 7a 76 3e 0a 20 |<xv>,<yv>,<zv>. | 00003ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 | r| 00003cf0 65 70 65 6c 20 3c 72 65 70 65 6c 5f 73 74 72 65 |epel <repel_stre| 00003d00 6e 67 74 68 3e 0a 0a 0a 54 48 45 20 56 45 4c 4f |ngth>...THE VELO| 00003d10 43 49 54 59 20 43 4f 4d 4d 41 4e 44 0a 20 20 20 |CITY COMMAND. | 00003d20 20 20 20 20 20 54 68 65 20 22 76 65 6c 6f 63 69 | The "veloci| 00003d30 74 79 22 20 63 6f 6d 6d 61 6e 64 20 6a 75 73 74 |ty" command just| 00003d40 20 67 69 76 65 73 20 74 68 65 20 6f 62 6a 65 63 | gives the objec| 00003d50 74 20 61 6e 20 69 6e 69 74 69 61 6c 20 76 65 6c |t an initial vel| 00003d60 6f 63 69 74 79 2c 20 62 79 0a 73 65 74 74 69 6e |ocity, by.settin| 00003d70 67 20 74 68 65 20 76 65 6c 6f 63 69 74 79 20 6f |g the velocity o| 00003d80 66 20 61 6c 6c 20 74 68 65 20 70 6f 69 6e 74 73 |f all the points| 00003d90 20 74 6f 20 74 68 65 20 61 6d 6f 75 6e 74 20 73 | to the amount s| 00003da0 70 65 63 69 66 69 65 64 2e 20 20 54 68 65 0a 70 |pecified. The.p| 00003db0 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 74 68 |arameters are th| 00003dc0 65 20 76 65 6c 6f 63 69 74 79 20 63 6f 6d 70 6f |e velocity compo| 00003dd0 6e 65 6e 74 73 20 69 6e 20 74 68 65 20 78 2c 20 |nents in the x, | 00003de0 79 20 61 6e 64 20 7a 20 64 69 72 65 63 74 69 6f |y and z directio| 00003df0 6e 73 2c 20 77 68 69 63 68 0a 63 61 6e 20 62 65 |ns, which.can be| 00003e00 20 67 69 76 65 6e 20 69 6e 20 76 61 72 69 6f 75 | given in variou| 00003e10 73 20 75 6e 69 74 73 20 61 73 20 64 65 73 63 72 |s units as descr| 00003e20 69 62 65 64 20 65 61 72 6c 69 65 72 2e 20 20 4e |ibed earlier. N| 00003e30 42 3a 20 54 68 65 20 76 65 6c 6f 63 69 74 79 20 |B: The velocity | 00003e40 6f 66 20 61 6e 0a 6f 62 6a 65 63 74 20 69 73 20 |of an.object is | 00003e50 6e 6f 74 20 72 6f 74 61 74 65 64 20 77 68 65 6e |not rotated when| 00003e60 20 79 6f 75 20 72 6f 74 61 74 65 20 74 68 65 20 | you rotate the | 00003e70 6f 62 6a 65 63 74 2e 0a 0a 54 48 45 20 53 50 49 |object...THE SPI| 00003e80 4e 20 43 4f 4d 4d 41 4e 44 0a 20 20 20 20 20 20 |N COMMAND. | 00003e90 20 20 54 68 65 20 22 73 70 69 6e 22 20 63 6f 6d | The "spin" com| 00003ea0 6d 61 6e 64 20 67 69 76 65 73 20 74 68 65 20 6f |mand gives the o| 00003eb0 62 6a 65 63 74 20 61 6e 20 61 6e 67 75 6c 61 72 |bject an angular| 00003ec0 20 76 65 6c 6f 63 69 74 79 2e 20 20 54 68 65 20 | velocity. The | 00003ed0 74 68 72 65 65 0a 70 61 72 61 6d 65 74 65 72 73 |three.parameters| 00003ee0 20 61 72 65 20 74 68 65 20 63 6f 6d 70 6f 6e 65 | are the compone| 00003ef0 6e 74 73 20 6f 66 20 61 6e 67 75 6c 61 72 20 76 |nts of angular v| 00003f00 65 6c 6f 63 69 74 79 20 61 62 6f 75 74 20 74 68 |elocity about th| 00003f10 65 20 78 2c 20 79 20 61 6e 64 20 7a 20 61 78 65 |e x, y and z axe| 00003f20 73 2e 0a 20 54 68 65 20 63 65 6e 74 72 65 20 6f |s.. The centre o| 00003f30 66 20 74 68 65 20 72 6f 74 61 74 69 6f 6e 20 69 |f the rotation i| 00003f40 73 20 61 6c 77 61 79 73 20 74 68 65 20 6f 72 69 |s always the ori| 00003f50 67 69 6e 3a 20 6d 61 6b 65 20 73 75 72 65 20 74 |gin: make sure t| 00003f60 68 61 74 20 74 68 65 20 70 6f 69 6e 74 0a 79 6f |hat the point.yo| 00003f70 75 20 77 61 6e 74 20 74 68 65 20 6f 62 6a 65 63 |u want the objec| 00003f80 74 20 74 6f 20 73 70 69 6e 20 61 72 6f 75 6e 64 |t to spin around| 00003f90 20 69 73 20 61 74 20 74 68 65 20 6f 72 69 67 69 | is at the origi| 00003fa0 6e 20 77 68 65 6e 20 79 6f 75 20 75 73 65 20 74 |n when you use t| 00003fb0 68 65 20 22 73 70 69 6e 22 0a 63 6f 6d 6d 61 6e |he "spin".comman| 00003fc0 64 2e 20 20 49 66 20 79 6f 75 20 77 61 6e 74 20 |d. If you want | 00003fd0 74 6f 20 67 69 76 65 20 61 6e 20 6f 62 6a 65 63 |to give an objec| 00003fe0 74 20 62 6f 74 68 20 61 20 73 70 69 6e 20 61 6e |t both a spin an| 00003ff0 64 20 61 20 6c 69 6e 65 61 72 20 76 65 6c 6f 63 |d a linear veloc| 00004000 69 74 79 2c 0a 79 6f 75 20 6d 75 73 74 20 75 73 |ity,.you must us| 00004010 65 20 74 68 65 20 22 76 65 6c 6f 63 69 74 79 22 |e the "velocity"| 00004020 20 63 6f 6d 6d 61 6e 64 20 66 69 72 73 74 2c 20 | command first, | 00004030 62 65 63 61 75 73 65 20 22 76 65 6c 6f 63 69 74 |because "velocit| 00004040 79 22 20 6a 75 73 74 20 73 65 74 73 20 74 68 65 |y" just sets the| 00004050 0a 76 65 6c 6f 63 69 74 69 65 73 20 6f 66 20 74 |.velocities of t| 00004060 68 65 20 70 6f 69 6e 74 73 2c 20 77 68 65 72 65 |he points, where| 00004070 61 73 20 22 73 70 69 6e 22 20 61 64 64 73 20 74 |as "spin" adds t| 00004080 6f 20 74 68 65 20 76 65 6c 6f 63 69 74 69 65 73 |o the velocities| 00004090 20 61 6c 72 65 61 64 79 0a 70 72 65 73 65 6e 74 | already.present| 000040a0 2e 0a 0a 54 48 45 20 41 49 52 5f 44 41 4d 50 20 |...THE AIR_DAMP | 000040b0 43 4f 4d 4d 41 4e 44 0a 20 20 20 20 20 20 20 20 |COMMAND. | 000040c0 22 61 69 72 5f 64 61 6d 70 20 3c 64 61 6d 70 5f |"air_damp <damp_| 000040d0 76 61 6c 3e 22 20 69 73 20 61 20 63 6f 6d 6d 61 |val>" is a comma| 000040e0 6e 64 20 77 68 69 63 68 20 73 69 6d 75 6c 61 74 |nd which simulat| 000040f0 65 73 20 77 69 6e 64 20 72 65 73 69 73 74 61 6e |es wind resistan| 00004100 63 65 0a 6f 6e 20 6f 62 6a 65 63 74 73 2c 20 62 |ce.on objects, b| 00004110 79 20 73 6c 6f 77 69 6e 67 20 64 6f 77 6e 20 70 |y slowing down p| 00004120 6f 69 6e 74 73 20 6f 6e 20 74 68 65 20 73 75 72 |oints on the sur| 00004130 66 61 63 65 20 6f 66 20 6f 62 6a 65 63 74 73 2e |face of objects.| 00004140 20 20 54 68 69 73 20 72 65 70 6c 61 63 65 73 0a | This replaces.| 00004150 74 68 65 20 6f 6c 64 20 63 6f 6d 6d 61 6e 64 20 |the old command | 00004160 22 64 61 6d 70 69 6e 67 22 20 77 68 69 63 68 20 |"damping" which | 00004170 61 66 66 65 63 74 65 64 20 61 6c 6c 20 74 68 65 |affected all the| 00004180 20 70 6f 69 6e 74 73 20 69 6e 20 61 6e 20 6f 62 | points in an ob| 00004190 6a 65 63 74 2c 20 61 6e 64 0a 77 61 73 20 61 6c |ject, and.was al| 000041a0 73 6f 20 73 6c 69 67 68 74 6c 79 20 64 69 72 65 |so slightly dire| 000041b0 63 74 69 6f 6e 2d 64 65 70 65 6e 64 61 6e 74 2e |ction-dependant.| 000041c0 20 20 54 68 65 20 70 61 72 61 6d 65 74 65 72 20 | The parameter | 000041d0 66 6f 72 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 |for this command| 000041e0 20 69 73 20 61 6e 0a 69 6e 74 65 67 65 72 20 76 | is an.integer v| 000041f0 61 6c 75 65 3a 20 34 20 69 73 20 61 20 67 6f 6f |alue: 4 is a goo| 00004200 64 20 73 74 61 72 74 69 6e 67 20 70 6f 69 6e 74 |d starting point| 00004210 2e 20 20 49 6e 63 72 65 61 73 69 6e 67 20 74 68 |. Increasing th| 00004220 69 73 20 76 61 6c 75 65 20 62 79 20 31 0a 68 61 |is value by 1.ha| 00004230 6c 76 65 73 20 74 68 65 20 61 6d 6f 75 6e 74 20 |lves the amount | 00004240 6f 66 20 77 69 6e 64 20 72 65 73 69 73 74 61 6e |of wind resistan| 00004250 63 65 2c 20 61 6e 64 20 64 65 63 72 65 61 73 69 |ce, and decreasi| 00004260 6e 67 20 69 74 20 62 79 20 31 20 64 6f 75 62 6c |ng it by 1 doubl| 00004270 65 73 20 69 74 2e 20 0a 56 61 6c 75 65 73 20 62 |es it. .Values b| 00004280 65 6c 6f 77 20 32 20 6d 61 79 20 63 61 75 73 65 |elow 2 may cause| 00004290 20 74 68 65 20 6f 62 6a 65 63 74 20 74 6f 20 65 | the object to e| 000042a0 78 70 6c 6f 64 65 2e 20 20 54 68 65 20 75 73 65 |xplode. The use| 000042b0 20 6f 66 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 | of this command| 000042c0 20 69 73 0a 61 70 70 72 6f 70 72 69 61 74 65 20 | is.appropriate | 000042d0 66 6f 72 3a 0a 61 2f 20 20 20 20 20 20 53 68 65 |for:.a/ She| 000042e0 65 74 2d 74 79 70 65 20 6f 62 6a 65 63 74 73 2c |et-type objects,| 000042f0 20 77 68 69 63 68 20 69 6e 20 72 65 61 6c 20 6c | which in real l| 00004300 69 66 65 20 61 72 65 20 73 6c 6f 77 65 64 20 61 |ife are slowed a| 00004310 20 6c 6f 74 20 62 79 20 61 69 72 0a 70 72 65 73 | lot by air.pres| 00004320 73 75 72 65 0a 62 2f 20 20 20 20 20 20 4f 62 6a |sure.b/ Obj| 00004330 65 63 74 73 20 77 68 69 63 68 20 61 72 65 20 70 |ects which are p| 00004340 69 63 6b 69 6e 67 20 75 70 20 73 70 65 65 64 20 |icking up speed | 00004350 74 6f 6f 20 66 61 73 74 3a 20 74 72 79 20 72 75 |too fast: try ru| 00004360 6e 6e 69 6e 67 20 74 68 65 0a 61 6e 69 6d 61 74 |nning the.animat| 00004370 69 6f 6e 20 22 46 6c 6f 70 43 75 62 65 22 20 77 |ion "FlopCube" w| 00004380 69 74 68 20 6e 6f 20 61 69 72 20 64 61 6d 70 69 |ith no air dampi| 00004390 6e 67 2e 0a 0a 54 48 45 20 22 53 4f 4c 49 44 5f |ng...THE "SOLID_| 000043a0 44 41 4d 50 22 20 43 4f 4d 4d 41 4e 44 3a 0a 20 |DAMP" COMMAND:. | 000043b0 20 20 20 20 20 20 20 54 68 65 20 64 61 6d 70 69 | The dampi| 000043c0 6e 67 20 72 6f 75 74 69 6e 65 20 69 6e 20 74 68 |ng routine in th| 000043d0 65 20 70 72 65 76 69 6f 75 73 20 76 65 72 73 69 |e previous versi| 000043e0 6f 6e 20 6f 66 20 46 45 4d 53 20 75 73 65 64 20 |on of FEMS used | 000043f0 61 20 73 69 6d 70 6c 65 0a 6d 65 74 68 6f 64 20 |a simple.method | 00004400 77 68 6f 73 65 20 65 66 66 65 63 74 20 77 61 73 |whose effect was| 00004410 20 73 69 6d 69 6c 61 72 20 74 6f 20 68 61 76 69 | similar to havi| 00004420 6e 67 20 77 69 6e 64 20 72 65 73 69 73 74 61 6e |ng wind resistan| 00004430 63 65 20 6f 6e 20 65 76 65 72 79 20 65 6c 65 6d |ce on every elem| 00004440 65 6e 74 0a 69 6e 20 61 6e 20 6f 62 6a 65 63 74 |ent.in an object| 00004450 3a 20 74 68 65 20 66 61 73 74 65 72 20 61 20 70 |: the faster a p| 00004460 6f 69 6e 74 20 77 61 73 20 6d 6f 76 69 6e 67 2c |oint was moving,| 00004470 20 74 68 65 20 6d 6f 72 65 20 69 74 20 77 61 73 | the more it was| 00004480 20 73 6c 6f 77 65 64 20 64 6f 77 6e 2e 20 0a 54 | slowed down. .T| 00004490 68 69 73 20 67 61 76 65 20 61 20 72 65 61 6c 69 |his gave a reali| 000044a0 73 74 69 63 20 65 66 66 65 63 74 20 66 6f 72 20 |stic effect for | 000044b0 6f 62 6a 65 63 74 73 20 6c 69 6b 65 20 63 6c 6f |objects like clo| 000044c0 74 68 73 2c 20 77 68 6f 73 65 20 62 65 68 61 76 |ths, whose behav| 000044d0 69 6f 75 72 20 69 73 0a 73 74 72 6f 6e 67 6c 79 |iour is.strongly| 000044e0 20 61 66 66 65 63 74 65 64 20 62 79 20 61 69 72 | affected by air| 000044f0 20 72 65 73 69 73 74 61 6e 63 65 2c 20 62 75 74 | resistance, but| 00004500 20 69 74 20 61 6c 73 6f 20 72 61 70 69 64 6c 79 | it also rapidly| 00004510 20 73 6c 6f 77 73 20 74 68 65 20 72 6f 74 61 74 | slows the rotat| 00004520 69 6f 6e 0a 6f 66 20 61 20 73 70 69 6e 6e 69 6e |ion.of a spinnin| 00004530 67 20 62 61 6c 6c 2c 20 66 6f 72 20 65 78 61 6d |g ball, for exam| 00004540 70 6c 65 2c 20 61 6e 64 20 70 72 65 76 65 6e 74 |ple, and prevent| 00004550 73 20 66 72 65 65 6c 79 2d 66 61 6c 6c 69 6e 67 |s freely-falling| 00004560 20 73 6f 6c 69 64 73 20 66 72 6f 6d 0a 70 69 63 | solids from.pic| 00004570 6b 69 6e 67 20 75 70 20 6d 75 63 68 20 73 70 65 |king up much spe| 00004580 65 64 2e 20 20 54 68 65 20 73 6f 6c 69 64 5f 64 |ed. The solid_d| 00004590 61 6d 70 20 63 6f 6d 6d 61 6e 64 20 64 61 6d 70 |amp command damp| 000045a0 73 20 6f 75 74 20 77 6f 62 62 6c 65 73 20 77 69 |s out wobbles wi| 000045b0 74 68 6f 75 74 0a 74 68 65 73 65 20 73 69 64 65 |thout.these side| 000045c0 2d 65 66 66 65 63 74 73 2c 20 61 6e 64 20 6d 61 |-effects, and ma| 000045d0 6b 65 73 20 74 68 65 20 6f 62 6a 65 63 74 20 73 |kes the object s| 000045e0 6c 69 67 68 74 6c 79 20 6c 65 73 73 20 66 6c 6f |lightly less flo| 000045f0 70 70 79 20 69 6e 20 74 68 65 0a 70 72 6f 63 65 |ppy in the.proce| 00004600 73 73 2e 20 20 54 68 65 20 70 61 72 61 6d 65 74 |ss. The paramet| 00004610 65 72 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 |er is the same a| 00004620 73 20 66 6f 72 20 61 69 72 5f 64 61 6d 70 2c 20 |s for air_damp, | 00004630 65 78 63 65 70 74 2e 2e 2e 0a 20 20 20 20 20 20 |except.... | 00004640 20 20 49 66 20 79 6f 75 20 75 73 65 20 74 68 65 | If you use the| 00004650 20 63 6f 6d 6d 61 6e 64 20 22 73 6f 6c 69 64 5f | command "solid_| 00004660 64 61 6d 70 20 2d 31 22 2c 20 74 68 65 20 6f 62 |damp -1", the ob| 00004670 6a 65 63 74 20 77 69 6c 6c 20 62 65 20 6d 61 64 |ject will be mad| 00004680 65 0a 63 6f 6d 70 6c 65 74 65 6c 79 20 73 6f 6c |e.completely sol| 00004690 69 64 20 28 22 66 72 6f 7a 65 6e 22 29 2e 20 20 |id ("frozen"). | 000046a0 49 6e 20 74 68 69 73 20 63 61 73 65 20 61 6e 79 |In this case any| 000046b0 20 62 6f 6e 64 73 20 69 6e 20 74 68 65 20 6f 62 | bonds in the ob| 000046c0 6a 65 63 74 20 61 72 65 20 6e 6f 74 0a 75 73 65 |ject are not.use| 000046d0 64 2c 20 61 6e 64 20 63 61 6e 20 62 65 20 6c 65 |d, and can be le| 000046e0 66 74 20 6f 75 74 20 6f 66 20 74 68 65 20 73 63 |ft out of the sc| 000046f0 72 69 70 74 2e 20 20 59 6f 75 20 6d 61 79 20 6e |ript. You may n| 00004700 6f 74 69 63 65 20 74 68 61 74 20 74 68 65 20 66 |otice that the f| 00004710 72 6f 7a 65 6e 0a 6f 62 6a 65 63 74 20 77 69 6c |rozen.object wil| 00004720 6c 20 74 65 6e 64 20 74 6f 20 73 74 69 63 6b 20 |l tend to stick | 00004730 69 6e 74 6f 20 62 61 63 6b 67 72 6f 75 6e 64 20 |into background | 00004740 6f 62 6a 65 63 74 73 3a 20 74 68 69 73 20 69 73 |objects: this is| 00004750 20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65 20 6f | a consequence o| 00004760 66 0a 74 68 65 20 62 61 63 6b 67 72 6f 75 6e 64 |f.the background| 00004770 20 6f 62 6a 65 63 74 73 20 62 65 69 6e 67 20 6d | objects being m| 00004780 6f 64 65 6c 6c 65 64 20 61 73 20 22 66 6f 72 63 |odelled as "forc| 00004790 65 20 66 69 65 6c 64 73 22 20 61 6e 64 20 74 68 |e fields" and th| 000047a0 65 20 66 72 6f 7a 65 6e 0a 6f 62 6a 65 63 74 20 |e frozen.object | 000047b0 62 65 69 6e 67 20 63 61 70 61 62 6c 65 20 6f 66 |being capable of| 000047c0 20 61 70 70 6c 79 69 6e 67 20 6d 75 63 68 20 67 | applying much g| 000047d0 72 65 61 74 65 72 20 66 6f 72 63 65 73 20 6f 6e |reater forces on| 000047e0 20 74 68 65 6d 2c 20 77 68 65 72 65 20 74 68 65 | them, where the| 000047f0 0a 6e 6f 6e 2d 66 72 6f 7a 65 6e 20 6f 62 6a 65 |.non-frozen obje| 00004800 63 74 20 77 6f 75 6c 64 20 68 61 76 65 20 62 65 |ct would have be| 00004810 6e 74 20 6f 72 20 73 71 75 61 73 68 65 64 2e 20 |nt or squashed. | 00004820 20 59 6f 75 20 63 61 6e 20 73 74 69 6c 6c 20 68 | You can still h| 00004830 61 76 65 20 61 69 72 0a 64 61 6d 70 69 6e 67 20 |ave air.damping | 00004840 6f 6e 20 74 68 65 20 73 61 6d 65 20 6f 62 6a 65 |on the same obje| 00004850 63 74 2c 20 61 6e 64 20 74 68 65 72 65 20 69 73 |ct, and there is| 00004860 20 6e 6f 74 68 69 6e 67 20 74 6f 20 73 74 6f 70 | nothing to stop| 00004870 20 79 6f 75 20 68 61 76 69 6e 67 20 61 0a 6d 69 | you having a.mi| 00004880 78 74 75 72 65 20 6f 66 20 66 72 6f 7a 65 6e 20 |xture of frozen | 00004890 61 6e 64 20 6e 6f 72 6d 61 6c 20 6f 62 6a 65 63 |and normal objec| 000048a0 74 73 20 69 6e 20 6f 6e 65 20 73 69 6d 75 6c 61 |ts in one simula| 000048b0 74 69 6f 6e 2e 0a 0a 54 48 45 20 44 41 4d 50 49 |tion...THE DAMPI| 000048c0 4e 47 20 43 4f 4d 4d 41 4e 44 0a 20 20 20 20 20 |NG COMMAND. | 000048d0 20 20 20 54 68 65 20 22 64 61 6d 70 69 6e 67 22 | The "damping"| 000048e0 20 63 6f 6d 6d 61 6e 64 20 74 61 6b 65 73 20 74 | command takes t| 000048f0 68 65 20 73 61 6d 65 20 74 79 70 65 20 6f 66 20 |he same type of | 00004900 70 61 72 61 6d 65 74 65 72 20 61 73 20 74 68 65 |parameter as the| 00004910 20 6f 74 68 65 72 0a 74 79 70 65 73 20 6f 66 20 | other.types of | 00004920 64 61 6d 70 69 6e 67 2e 20 20 54 68 69 73 20 74 |damping. This t| 00004930 79 70 65 20 6f 66 20 64 61 6d 70 69 6e 67 20 68 |ype of damping h| 00004940 61 73 20 64 72 61 77 62 61 63 6b 73 20 77 68 69 |as drawbacks whi| 00004950 63 68 20 61 72 65 20 64 65 73 63 72 69 62 65 64 |ch are described| 00004960 0a 61 62 6f 76 65 2c 20 62 75 74 20 74 68 65 20 |.above, but the | 00004970 63 6f 6d 6d 61 6e 64 20 68 61 73 20 62 65 65 6e |command has been| 00004980 20 6c 65 66 74 20 69 6e 20 66 6f 72 20 64 6f 77 | left in for dow| 00004990 6e 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69 |nwards compatibi| 000049a0 6c 69 74 79 2e 0a 0a 54 48 45 20 46 49 58 5f 56 |lity...THE FIX_V| 000049b0 45 4c 20 43 4f 4d 4d 41 4e 44 0a 20 20 20 20 20 |EL COMMAND. | 000049c0 20 20 20 4f 66 74 65 6e 20 69 6e 20 61 6e 20 61 | Often in an a| 000049d0 6e 69 6d 61 74 69 6f 6e 2c 20 79 6f 75 20 6e 65 |nimation, you ne| 000049e0 65 64 20 74 6f 20 67 69 76 65 20 70 61 72 74 20 |ed to give part | 000049f0 6f 72 20 61 6c 6c 20 6f 66 20 61 6e 20 6f 62 6a |or all of an obj| 00004a00 65 63 74 20 61 0a 66 69 78 65 64 20 76 65 6c 6f |ect a.fixed velo| 00004a10 63 69 74 79 20 6f 72 20 74 6f 20 68 6f 6c 64 20 |city or to hold | 00004a20 69 74 20 73 74 69 6c 6c 2e 20 20 54 68 65 20 22 |it still. The "| 00004a30 66 69 78 5f 76 65 6c 22 20 63 6f 6d 6d 61 6e 64 |fix_vel" command| 00004a40 20 6c 65 74 73 20 79 6f 75 20 64 6f 20 74 68 69 | lets you do thi| 00004a50 73 2e 0a 20 54 68 65 20 66 69 72 73 74 20 73 69 |s.. The first si| 00004a60 78 20 70 61 72 61 6d 65 74 65 72 73 20 64 65 66 |x parameters def| 00004a70 69 6e 65 20 61 20 63 75 62 6f 69 64 20 6f 66 20 |ine a cuboid of | 00004a80 73 70 61 63 65 2e 20 20 41 6e 79 20 70 6f 69 6e |space. Any poin| 00004a90 74 73 20 77 68 69 63 68 20 61 72 65 20 69 6e 0a |ts which are in.| 00004aa0 74 68 69 73 20 63 75 62 6f 69 64 20 61 74 20 74 |this cuboid at t| 00004ab0 68 65 20 74 69 6d 65 20 74 68 65 20 22 66 69 78 |he time the "fix| 00004ac0 5f 76 65 6c 22 20 63 6f 6d 6d 61 6e 64 20 69 73 |_vel" command is| 00004ad0 20 64 6f 6e 65 20 61 72 65 20 67 69 76 65 6e 20 | done are given | 00004ae0 61 20 66 69 78 65 64 0a 76 65 6c 6f 63 69 74 79 |a fixed.velocity| 00004af0 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 7a |, which can be z| 00004b00 65 72 6f 2e 20 20 54 68 65 20 66 69 72 73 74 20 |ero. The first | 00004b10 74 68 72 65 65 20 70 61 72 61 6d 65 74 65 72 73 |three parameters| 00004b20 20 61 72 65 20 74 68 65 20 70 6f 73 69 74 69 6f | are the positio| 00004b30 6e 20 6f 66 0a 74 68 65 20 63 6f 72 6e 65 72 20 |n of.the corner | 00004b40 6f 66 20 74 68 65 20 63 75 62 6f 69 64 2c 20 61 |of the cuboid, a| 00004b50 6e 64 20 74 68 65 20 6e 65 78 74 20 74 68 72 65 |nd the next thre| 00004b60 65 20 61 72 65 20 69 74 73 20 65 78 74 65 6e 74 |e are its extent| 00004b70 20 69 6e 20 74 68 65 20 78 2c 20 79 20 61 6e 64 | in the x, y and| 00004b80 0a 7a 20 64 69 72 65 63 74 69 6f 6e 73 2e 20 20 |.z directions. | 00004b90 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 |In other words, | 00004ba0 74 68 65 20 63 75 62 6f 69 64 20 67 6f 65 73 20 |the cuboid goes | 00004bb0 66 72 6f 6d 20 3c 62 6f 78 5f 78 3e 20 74 6f 0a |from <box_x> to.| 00004bc0 3c 62 6f 78 5f 78 3e 2b 3c 62 6f 78 5f 77 3e 20 |<box_x>+<box_w> | 00004bd0 69 6e 20 74 68 65 20 78 20 64 69 72 65 63 74 69 |in the x directi| 00004be0 6f 6e 2c 20 66 72 6f 6d 20 3c 62 6f 78 5f 79 3e |on, from <box_y>| 00004bf0 20 74 6f 20 3c 62 6f 78 5f 79 3e 2b 3c 62 6f 78 | to <box_y>+<box| 00004c00 5f 64 3e 20 69 6e 20 74 68 65 20 79 0a 64 69 72 |_d> in the y.dir| 00004c10 65 63 74 69 6f 6e 2c 20 61 6e 64 20 66 72 6f 6d |ection, and from| 00004c20 20 3c 62 6f 78 5f 7a 3e 20 74 6f 20 3c 62 6f 78 | <box_z> to <box| 00004c30 5f 7a 3e 2b 3c 62 6f 78 5f 68 3e 20 69 6e 20 74 |_z>+<box_h> in t| 00004c40 68 65 20 7a 20 64 69 72 65 63 74 69 6f 6e 2e 20 |he z direction. | 00004c50 20 54 68 65 20 6c 61 73 74 0a 74 68 72 65 65 20 | The last.three | 00004c60 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 74 |parameters are t| 00004c70 68 65 20 76 65 6c 6f 63 69 74 79 20 63 6f 6d 70 |he velocity comp| 00004c80 6f 6e 65 6e 74 73 20 69 6e 20 74 68 65 20 74 68 |onents in the th| 00004c90 72 65 65 20 64 69 72 65 63 74 69 6f 6e 73 2e 0a |ree directions..| 00004ca0 20 20 20 20 20 20 20 20 59 6f 75 20 63 61 6e 20 | You can | 00004cb0 68 61 76 65 20 61 6e 79 20 6e 75 6d 62 65 72 20 |have any number | 00004cc0 6f 66 20 22 66 69 78 5f 76 65 6c 22 20 63 6f 6d |of "fix_vel" com| 00004cd0 6d 61 6e 64 73 20 69 6e 20 61 20 63 72 65 61 74 |mands in a creat| 00004ce0 65 20 62 6c 6f 63 6b 2c 20 62 75 74 0a 79 6f 75 |e block, but.you| 00004cf0 20 63 61 6e 20 6f 6e 6c 79 20 68 61 76 65 20 61 | can only have a| 00004d00 20 6d 61 78 69 6d 75 6d 20 6f 66 20 36 33 20 64 | maximum of 63 d| 00004d10 69 66 66 65 72 65 6e 74 20 76 65 6c 6f 63 69 74 |ifferent velocit| 00004d20 69 65 73 20 75 73 65 64 20 62 79 20 22 66 69 78 |ies used by "fix| 00004d30 5f 76 65 6c 22 0a 63 6f 6d 6d 61 6e 64 73 20 69 |_vel".commands i| 00004d40 6e 20 61 6e 20 61 6e 69 6d 61 74 69 6f 6e 20 73 |n an animation s| 00004d50 63 72 69 70 74 2e 0a 0a 54 48 45 20 50 55 4c 4c |cript...THE PULL| 00004d60 20 43 4f 4d 4d 41 4e 44 0a 20 20 20 20 20 20 20 | COMMAND. | 00004d70 20 54 68 65 20 22 70 75 6c 6c 22 20 63 6f 6d 6d | The "pull" comm| 00004d80 61 6e 64 20 69 73 20 72 61 74 68 65 72 20 6c 6f |and is rather lo| 00004d90 77 2d 6c 65 76 65 6c 3a 20 69 74 20 6e 65 65 64 |w-level: it need| 00004da0 73 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 |s to refer to th| 00004db0 65 0a 6e 75 6d 62 65 72 69 6e 67 20 6f 66 20 74 |e.numbering of t| 00004dc0 68 65 20 70 6f 69 6e 74 73 20 69 6e 20 61 6e 20 |he points in an | 00004dd0 6f 62 6a 65 63 74 2e 20 20 54 68 65 20 66 69 72 |object. The fir| 00004de0 73 74 20 74 68 72 65 65 20 70 61 72 61 6d 65 74 |st three paramet| 00004df0 65 72 73 20 61 72 65 20 6c 69 6b 65 20 61 0a 46 |ers are like a.F| 00004e00 4f 52 2d 4e 45 58 54 20 6c 6f 6f 70 20 77 68 69 |OR-NEXT loop whi| 00004e10 63 68 20 64 65 66 69 6e 65 73 20 61 20 73 65 74 |ch defines a set| 00004e20 20 6f 66 20 70 6f 69 6e 74 73 2c 20 61 6e 64 20 | of points, and | 00004e30 74 68 65 73 65 20 70 6f 69 6e 74 73 20 61 72 65 |these points are| 00004e40 20 67 69 76 65 6e 20 61 0a 66 69 78 65 64 20 76 | given a.fixed v| 00004e50 65 6c 6f 63 69 74 79 20 67 69 76 65 6e 20 62 79 |elocity given by| 00004e60 20 74 68 65 20 6c 61 73 74 20 74 68 72 65 65 20 | the last three | 00004e70 70 61 72 61 6d 65 74 65 72 73 2e 20 20 54 68 69 |parameters. Thi| 00004e80 73 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6f 6e 6c |s command is onl| 00004e90 79 0a 70 72 65 73 65 6e 74 20 66 6f 72 20 64 6f |y.present for do| 00004ea0 77 6e 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 |wnwards compatib| 00004eb0 69 6c 69 74 79 3a 20 79 6f 75 20 73 68 6f 75 6c |ility: you shoul| 00004ec0 64 20 6e 6f 77 20 75 73 65 20 22 66 69 78 5f 76 |d now use "fix_v| 00004ed0 65 6c 22 20 69 6e 73 74 65 61 64 2e 20 0a 59 6f |el" instead. .Yo| 00004ee0 75 20 63 61 6e 20 6e 6f 77 20 68 61 76 65 20 61 |u can now have a| 00004ef0 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20 22 70 75 |ny number of "pu| 00004f00 6c 6c 22 20 63 6f 6d 6d 61 6e 64 73 20 66 6f 72 |ll" commands for| 00004f10 20 61 6e 20 6f 62 6a 65 63 74 2c 20 62 75 74 20 | an object, but | 00004f20 6f 6e 6c 79 20 36 33 0a 64 69 66 66 65 72 65 6e |only 63.differen| 00004f30 74 20 70 75 6c 6c 20 76 65 6c 6f 63 69 74 69 65 |t pull velocitie| 00004f40 73 20 69 6e 20 61 20 73 63 72 69 70 74 2e 0a 0a |s in a script...| 00004f50 54 48 45 20 52 45 50 45 4c 20 43 4f 4d 4d 41 4e |THE REPEL COMMAN| 00004f60 44 0a 20 20 20 20 20 20 20 20 54 68 65 20 22 72 |D. The "r| 00004f70 65 70 65 6c 22 20 63 6f 6d 6d 61 6e 64 20 63 61 |epel" command ca| 00004f80 75 73 65 73 20 73 6f 6c 69 64 20 6f 62 6a 65 63 |uses solid objec| 00004f90 74 73 20 74 6f 20 72 65 70 65 6c 20 65 61 63 68 |ts to repel each| 00004fa0 20 6f 74 68 65 72 20 77 68 65 6e 0a 74 68 65 79 | other when.they| 00004fb0 20 67 65 74 20 63 6c 6f 73 65 2e 20 20 54 68 65 | get close. The| 00004fc0 20 70 61 72 61 6d 65 74 65 72 20 73 70 65 63 69 | parameter speci| 00004fd0 66 69 65 73 20 74 68 65 20 73 74 72 65 6e 67 74 |fies the strengt| 00004fe0 68 20 6f 66 20 74 68 65 20 72 65 70 75 6c 73 69 |h of the repulsi| 00004ff0 6f 6e 2e 20 0a 54 68 69 73 20 63 6f 6d 6d 61 6e |on. .This comman| 00005000 64 20 77 6f 72 6b 73 20 62 79 20 6d 61 6b 69 6e |d works by makin| 00005010 67 20 74 68 65 20 73 75 72 66 61 63 65 20 70 6f |g the surface po| 00005020 69 6e 74 73 20 6f 66 20 73 6f 6c 69 64 73 20 72 |ints of solids r| 00005030 65 70 65 6c 20 65 61 63 68 20 6f 74 68 65 72 0a |epel each other.| 00005040 77 68 65 6e 20 74 68 65 79 20 67 65 74 20 77 69 |when they get wi| 00005050 74 68 69 6e 20 61 20 63 65 72 74 61 69 6e 20 72 |thin a certain r| 00005060 61 6e 67 65 2e 20 20 46 6f 72 20 74 77 6f 20 73 |ange. For two s| 00005070 6f 6c 69 64 73 20 74 6f 20 69 6e 74 65 72 61 63 |olids to interac| 00005080 74 2c 20 74 68 65 79 20 6d 75 73 74 0a 62 6f 74 |t, they must.bot| 00005090 68 20 68 61 76 65 20 61 20 22 72 65 70 65 6c 22 |h have a "repel"| 000050a0 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 74 68 65 69 | command in thei| 000050b0 72 20 63 72 65 61 74 65 20 62 6c 6f 63 6b 2e 0a |r create block..| 000050c0 20 20 20 20 20 20 20 20 54 68 65 20 72 61 6e 67 | The rang| 000050d0 65 20 6f 66 20 74 68 65 20 72 65 70 75 6c 73 69 |e of the repulsi| 000050e0 76 65 20 66 6f 72 63 65 20 69 73 20 73 65 74 20 |ve force is set | 000050f0 74 6f 20 62 65 20 74 77 69 63 65 20 74 68 65 20 |to be twice the | 00005100 73 70 61 63 69 6e 67 20 6f 66 0a 74 68 65 20 70 |spacing of.the p| 00005110 6f 69 6e 74 73 2c 20 73 6f 20 74 68 61 74 20 74 |oints, so that t| 00005120 68 65 20 66 6f 72 63 65 20 69 73 20 6e 6f 74 20 |he force is not | 00005130 74 6f 6f 20 73 6d 61 6c 6c 20 69 6e 20 74 68 65 |too small in the| 00005140 20 67 61 70 73 20 62 65 74 77 65 65 6e 20 74 68 | gaps between th| 00005150 65 0a 70 6f 69 6e 74 73 2e 20 20 54 68 65 20 75 |e.points. The u| 00005160 6e 66 6f 72 74 75 6e 61 74 65 20 73 69 64 65 20 |nfortunate side | 00005170 65 66 66 65 63 74 20 6f 66 20 74 68 69 73 20 69 |effect of this i| 00005180 73 20 74 68 61 74 20 6f 62 6a 65 63 74 73 20 73 |s that objects s| 00005190 74 61 72 74 20 72 65 70 65 6c 6c 69 6e 67 0a 65 |tart repelling.e| 000051a0 61 63 68 20 6f 74 68 65 72 20 62 65 66 6f 72 65 |ach other before| 000051b0 20 74 68 65 79 20 6d 65 65 74 2e 20 20 54 68 65 | they meet. The| 000051c0 20 6f 6e 6c 79 20 77 61 79 20 72 6f 75 6e 64 20 | only way round | 000051d0 74 68 69 73 20 69 73 20 74 6f 20 72 65 64 75 63 |this is to reduc| 000051e0 65 20 74 68 65 0a 72 65 70 75 6c 73 69 6f 6e 20 |e the.repulsion | 000051f0 75 6e 74 69 6c 20 74 68 65 20 6f 62 6a 65 63 74 |until the object| 00005200 73 20 6a 75 73 74 20 74 6f 75 63 68 20 62 65 66 |s just touch bef| 00005210 6f 72 65 20 73 65 70 61 72 61 74 69 6e 67 20 61 |ore separating a| 00005220 67 61 69 6e 2c 20 62 75 74 20 74 68 65 0a 76 61 |gain, but the.va| 00005230 6c 75 65 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 |lue you need to | 00005240 6d 61 6b 65 20 74 68 69 73 20 68 61 70 70 65 6e |make this happen| 00005250 20 77 69 6c 6c 20 64 65 70 65 6e 64 20 6f 6e 20 | will depend on | 00005260 68 6f 77 20 66 61 73 74 20 74 68 65 20 6f 62 6a |how fast the obj| 00005270 65 63 74 73 20 61 72 65 0a 6d 6f 76 69 6e 67 2c |ects are.moving,| 00005280 20 68 6f 77 20 68 65 61 76 79 20 74 68 65 79 20 | how heavy they | 00005290 61 72 65 2c 20 65 74 63 2e 20 20 59 6f 75 20 63 |are, etc. You c| 000052a0 61 6e 20 72 65 64 75 63 65 20 74 68 65 20 72 61 |an reduce the ra| 000052b0 6e 67 65 20 62 79 20 75 73 69 6e 67 20 6d 6f 72 |nge by using mor| 000052c0 65 0a 70 6f 69 6e 74 73 20 6f 6e 20 74 68 65 20 |e.points on the | 000052d0 73 75 72 66 61 63 65 73 20 6f 66 20 74 68 65 20 |surfaces of the | 000052e0 6f 62 6a 65 63 74 73 2c 20 62 75 74 20 74 68 69 |objects, but thi| 000052f0 73 20 6d 65 61 6e 73 20 74 68 65 72 65 20 61 72 |s means there ar| 00005300 65 20 6d 6f 72 65 20 70 6f 69 6e 74 73 0a 77 68 |e more points.wh| 00005310 69 63 68 20 68 61 76 65 20 74 6f 20 62 65 20 63 |ich have to be c| 00005320 6f 6d 70 61 72 65 64 20 77 69 74 68 20 65 61 63 |ompared with eac| 00005330 68 20 6f 74 68 65 72 2c 20 77 68 69 63 68 20 73 |h other, which s| 00005340 6c 6f 77 73 20 74 68 69 6e 67 73 20 64 6f 77 6e |lows things down| 00005350 2e 20 20 41 0a 63 6f 6d 70 72 6f 6d 69 73 65 2c |. A.compromise,| 00005360 20 77 68 69 63 68 20 69 73 20 75 73 65 64 20 69 | which is used i| 00005370 6e 20 74 68 65 20 61 6e 69 6d 61 74 69 6f 6e 20 |n the animation | 00005380 22 72 65 70 65 6c 2e 42 61 6c 6c 42 6c 6f 63 6b |"repel.BallBlock| 00005390 73 22 2c 20 69 73 20 74 6f 20 68 61 76 65 0a 6f |s", is to have.o| 000053a0 6e 65 20 6f 62 6a 65 63 74 20 77 69 74 68 20 63 |ne object with c| 000053b0 6c 6f 73 65 6c 79 20 73 70 61 63 65 64 20 70 6f |losely spaced po| 000053c0 69 6e 74 73 2c 20 61 6e 64 20 6f 6e 65 20 77 69 |ints, and one wi| 000053d0 74 68 20 77 69 64 65 6c 79 20 73 65 70 61 72 61 |th widely separa| 000053e0 74 65 64 20 70 6f 69 6e 74 73 2e 0a 20 54 68 65 |ted points.. The| 000053f0 20 72 65 70 75 6c 73 69 6f 6e 20 66 6f 72 63 65 | repulsion force| 00005400 20 72 61 6e 67 65 20 69 73 20 74 77 69 63 65 20 | range is twice | 00005410 74 68 65 20 73 68 6f 72 74 65 72 20 70 6f 69 6e |the shorter poin| 00005420 74 20 73 70 61 63 69 6e 67 2c 20 61 6e 64 20 74 |t spacing, and t| 00005430 68 65 0a 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6d |he.number of com| 00005440 70 61 72 69 73 6f 6e 73 20 69 73 20 74 68 65 20 |parisons is the | 00005450 70 72 6f 64 75 63 74 20 6f 66 20 28 72 65 70 75 |product of (repu| 00005460 6c 73 69 76 65 20 70 6f 69 6e 74 73 20 6f 6e 20 |lsive points on | 00005470 66 69 72 73 74 20 6f 62 6a 65 63 74 29 0a 61 6e |first object).an| 00005480 64 20 28 72 65 70 75 6c 73 69 76 65 20 70 6f 69 |d (repulsive poi| 00005490 6e 74 73 20 6f 6e 20 73 65 63 6f 6e 64 20 6f 62 |nts on second ob| 000054a0 6a 65 63 74 29 2c 20 73 6f 20 74 68 69 73 20 67 |ject), so this g| 000054b0 69 76 65 73 20 74 68 65 20 62 65 73 74 20 6f 66 |ives the best of| 000054c0 20 62 6f 74 68 0a 77 6f 72 6c 64 73 2e 0a 20 20 | both.worlds.. | 000054d0 20 20 20 20 20 20 54 68 65 20 73 74 72 65 6e 67 | The streng| 000054e0 74 68 20 6f 66 20 74 68 65 20 72 65 70 75 6c 73 |th of the repuls| 000054f0 69 76 65 20 66 6f 72 63 65 20 75 73 65 64 20 77 |ive force used w| 00005500 68 65 6e 20 74 77 6f 20 6f 62 6a 65 63 74 73 20 |hen two objects | 00005510 6d 65 65 74 20 69 73 0a 74 68 65 20 70 72 6f 64 |meet is.the prod| 00005520 75 63 74 20 6f 66 20 74 68 65 20 22 72 65 70 65 |uct of the "repe| 00005530 6c 22 20 70 61 72 61 6d 65 74 65 72 20 67 69 76 |l" parameter giv| 00005540 65 6e 20 66 6f 72 20 74 68 65 20 74 77 6f 20 6f |en for the two o| 00005550 62 6a 65 63 74 73 2e 20 0a 20 20 20 20 20 20 20 |bjects. . | 00005560 20 41 73 20 77 65 6c 6c 20 61 73 20 6d 61 6b 69 | As well as maki| 00005570 6e 67 20 74 68 65 20 73 75 72 66 61 63 65 20 70 |ng the surface p| 00005580 6f 69 6e 74 73 20 72 65 70 75 6c 73 69 76 65 2c |oints repulsive,| 00005590 20 74 68 65 20 70 72 6f 67 72 61 6d 20 61 6c 73 | the program als| 000055a0 6f 0a 6d 61 6b 65 73 20 74 68 65 20 22 73 65 63 |o.makes the "sec| 000055b0 6f 6e 64 20 6c 61 79 65 72 20 69 6e 22 20 70 6f |ond layer in" po| 000055c0 69 6e 74 73 20 72 65 70 75 6c 73 69 76 65 2c 20 |ints repulsive, | 000055d0 77 69 74 68 20 66 6f 75 72 20 74 69 6d 65 73 20 |with four times | 000055e0 74 68 65 20 72 65 70 75 6c 73 69 6f 6e 0a 73 74 |the repulsion.st| 000055f0 72 65 6e 67 74 68 2e 20 20 54 68 69 73 20 69 73 |rength. This is| 00005600 20 77 68 79 20 74 68 65 72 65 20 69 73 20 61 20 | why there is a | 00005610 70 61 75 73 65 20 64 75 72 69 6e 67 20 74 68 65 |pause during the| 00005620 20 72 65 61 64 69 6e 67 20 6f 66 20 74 68 65 20 | reading of the | 00005630 73 63 72 69 70 74 0a 77 68 65 6e 20 61 20 22 72 |script.when a "r| 00005640 65 70 65 6c 22 20 63 6f 6d 6d 61 6e 64 20 69 73 |epel" command is| 00005650 20 66 6f 75 6e 64 3a 20 74 68 65 20 70 72 6f 67 | found: the prog| 00005660 72 61 6d 20 69 73 20 77 6f 72 6b 69 6e 67 20 6f |ram is working o| 00005670 75 74 20 77 68 69 63 68 20 70 6f 69 6e 74 73 20 |ut which points | 00005680 61 72 65 0a 69 6e 20 74 68 65 20 73 65 63 6f 6e |are.in the secon| 00005690 64 20 6c 61 79 65 72 2e 20 20 54 68 69 73 20 69 |d layer. This i| 000056a0 73 20 64 6f 6e 65 20 73 6f 20 74 68 61 74 20 6f |s done so that o| 000056b0 62 6a 65 63 74 73 20 77 69 6c 6c 20 63 6f 6e 74 |bjects will cont| 000056c0 69 6e 75 65 20 74 6f 20 72 65 70 65 6c 0a 65 76 |inue to repel.ev| 000056d0 65 6e 20 69 66 20 74 68 65 79 20 70 61 73 73 20 |en if they pass | 000056e0 69 6e 74 6f 20 65 61 63 68 20 6f 74 68 65 72 20 |into each other | 000056f0 73 6c 69 67 68 74 6c 79 2e 0a 0a 0a 54 48 45 20 |slightly....THE | 00005700 43 55 42 4f 49 44 20 4f 42 4a 45 43 54 0a 0a 20 |CUBOID OBJECT.. | 00005710 20 20 20 20 20 20 20 54 6f 20 63 72 65 61 74 65 | To create| 00005720 20 61 20 63 75 62 6f 69 64 2c 20 75 73 65 20 74 | a cuboid, use t| 00005730 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 |he following par| 00005740 61 6d 65 74 65 72 73 20 69 6e 20 74 68 65 20 22 |ameters in the "| 00005750 63 72 65 61 74 65 22 0a 62 6c 6f 63 6b 3a 0a 0a |create".block:..| 00005760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00005770 74 79 70 65 20 63 75 62 6f 69 64 0a 20 20 20 20 |type cuboid. | 00005780 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 | size| 00005790 20 3c 78 5f 73 69 7a 65 3e 2c 3c 79 5f 73 69 7a | <x_size>,<y_siz| 000057a0 65 3e 2c 3c 7a 5f 73 69 7a 65 3e 0a 20 20 20 20 |e>,<z_size>. | 000057b0 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 69 6e | poin| 000057c0 74 73 20 3c 78 5f 70 74 73 3e 2c 3c 79 5f 70 74 |ts <x_pts>,<y_pt| 000057d0 73 3e 2c 3c 7a 5f 70 74 73 3e 0a 0a 20 20 20 20 |s>,<z_pts>.. | 000057e0 20 20 20 20 54 68 65 20 6d 65 61 6e 69 6e 67 20 | The meaning | 000057f0 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 |of the parameter| 00005800 73 20 69 73 20 68 6f 70 65 66 75 6c 6c 79 20 6f |s is hopefully o| 00005810 62 76 69 6f 75 73 2e 20 20 49 74 20 69 73 20 61 |bvious. It is a| 00005820 20 67 6f 6f 64 0a 69 64 65 61 20 74 6f 20 6b 65 | good.idea to ke| 00005830 65 70 20 74 68 65 20 73 65 70 61 72 61 74 69 6f |ep the separatio| 00005840 6e 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 73 20 |n of the points | 00005850 74 68 65 20 73 61 6d 65 20 69 6e 20 61 6c 6c 20 |the same in all | 00005860 74 68 72 65 65 20 64 69 72 65 63 74 69 6f 6e 73 |three directions| 00005870 2c 0a 69 65 2e 20 3c 73 69 7a 65 3e 2f 3c 70 74 |,.ie. <size>/<pt| 00005880 73 3e 20 73 68 6f 75 6c 64 20 62 65 20 73 69 6d |s> should be sim| 00005890 69 6c 61 72 20 66 6f 72 20 78 2c 20 79 20 61 6e |ilar for x, y an| 000058a0 64 20 7a 2e 20 20 54 68 65 20 63 75 62 6f 69 64 |d z. The cuboid| 000058b0 20 69 73 20 63 72 65 61 74 65 64 0a 69 6e 69 74 | is created.init| 000058c0 69 61 6c 6c 79 20 77 69 74 68 20 6f 6e 65 20 63 |ially with one c| 000058d0 6f 72 6e 65 72 20 61 74 20 74 68 65 20 6f 72 69 |orner at the ori| 000058e0 67 69 6e 2c 20 77 69 74 68 20 74 68 65 20 72 65 |gin, with the re| 000058f0 73 74 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 |st of the object| 00005900 20 69 6e 20 74 68 65 0a 2b 78 2c 20 2b 79 2c 20 | in the.+x, +y, | 00005910 2b 7a 20 6f 63 74 61 6e 74 2e 0a 0a 0a 54 48 45 |+z octant....THE| 00005920 20 43 55 42 45 20 4f 42 4a 45 43 54 0a 0a 20 20 | CUBE OBJECT.. | 00005930 20 20 20 20 20 20 54 68 65 20 73 65 74 75 70 20 | The setup | 00005940 66 6f 72 20 61 20 63 75 62 65 20 69 73 3a 0a 0a |for a cube is:..| 00005950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00005960 74 79 70 65 20 63 75 62 65 0a 20 20 20 20 20 20 |type cube. | 00005970 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 20 3c | size <| 00005980 73 69 7a 65 3e 0a 20 20 20 20 20 20 20 20 20 20 |size>. | 00005990 20 20 20 20 20 20 70 6f 69 6e 74 73 20 3c 70 74 | points <pt| 000059a0 73 3e 0a 0a 20 20 20 20 20 20 20 20 54 68 69 73 |s>.. This| 000059b0 20 69 73 20 62 61 73 69 63 61 6c 6c 79 20 74 68 | is basically th| 000059c0 65 20 73 61 6d 65 20 61 73 20 61 20 63 75 62 6f |e same as a cubo| 000059d0 69 64 2c 20 65 78 63 65 70 74 20 74 68 65 20 70 |id, except the p| 000059e0 61 72 61 6d 65 74 65 72 73 20 66 6f 72 0a 74 68 |arameters for.th| 000059f0 65 20 74 68 72 65 65 20 64 69 72 65 63 74 69 6f |e three directio| 00005a00 6e 73 20 61 72 65 20 61 6c 6c 20 73 65 74 20 74 |ns are all set t| 00005a10 6f 20 62 65 20 65 71 75 61 6c 2c 20 61 6e 64 20 |o be equal, and | 00005a20 74 68 65 20 63 75 62 65 20 69 73 20 63 72 65 61 |the cube is crea| 00005a30 74 65 64 0a 63 65 6e 74 72 65 64 20 6f 6e 20 74 |ted.centred on t| 00005a40 68 65 20 6f 72 69 67 69 6e 2e 0a 0a 0a 54 48 45 |he origin....THE| 00005a50 20 53 4f 4c 49 44 20 53 50 48 45 52 45 20 4f 42 | SOLID SPHERE OB| 00005a60 4a 45 43 54 0a 0a 20 20 20 20 20 20 20 20 20 20 |JECT.. | 00005a70 20 20 20 20 20 20 74 79 70 65 20 73 6f 6c 69 64 | type solid| 00005a80 5f 73 70 68 65 72 65 0a 20 20 20 20 20 20 20 20 |_sphere. | 00005a90 20 20 20 20 20 20 20 20 73 69 7a 65 20 3c 72 61 | size <ra| 00005aa0 64 69 75 73 3e 0a 20 20 20 20 20 20 20 20 20 20 |dius>. | 00005ab0 20 20 20 20 20 20 70 6f 69 6e 74 73 20 3c 70 74 | points <pt| 00005ac0 73 3e 2c 3c 74 68 69 63 6b 3e 0a 0a 20 20 20 20 |s>,<thick>.. | 00005ad0 20 20 20 20 54 68 65 20 22 73 70 68 65 72 65 22 | The "sphere"| 00005ae0 20 6f 62 6a 65 63 74 20 6a 75 73 74 20 63 72 65 | object just cre| 00005af0 61 74 65 73 20 74 68 65 20 6f 75 74 65 72 20 73 |ates the outer s| 00005b00 68 65 6c 6c 20 6f 66 20 61 20 73 70 68 65 72 65 |hell of a sphere| 00005b10 2e 20 20 54 68 65 0a 22 73 6f 6c 69 64 5f 73 70 |. The."solid_sp| 00005b20 68 65 72 65 22 20 6f 62 6a 65 63 74 20 6d 61 6b |here" object mak| 00005b30 65 73 20 74 68 69 73 20 6d 6f 72 65 20 73 6f 6c |es this more sol| 00005b40 69 64 20 62 79 20 61 64 64 69 6e 67 20 63 6f 6e |id by adding con| 00005b50 63 65 6e 74 72 69 63 20 73 70 68 65 72 65 73 20 |centric spheres | 00005b60 6f 66 0a 70 6f 69 6e 74 73 20 69 6e 73 69 64 65 |of.points inside| 00005b70 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 70 | the original sp| 00005b80 68 65 72 65 2e 20 20 54 68 65 20 3c 72 61 64 69 |here. The <radi| 00005b90 75 73 3e 20 61 6e 64 20 3c 70 74 73 3e 20 70 61 |us> and <pts> pa| 00005ba0 72 61 6d 65 74 65 72 73 20 61 72 65 0a 74 68 65 |rameters are.the| 00005bb0 20 73 61 6d 65 20 61 73 20 61 73 20 66 6f 72 20 | same as as for | 00005bc0 61 20 73 70 68 65 72 65 2c 20 61 6e 64 20 74 68 |a sphere, and th| 00005bd0 65 20 3c 74 68 69 63 6b 3e 20 70 61 72 61 6d 65 |e <thick> parame| 00005be0 74 65 72 20 73 70 65 63 69 66 69 65 73 20 68 6f |ter specifies ho| 00005bf0 77 20 6d 61 6e 79 0a 63 6f 6e 63 65 6e 74 72 69 |w many.concentri| 00005c00 63 20 73 70 68 65 72 65 73 20 61 72 65 20 6d 61 |c spheres are ma| 00005c10 64 65 20 28 69 6e 63 6c 75 64 69 6e 67 20 74 68 |de (including th| 00005c20 65 20 6f 75 74 65 72 20 6f 6e 65 29 2e 20 20 49 |e outer one). I| 00005c30 66 20 79 6f 75 20 73 70 65 63 69 66 79 20 6d 6f |f you specify mo| 00005c40 72 65 0a 74 68 61 6e 20 77 69 6c 6c 20 66 69 74 |re.than will fit| 00005c50 2c 20 74 68 65 20 70 72 6f 67 72 61 6d 20 77 69 |, the program wi| 00005c60 6c 6c 20 70 75 74 20 69 6e 20 61 73 20 6d 61 6e |ll put in as man| 00005c70 79 20 61 73 20 69 74 20 63 61 6e 2e 20 20 54 68 |y as it can. Th| 00005c80 65 20 64 69 66 66 65 72 65 6e 63 65 20 69 6e 0a |e difference in.| 00005c90 74 68 65 20 72 61 64 69 69 20 6f 66 20 74 68 65 |the radii of the| 00005ca0 20 63 6f 6e 63 65 6e 74 72 69 63 20 73 70 68 65 | concentric sphe| 00005cb0 72 65 73 20 69 73 20 50 49 2a 3c 72 61 64 69 75 |res is PI*<radiu| 00005cc0 73 3e 2f 3c 70 74 73 3e 2e 0a 20 20 20 20 20 20 |s>/<pts>.. | 00005cd0 20 20 0a 0a 54 48 45 20 54 55 42 45 20 4f 42 4a | ..THE TUBE OBJ| 00005ce0 45 43 54 0a 0a 20 20 20 20 20 20 20 20 20 20 20 |ECT.. | 00005cf0 20 20 20 20 20 74 79 70 65 20 74 75 62 65 0a 20 | type tube. | 00005d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 | s| 00005d10 69 7a 65 20 3c 6c 65 6e 67 74 68 3e 2c 3c 72 61 |ize <length>,<ra| 00005d20 64 69 75 73 3e 2c 3c 74 68 69 63 6b 6e 65 73 73 |dius>,<thickness| 00005d30 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |>. | 00005d40 20 20 70 6f 69 6e 74 73 20 3c 6c 65 6e 67 74 68 | points <length| 00005d50 5f 70 74 73 3e 2c 3c 63 69 72 63 5f 70 6f 69 6e |_pts>,<circ_poin| 00005d60 74 73 3e 2c 3c 74 68 69 63 6b 5f 70 6f 69 6e 74 |ts>,<thick_point| 00005d70 73 3e 0a 0a 20 20 20 20 20 20 20 20 54 68 65 20 |s>.. The | 00005d80 3c 6c 65 6e 67 74 68 3e 20 70 61 72 61 6d 65 74 |<length> paramet| 00005d90 65 72 20 73 65 74 73 20 74 68 65 20 6c 65 6e 67 |er sets the leng| 00005da0 74 68 20 6f 66 20 74 68 65 20 74 75 62 65 2e 20 |th of the tube. | 00005db0 20 3c 52 61 64 69 75 73 3e 20 73 65 74 73 0a 74 | <Radius> sets.t| 00005dc0 68 65 20 64 69 73 74 61 6e 63 65 20 66 72 6f 6d |he distance from| 00005dd0 20 74 68 65 20 61 78 69 73 20 6f 66 20 74 68 65 | the axis of the| 00005de0 20 74 75 62 65 20 74 6f 20 74 68 65 20 63 65 6e | tube to the cen| 00005df0 74 72 65 20 6f 66 20 69 74 73 20 77 61 6c 6c 73 |tre of its walls| 00005e00 2c 20 61 6e 64 0a 3c 74 68 69 63 6b 6e 65 73 73 |, and.<thickness| 00005e10 3e 20 73 65 74 73 20 74 68 65 20 77 61 6c 6c 20 |> sets the wall | 00005e20 74 68 69 63 6b 6e 65 73 73 2e 0a 20 20 20 20 20 |thickness.. | 00005e30 20 20 20 54 68 65 20 74 68 72 65 65 20 70 6f 69 | The three poi| 00005e40 6e 74 73 20 70 61 72 61 6d 65 74 65 72 73 20 73 |nts parameters s| 00005e50 65 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 |et the number of| 00005e60 20 70 6f 69 6e 74 73 20 61 6c 6f 6e 67 20 74 68 | points along th| 00005e70 65 0a 6c 65 6e 67 74 68 2c 20 61 72 6f 75 6e 64 |e.length, around| 00005e80 20 74 68 65 20 63 69 72 63 75 6d 66 65 72 65 6e | the circumferen| 00005e90 63 65 20 61 6e 64 20 61 63 72 6f 73 73 20 74 68 |ce and across th| 00005ea0 65 20 77 61 6c 6c 20 72 65 73 70 65 63 74 69 76 |e wall respectiv| 00005eb0 65 6c 79 2e 0a 20 20 20 20 20 20 20 20 41 73 20 |ely.. As | 00005ec0 49 20 6d 65 6e 74 69 6f 6e 65 64 20 65 61 72 6c |I mentioned earl| 00005ed0 69 65 72 2c 20 69 74 20 69 73 20 61 20 67 6f 6f |ier, it is a goo| 00005ee0 64 20 69 64 65 61 20 74 6f 20 6b 65 65 70 20 74 |d idea to keep t| 00005ef0 68 65 0a 22 6e 65 61 72 65 73 74 2d 6e 65 69 67 |he."nearest-neig| 00005f00 68 62 6f 75 72 22 20 64 69 73 74 61 6e 63 65 20 |hbour" distance | 00005f10 66 61 69 72 6c 79 20 63 6f 6e 73 74 61 6e 74 2c |fairly constant,| 00005f20 20 73 6f 20 61 73 20 61 20 72 6f 75 67 68 20 67 | so as a rough g| 00005f30 75 69 64 65 2c 20 74 72 79 20 74 6f 0a 6b 65 65 |uide, try to.kee| 00005f40 70 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 |p:. | 00005f50 20 20 20 3c 6c 65 6e 67 74 68 5f 70 74 73 3e 20 | <length_pts> | 00005f60 20 20 3c 63 69 72 63 5f 70 6f 69 6e 74 73 3e 20 | <circ_points> | 00005f70 20 20 3c 74 68 69 63 6b 5f 70 6f 69 6e 74 73 3e | <thick_points>| 00005f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00005f90 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 3d 20 | ------------ = | 00005fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 3d 20 |------------- = | 00005fb0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 |--------------. | 00005fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00005fd0 20 3c 6c 65 6e 67 74 68 3e 20 20 20 20 20 32 2a | <length> 2*| 00005fe0 50 49 2a 3c 72 61 64 69 75 73 3e 20 20 20 20 3c |PI*<radius> <| 00005ff0 74 68 69 63 6b 6e 65 73 73 3e 0a 20 20 20 20 20 |thickness>. | 00006000 20 20 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 | and. | 00006010 20 20 20 20 20 20 20 3c 72 61 64 69 75 73 3e 20 | <radius> | 00006020 3e 20 32 2a 3c 74 68 69 63 6b 6e 65 73 73 3e 0a |> 2*<thickness>.| 00006030 20 20 20 20 20 20 20 20 54 68 65 73 65 20 61 72 | These ar| 00006040 65 20 6f 6e 6c 79 20 61 70 70 72 6f 78 69 6d 61 |e only approxima| 00006050 74 65 20 72 75 6c 65 73 2c 20 73 6f 20 66 65 65 |te rules, so fee| 00006060 6c 20 66 72 65 65 20 74 6f 20 74 72 79 20 74 68 |l free to try th| 00006070 69 6e 67 73 20 6f 75 74 20 61 6e 64 0a 73 65 65 |ings out and.see| 00006080 20 77 68 61 74 20 68 61 70 70 65 6e 73 2e 0a 0a | what happens...| 00006090 0a 43 4f 4d 50 4f 55 4e 44 20 4f 42 4a 45 43 54 |.COMPOUND OBJECT| 000060a0 53 0a 0a 20 20 20 20 20 20 20 20 43 6f 6d 70 6f |S.. Compo| 000060b0 75 6e 64 20 6f 62 6a 65 63 74 73 20 6c 65 74 20 |und objects let | 000060c0 79 6f 75 20 73 74 69 63 6b 20 74 6f 67 65 74 68 |you stick togeth| 000060d0 65 72 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 |er any number of| 000060e0 20 6f 74 68 65 72 20 73 6f 6c 69 64 73 0a 74 6f | other solids.to| 000060f0 20 63 72 65 61 74 65 20 61 20 6d 6f 72 65 20 63 | create a more c| 00006100 6f 6d 70 6c 65 78 20 6f 62 6a 65 63 74 2e 20 20 |omplex object. | 00006110 48 65 72 65 20 69 73 20 61 6e 20 65 78 61 6d 70 |Here is an examp| 00006120 6c 65 20 6f 66 20 68 6f 77 20 61 20 63 6f 6d 70 |le of how a comp| 00006130 6f 75 6e 64 0a 6f 62 6a 65 63 74 20 6d 69 67 68 |ound.object migh| 00006140 74 20 6c 6f 6f 6b 3a 0a 0a 20 20 20 20 20 20 20 |t look:.. | 00006150 20 20 20 20 20 20 20 20 20 63 72 65 61 74 65 20 | create | 00006160 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |{. | 00006170 20 20 20 74 79 70 65 20 63 6f 6d 70 6f 75 6e 64 | type compound| 00006180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00006190 20 20 70 61 72 74 20 7b 0a 20 20 20 20 20 20 20 | part {. | 000061a0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 20 | type | 000061b0 63 75 62 6f 69 64 0a 20 20 20 20 20 20 20 20 20 |cuboid. | 000061c0 20 20 20 20 20 20 20 20 20 70 6f 69 6e 74 73 20 | points | 000061d0 37 2c 33 2c 33 0a 20 20 20 20 20 20 20 20 20 20 |7,3,3. | 000061e0 20 20 20 20 20 20 20 20 73 69 7a 65 20 33 69 6e | size 3in| 000061f0 2c 31 69 6e 2c 31 69 6e 0a 20 20 20 20 20 20 20 |,1in,1in. | 00006200 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 | offse| 00006210 74 20 31 69 6e 2c 30 2c 30 0a 20 20 20 20 20 20 |t 1in,0,0. | 00006220 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 | }. | 00006230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 | pa| 00006240 72 74 20 7b 20 74 79 70 65 20 63 75 62 6f 69 64 |rt { type cuboid| 00006250 3a 70 6f 69 6e 74 73 20 33 2c 33 2c 31 31 3a 73 |:points 3,3,11:s| 00006260 69 7a 65 20 31 69 6e 2c 31 69 6e 2c 35 69 6e 20 |ize 1in,1in,5in | 00006270 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |}. | 00006280 20 20 20 70 61 72 74 20 7b 20 74 79 70 65 20 63 | part { type c| 00006290 75 62 6f 69 64 3a 70 6f 69 6e 74 73 20 33 2c 37 |uboid:points 3,7| 000062a0 2c 33 3a 73 69 7a 65 20 31 69 6e 2c 33 69 6e 2c |,3:size 1in,3in,| 000062b0 31 69 6e 3a 6f 66 66 73 65 74 0a 30 2c 31 69 6e |1in:offset.0,1in| 000062c0 2c 30 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 |,0 }. | 000062d0 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 | }.. | 000062e0 54 68 65 20 66 69 72 73 74 20 6c 69 6e 65 20 69 |The first line i| 000062f0 6e 20 74 68 65 20 22 63 72 65 61 74 65 22 20 62 |n the "create" b| 00006300 6c 6f 63 6b 20 69 73 20 22 74 79 70 65 20 63 6f |lock is "type co| 00006310 6d 70 6f 75 6e 64 22 2c 20 74 68 65 6e 20 74 68 |mpound", then th| 00006320 65 72 65 0a 69 73 20 61 20 6c 69 73 74 20 6f 66 |ere.is a list of| 00006330 20 22 70 61 72 74 22 20 62 6c 6f 63 6b 73 2e 20 | "part" blocks. | 00006340 20 45 61 63 68 20 6f 66 20 74 68 65 73 65 20 69 | Each of these i| 00006350 73 20 6d 75 63 68 20 6c 69 6b 65 20 61 20 22 63 |s much like a "c| 00006360 72 65 61 74 65 22 20 62 6c 6f 63 6b 20 28 69 74 |reate" block (it| 00006370 0a 68 61 73 20 74 79 70 65 2c 20 73 69 7a 65 20 |.has type, size | 00006380 61 6e 64 20 70 6f 69 6e 74 73 20 63 6f 6d 6d 61 |and points comma| 00006390 6e 64 73 29 2c 20 62 75 74 20 77 69 74 68 20 74 |nds), but with t| 000063a0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 64 69 66 |he following dif| 000063b0 66 65 72 65 6e 63 65 73 3a 0a 0a 31 20 20 20 20 |ferences:..1 | 000063c0 20 20 20 59 6f 75 20 63 61 6e 20 61 64 64 20 61 | You can add a| 000063d0 6e 20 22 6f 66 66 73 65 74 22 20 63 6f 6d 6d 61 |n "offset" comma| 000063e0 6e 64 20 61 74 20 74 68 65 20 65 6e 64 0a 32 20 |nd at the end.2 | 000063f0 20 20 20 20 20 20 59 6f 75 20 63 61 6e 6e 6f 74 | You cannot| 00006400 20 68 61 76 65 20 61 20 63 6f 6d 70 6f 75 6e 64 | have a compound| 00006410 20 74 79 70 65 20 6f 62 6a 65 63 74 20 61 73 20 | type object as | 00006420 61 20 70 61 72 74 21 0a 0a 20 20 20 20 20 20 20 |a part!.. | 00006430 20 54 68 65 20 22 6f 66 66 73 65 74 22 20 63 6f | The "offset" co| 00006440 6d 6d 61 6e 64 20 69 73 20 65 78 61 63 74 6c 79 |mmand is exactly| 00006450 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 61 | equivalent to a| 00006460 20 22 74 72 61 6e 73 6c 61 74 65 22 20 63 6f 6d | "translate" com| 00006470 6d 61 6e 64 2c 0a 62 75 74 20 6f 6e 6c 79 20 61 |mand,.but only a| 00006480 70 70 6c 69 65 73 20 74 6f 20 74 68 65 20 70 61 |pplies to the pa| 00006490 72 74 69 63 75 6c 61 72 20 70 61 72 74 20 77 68 |rticular part wh| 000064a0 6f 73 65 20 62 6c 6f 63 6b 20 69 74 20 69 73 20 |ose block it is | 000064b0 69 6e 2e 0a 0a 20 20 20 20 20 20 20 20 49 6e 20 |in... In | 000064c0 74 68 65 20 65 78 61 6d 70 6c 65 20 61 62 6f 76 |the example abov| 000064d0 65 2c 20 74 68 65 20 66 69 72 73 74 20 22 70 61 |e, the first "pa| 000064e0 72 74 22 20 62 6c 6f 63 6b 20 69 73 20 77 72 69 |rt" block is wri| 000064f0 74 74 65 6e 20 6f 75 74 20 77 69 74 68 20 6f 6e |tten out with on| 00006500 65 0a 63 6f 6d 6d 61 6e 64 20 70 65 72 20 6c 69 |e.command per li| 00006510 6e 65 2c 20 62 75 74 20 74 68 65 20 72 65 73 74 |ne, but the rest| 00006520 20 61 72 65 20 63 6f 6e 74 72 61 63 74 65 64 20 | are contracted | 00006530 6f 6e 74 6f 20 6f 6e 65 20 6c 69 6e 65 20 65 61 |onto one line ea| 00006540 63 68 20 62 79 0a 72 65 70 6c 61 63 69 6e 67 20 |ch by.replacing | 00006550 6e 65 77 6c 69 6e 65 73 20 77 69 74 68 20 63 6f |newlines with co| 00006560 6c 6f 6e 73 2e 20 20 52 65 6d 65 6d 62 65 72 20 |lons. Remember | 00006570 74 68 61 74 20 74 68 65 20 63 75 72 6c 79 20 62 |that the curly b| 00006580 72 61 63 6b 65 74 73 20 6d 75 73 74 20 62 65 0a |rackets must be.| 00006590 73 65 70 61 72 61 74 65 64 20 66 72 6f 6d 20 74 |separated from t| 000065a0 68 65 20 63 6f 6d 6d 61 6e 64 73 2c 20 65 6c 73 |he commands, els| 000065b0 65 20 79 6f 75 20 77 69 6c 6c 20 67 65 74 20 61 |e you will get a| 000065c0 6e 20 65 72 72 6f 72 2e 20 20 54 68 65 72 65 20 |n error. There | 000065d0 69 73 20 6e 6f 20 6c 69 6d 69 74 0a 6f 6e 20 74 |is no limit.on t| 000065e0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 72 |he number of par| 000065f0 74 73 20 61 20 63 6f 6d 70 6f 75 6e 64 20 6f 62 |ts a compound ob| 00006600 6a 65 63 74 20 63 61 6e 20 68 61 76 65 2e 20 20 |ject can have. | 00006610 43 6f 6d 70 6f 75 6e 64 20 73 6f 6c 69 64 73 20 |Compound solids | 00006620 77 6f 72 6b 20 62 79 0a 6c 65 74 74 69 6e 67 20 |work by.letting | 00006630 79 6f 75 20 63 72 65 61 74 65 20 73 65 76 65 72 |you create sever| 00006640 61 6c 20 6f 62 6a 65 63 74 73 20 62 65 66 6f 72 |al objects befor| 00006650 65 20 79 6f 75 20 75 73 65 20 74 68 65 20 22 6e |e you use the "n| 00006660 65 61 72 62 6f 6e 64 73 22 20 63 6f 6d 6d 61 6e |earbonds" comman| 00006670 64 2e 20 0a 57 68 65 6e 20 79 6f 75 20 64 6f 20 |d. .When you do | 00006680 75 73 65 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 |use this command| 00006690 2c 20 69 74 20 63 6f 6e 6e 65 63 74 73 20 74 68 |, it connects th| 000066a0 65 20 70 61 72 74 73 20 74 6f 67 65 74 68 65 72 |e parts together| 000066b0 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 0a 6d |. This method.m| 000066c0 65 61 6e 73 20 74 68 61 74 20 70 61 72 74 73 20 |eans that parts | 000066d0 77 69 6c 6c 20 6e 6f 74 20 67 65 74 20 63 6f 6e |will not get con| 000066e0 6e 65 63 74 65 64 20 69 66 20 74 68 65 79 20 61 |nected if they a| 000066f0 72 65 20 73 65 70 61 72 61 74 65 64 20 62 79 20 |re separated by | 00006700 6d 6f 72 65 20 74 68 61 6e 0a 74 68 65 20 72 61 |more than.the ra| 00006710 6e 67 65 20 6f 66 20 74 68 65 20 22 6e 65 61 72 |nge of the "near| 00006720 62 6f 6e 64 73 22 20 63 6f 6d 6d 61 6e 64 2e 20 |bonds" command. | 00006730 20 59 6f 75 20 73 68 6f 75 6c 64 20 61 6c 73 6f | You should also| 00006740 20 6e 6f 74 20 6c 65 74 20 70 61 72 74 73 20 70 | not let parts p| 00006750 61 73 73 0a 74 68 72 6f 75 67 68 20 65 61 63 68 |ass.through each| 00006760 20 6f 74 68 65 72 2c 20 61 73 20 74 68 65 20 72 | other, as the r| 00006770 65 73 75 6c 74 69 6e 67 20 63 6f 6d 70 6f 75 6e |esulting compoun| 00006780 64 20 6f 62 6a 65 63 74 20 69 73 20 75 6e 73 74 |d object is unst| 00006790 61 62 6c 65 2e 0a 0a 0a 47 45 54 54 49 4e 47 20 |able....GETTING | 000067a0 53 43 52 45 45 4e 53 48 4f 54 53 0a 0a 20 20 20 |SCREENSHOTS.. | 000067b0 20 20 20 20 20 54 68 65 72 65 20 69 73 20 6e 6f | There is no| 000067c0 20 62 75 69 6c 74 2d 69 6e 20 66 61 63 69 6c 69 | built-in facili| 000067d0 74 79 20 66 6f 72 20 6f 62 74 61 69 6e 69 6e 67 |ty for obtaining| 000067e0 20 73 63 72 65 65 6e 73 68 6f 74 73 2c 20 62 75 | screenshots, bu| 000067f0 74 20 69 74 20 69 73 0a 73 69 6d 70 6c 65 20 74 |t it is.simple t| 00006800 6f 20 64 6f 20 74 68 69 73 20 62 79 20 61 64 64 |o do this by add| 00006810 69 6e 67 20 61 20 6c 69 6e 65 20 74 6f 20 50 52 |ing a line to PR| 00006820 4f 43 66 72 61 6d 65 5f 61 63 74 69 6f 6e 73 20 |OCframe_actions | 00006830 69 6e 20 74 68 65 20 70 72 6f 67 72 61 6d 2e 20 |in the program. | 00006840 0a 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 |.This procedure | 00006850 69 73 20 63 61 6c 6c 65 64 20 61 66 74 65 72 20 |is called after | 00006860 65 61 63 68 20 66 72 61 6d 65 20 68 61 73 20 62 |each frame has b| 00006870 65 65 6e 20 64 72 61 77 6e 2c 20 77 69 74 68 20 |een drawn, with | 00006880 74 68 65 20 66 72 61 6d 65 0a 6e 75 6d 62 65 72 |the frame.number| 00006890 20 70 61 73 73 65 64 20 69 6e 20 66 72 61 6d 65 | passed in frame| 000068a0 25 2e 20 20 54 6f 20 73 61 76 65 20 61 20 70 69 |%. To save a pi| 000068b0 63 74 75 72 65 20 6f 66 20 66 72 61 6d 65 20 33 |cture of frame 3| 000068c0 30 2c 20 61 64 64 20 61 20 6c 69 6e 65 20 61 74 |0, add a line at| 000068d0 20 74 68 65 0a 62 65 67 69 6e 6e 69 6e 67 20 6f | the.beginning o| 000068e0 66 20 50 52 4f 43 66 72 61 6d 65 5f 61 63 74 69 |f PROCframe_acti| 000068f0 6f 6e 73 20 77 68 69 63 68 20 73 61 79 73 3a 0a |ons which says:.| 00006900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00006910 20 49 46 20 66 72 61 6d 65 25 3d 33 30 20 54 48 | IF frame%=30 TH| 00006920 45 4e 20 2a 53 63 72 65 65 6e 53 61 76 65 20 46 |EN *ScreenSave F| 00006930 45 4d 53 70 69 63 33 30 0a 0a 20 20 20 20 20 20 |EMSpic30.. | 00006940 20 20 59 6f 75 20 63 6f 75 6c 64 20 61 6c 73 6f | You could also| 00006950 20 6d 61 6b 65 20 74 68 65 20 53 63 72 65 65 6e | make the Screen| 00006960 53 61 76 65 20 63 6f 6e 64 69 74 69 6f 6e 61 6c |Save conditional| 00006970 20 6f 6e 20 74 68 65 20 41 6c 74 20 6b 65 79 20 | on the Alt key | 00006980 62 65 69 6e 67 0a 68 65 6c 64 20 64 6f 77 6e 2c |being.held down,| 00006990 20 66 6f 72 20 65 78 61 6d 70 6c 65 2e 0a 0a 0a | for example....| 000069a0 46 41 43 45 54 20 4f 55 54 50 55 54 0a 0a 20 20 |FACET OUTPUT.. | 000069b0 20 20 20 20 20 20 49 20 68 61 76 65 20 69 6e 63 | I have inc| 000069c0 6c 75 64 65 64 20 69 6e 20 74 68 65 20 70 72 6f |luded in the pro| 000069d0 67 72 61 6d 20 61 20 66 61 63 69 6c 69 74 79 20 |gram a facility | 000069e0 74 6f 20 6f 75 74 70 75 74 20 74 68 65 20 63 6f |to output the co| 000069f0 6f 72 64 69 6e 61 74 65 73 0a 6f 66 20 61 6c 6c |ordinates.of all| 00006a00 20 74 68 65 20 74 72 69 61 6e 67 75 6c 61 72 20 | the triangular | 00006a10 22 66 61 63 65 74 73 22 20 77 68 69 63 68 20 6d |"facets" which m| 00006a20 61 6b 65 20 75 70 20 74 68 65 20 73 75 72 66 61 |ake up the surfa| 00006a30 63 65 73 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 |ces of the objec| 00006a40 74 73 2e 20 0a 59 6f 75 20 63 6f 75 6c 64 20 75 |ts. .You could u| 00006a50 73 65 20 74 68 69 73 20 64 61 74 61 20 74 6f 20 |se this data to | 00006a60 63 72 65 61 74 65 20 61 6e 20 69 6e 70 75 74 20 |create an input | 00006a70 66 69 6c 65 20 66 6f 72 20 61 20 72 61 79 20 74 |file for a ray t| 00006a80 72 61 63 65 72 20 6f 72 20 6f 74 68 65 72 20 33 |racer or other 3| 00006a90 44 0a 72 65 6e 64 65 72 69 6e 67 20 70 72 6f 67 |D.rendering prog| 00006aa0 72 61 6d 2e 20 20 41 73 20 66 6f 72 20 73 63 72 |ram. As for scr| 00006ab0 65 65 6e 73 68 6f 74 73 2c 20 79 6f 75 20 6a 75 |eenshots, you ju| 00006ac0 73 74 20 61 64 64 20 61 20 6c 69 6e 65 20 74 6f |st add a line to| 00006ad0 0a 50 52 4f 43 66 72 61 6d 65 5f 61 63 74 69 6f |.PROCframe_actio| 00006ae0 6e 73 20 6c 69 6b 65 3a 0a 0a 20 20 20 20 20 20 |ns like:.. | 00006af0 20 20 20 20 20 20 20 20 20 20 49 46 20 66 72 61 | IF fra| 00006b00 6d 65 25 3d 33 30 20 54 48 45 4e 20 50 52 4f 43 |me%=30 THEN PROC| 00006b10 6f 75 74 70 75 74 5f 66 61 63 65 74 73 28 22 24 |output_facets("$| 00006b20 2e 54 65 6d 70 2e 66 61 63 65 74 73 33 30 22 29 |.Temp.facets30")| 00006b30 0a 0a 20 20 20 20 20 20 20 20 77 68 69 63 68 20 |.. which | 00006b40 77 69 6c 6c 20 63 72 65 61 74 65 20 61 20 64 61 |will create a da| 00006b50 74 61 20 66 69 6c 65 20 77 68 65 6e 20 74 68 65 |ta file when the| 00006b60 20 70 72 6f 67 72 61 6d 20 72 65 61 63 68 65 73 | program reaches| 00006b70 20 74 68 65 20 33 30 74 68 0a 66 72 61 6d 65 2e | the 30th.frame.| 00006b80 20 20 54 68 65 20 64 61 74 61 20 66 69 6c 65 20 | The data file | 00006b90 63 6f 6e 73 69 73 74 73 20 6f 66 20 61 20 6c 69 |consists of a li| 00006ba0 73 74 20 6f 66 20 6e 75 6d 62 65 72 73 20 77 68 |st of numbers wh| 00006bb0 69 63 68 20 63 61 6e 20 74 68 65 20 72 65 61 64 |ich can the read| 00006bc0 20 62 79 20 61 0a 0a 20 20 20 20 20 20 20 20 20 | by a.. | 00006bd0 20 20 20 20 20 20 20 49 4e 50 55 54 23 63 68 61 | INPUT#cha| 00006be0 6e 25 2c 41 25 0a 0a 20 20 20 20 20 20 20 20 74 |n%,A%.. t| 00006bf0 79 70 65 20 42 41 53 49 43 20 73 74 61 74 65 6d |ype BASIC statem| 00006c00 65 6e 74 2e 20 20 59 6f 75 20 63 61 6e 20 72 65 |ent. You can re| 00006c10 61 64 20 74 68 65 20 66 69 6c 65 20 77 69 74 68 |ad the file with| 00006c20 20 61 20 70 72 6f 67 72 61 6d 20 77 68 69 63 68 | a program which| 00006c30 0a 6c 6f 6f 6b 73 20 73 6f 6d 65 74 68 69 6e 67 |.looks something| 00006c40 20 6c 69 6b 65 20 74 68 69 73 3a 0a 0a 20 20 20 | like this:.. | 00006c50 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 50 | REP| 00006c60 45 41 54 0a 20 20 20 20 20 20 20 20 20 20 20 20 |EAT. | 00006c70 20 20 20 20 20 49 4e 50 55 54 23 63 68 61 6e 25 | INPUT#chan%| 00006c80 2c 41 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 |,A%. | 00006c90 20 20 20 20 20 49 46 20 41 25 3c 3e 31 20 54 48 | IF A%<>1 TH| 00006ca0 45 4e 20 45 52 52 4f 52 20 31 2c 22 42 61 64 20 |EN ERROR 1,"Bad | 00006cb0 66 69 6c 65 22 0a 20 20 20 20 20 20 20 20 20 20 |file". | 00006cc0 20 20 20 20 20 20 20 49 4e 50 55 54 23 63 68 61 | INPUT#cha| 00006cd0 6e 25 2c 4e 25 0a 20 20 20 20 20 20 20 20 20 20 |n%,N%. | 00006ce0 20 20 20 20 20 20 20 46 4f 52 20 69 25 3d 31 20 | FOR i%=1 | 00006cf0 54 4f 20 4e 25 0a 20 20 20 20 20 20 20 20 20 20 |TO N%. | 00006d00 20 20 20 20 20 20 20 20 49 4e 50 55 54 23 63 68 | INPUT#ch| 00006d10 61 6e 25 2c 58 31 25 2c 59 31 25 2c 5a 31 25 0a |an%,X1%,Y1%,Z1%.| 00006d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00006d30 20 20 49 4e 50 55 54 23 63 68 61 6e 25 2c 58 32 | INPUT#chan%,X2| 00006d40 25 2c 59 32 25 2c 5a 32 25 0a 20 20 20 20 20 20 |%,Y2%,Z2%. | 00006d50 20 20 20 20 20 20 20 20 20 20 20 20 49 4e 50 55 | INPU| 00006d60 54 23 63 68 61 6e 25 2c 58 33 25 2c 59 33 25 2c |T#chan%,X3%,Y3%,| 00006d70 5a 33 25 0a 20 20 20 20 20 20 20 20 20 20 20 20 |Z3%. | 00006d80 20 20 20 20 20 20 52 45 4d 20 64 6f 20 73 6f 6d | REM do som| 00006d90 65 74 68 69 6e 67 20 77 69 74 68 20 74 68 65 20 |ething with the | 00006da0 64 61 74 61 20 68 65 72 65 0a 20 20 20 20 20 20 |data here. | 00006db0 20 20 20 20 20 20 20 20 20 20 20 4e 45 58 54 0a | NEXT.| 00006dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00006dd0 55 4e 54 49 4c 20 45 4f 46 23 63 68 61 6e 25 0a |UNTIL EOF#chan%.| 00006de0 0a 20 20 20 20 20 20 20 20 54 68 65 20 63 6f 6f |. The coo| 00006df0 72 64 69 6e 61 74 65 73 20 6f 66 20 74 68 65 20 |rdinates of the | 00006e00 74 68 72 65 65 20 63 6f 72 6e 65 72 73 20 6f 66 |three corners of| 00006e10 20 65 61 63 68 20 66 61 63 65 74 20 61 72 65 20 | each facet are | 00006e20 67 69 76 65 6e 20 69 6e 0a 75 6e 69 74 73 20 6f |given in.units o| 00006e30 66 20 31 2f 36 34 30 74 68 20 6f 66 20 61 20 70 |f 1/640th of a p| 00006e40 6f 69 6e 74 2c 20 69 6e 20 6f 74 68 65 72 20 77 |oint, in other w| 00006e50 6f 72 64 73 20 31 2f 26 42 34 30 30 20 6f 66 20 |ords 1/&B400 of | 00006e60 61 6e 20 69 6e 63 68 2e 0a 0a 20 20 20 20 20 20 |an inch... | 00006e70 20 20 48 61 76 65 20 66 75 6e 21 0a | Have fun!.| 00006e7c