To use a keyboard shortcut, press and hold one or more modifier keys and then press the last key of the shortcut. For example, to use Command-C (copy), press and hold the Command key, then the C key, then release both keys. Mac menus and keyboards often use symbols for certain keys, including modifier keys:
On keyboards made for Windows PCs, use the Alt key instead of Option, and the Windows logo key instead of Command.
Painter Essentials 4.3 Update (Macintosh OS X 10.6) This will update your Corel Painter Essentials 4 application to the latest Macintosh OS X 10.6 Snow Leopard fixes. If you encounter any technical difficulties installing this update, please contact Corel Support Services. Explore the world of Mac. Check out MacBook Pro, MacBook Air, iMac, Mac mini, and more. Visit the Apple site to learn, buy, and get support.
Some keys on some Apple keyboards have special symbols and functions, such as for display brightness , keyboard brightness , Mission Control, and more. If these functions aren't available on your keyboard, you might be able to reproduce some of them by creating your own keyboard shortcuts. To use these keys as F1, F2, F3, or other standard function keys, combine them with the Fn key.
You might need to press and hold some of these shortcuts for slightly longer than other shortcuts. This helps you to avoid using them unintentionally.
* Does not apply to the Touch ID sensor.
The behavior of these shortcuts may vary with the app you're using.
For more shortcuts, check the shortcut abbreviations shown in the menus of your apps. Every app can have its own shortcuts, and shortcuts that work in one app might not work in another.
an artificial-gravity simulation program
Copyright ©Theodore W. Hall
Permission is granted to make and distribute verbatim copies of thissoftware and documentation provided the copyright notice and this permissionnotice are preserved on all copies.
The software is distributed as is, without warranty of any kind, eitherexpressed or implied, including, but not limited to, the implied warranties ofmerchantability and fitness for a particular purpose.
Last update: 2010-11-13 19:33:00-05:00
Step 1: Download the appropriate version for yoursystem:
OS | Download | Remarks |
---|---|---|
IRIX 6.2 MIPS | Requires FORTRAN, X11, and C dynamic libraries. This version is linked like so:
If you don't have the FORTRAN dynamic libraries and would like a statically linked version of this program, e-mail me and I'll try to put one together. I may have to install the static FORTRAN libraries on my own system first. | |
SunOS 5.6 SPARC | Requires FORTRAN, X11, and C dynamic libraries. This version is linked like so:
There's a minor bug in the Sun version: the rotation angle isn't clamped to the range ±π. As a result, after several minutes of running, the argument to the sin() and cos() functions becomes quite large, and the motion becomes jerky. I've fixed the source code, but in the meantime I've lost access to the Sun compilers. | |
Statically linked to the FORTRAN libraries; still requires the X11 and C dynamic libraries. This version is linked like so:
See the comment above regarding a minor bug in the Sun version. | ||
Mac OS X 10.3 ppc | Compiled and statically linked for the PowerPC. No Cocoa, no Carbon, no Aqua -- just the same minimal X11 graphic interface, ported to the Mac OS X UNIX environment. You'll also need an X11 window server for Mac OS X. Apple includes one as an option with OS X 10.3. If you're still running OS X 10.2, you can download a good free one from SourceForge. You must first launch the X11 server; then start 'SpinDoctor' or 'sdr' (a symbolic link) from the XTerm command line. | |
Mac OS X 10.6 i386 | Compiled and statically linked for the Intel. No Cocoa, no Carbon, no Aqua -- just the same minimal X11 graphic interface, ported to the Mac OS X UNIX environment. You'll also need the X11 window server, included as an option with OS X 10.6. You must first launch the X11 server; then start 'SpinDoctor' or 'sdr' (a symbolic link) from the XTerm command line. | |
Linux | Not available | Sorry, I haven't ported this to Linux yet. If there's sufficient demand, I'll try to supply. E-mail me. |
Step 2: Unpack the '.tgz' file. This willcreate a directory that contains the program and a copy of thisdocument. In the following, replace archive with thebasename of the archive you downloaded in Step 1:
gunzip archive.tgz;tar -xvf archive.tar;
Mac users: Stuffit Expander basically works, but it handles file extensionsdifferently. You may end up with several 'sdr-mac-*' folders. The one to keep is the one that contains 9 items. The 'gunzip' and'tar' commands in the UNIX command line shown above (typed in the Terminalapp) are consistent with the other UNIX platforms.
The program opens a new window with several graphic and text areas,referred to below as 'boxes'. Numbered left-to-right and top-to-bottom,they are:
Artificial gravity, Rotating view. |
Artificial gravity, Inertial view. |
Planetary gravity (Earth by default). |
Vector control for the initial height and velocity of a free-falling particle. See the sections on Particle Control and Vector Control. |
Slider for habitat radius, in meters. See the sections on Rotation Control and Slider Control. |
Slider for habitat rotations per minute. See the sections on Rotation Control and Slider Control. |
Slider for habitat gravity factor. See the sections on Rotation Control and Slider Control. |
Messages and prompts. |
Text input for the initial height and velocity of a free-falling particle. See the sections on Particle Control and Text Input. |
Text input for the radius (in meters), rotations per minute, and gravity factor. See the sections on Rotation Control and Text Input. |
<Ctrl>C | Exits the program. |
<Esc> | Exits the program. |
<F1> | Launches a particle. |
<Shift><F1> | Toggles auto-launch. In the Message window (box 8), the program prompts for a 'time increment' in seconds. See the section on Text Input. |
<F2> | Toggles stop-action. Useful for grabbing frames from the animation. |
<F3> | Sets the Planetary gravity to 'Variable'. In this mode, the intensity of the Planetary gravity (box 3) equals the intensity of the Artificial gravity (boxes 1 and 2), set by the gravity-factor controls. This is useful, for example, for comparing Mars-intensity artificial gravity to actual Mars gravity. |
<Shift><F3> | Resets the Planetary gravity to 'Earth-normal'. This is the default. |
<F4> | Writes a plot file. In the Message window (box 8), the program prompts for a 'plot file name'. See the sections on Text Input and Plot Files. |
Specify the initial Height, Velocity, and Angle of the free-fallingparticles, in meters, meters per second, and degrees of elevation from 'east'(prograde). You may control these parameters eithergraphically (box 4), ortextually (box 9).
The three values are independent.
Specify the Radius (meters), the RPM (rotations per minute), and theG-factor (multiples of Earth gravity). You may control theseparameters either graphically(boxes 5, 6, 7) or textually(box 10).
These parameters are inter-dependent: specifying values for any two ofthem determines the value of the third one as well. Whenever you assigna value to any of the parameters, that parameter receives the highestpriority. The program then recomputes the parameter with the lowestpriority (least recently specified by you), according to the values of theother two.
The equations are:
Use the mouse in box 4 to drag either the head or thetail of the vector.
Press on the small green particle to select the tail of the vector. Drag the particle vertically up or down to set its initial height (inmeters). Horizontal displacement is ignored. The particle'sinitial velocity and angle are unaffected - the head of the vector moves withthe tail.
Press anywhere else in box 4 - away from the particle -to select the head of the vector. It's not necessary to be near thehead. This allows you to distinguish between the head and the tail whenthe vector has zero length. Drag the head anywhere within the box toset the particle's initial velocity and angle. The initial height isunaffected.
To accommodate a convenient human scale for both height and velocity, thegraphic velocity unit is 10 meters per second. (This affects only thelength of the vector in box 4, not the numeric value inbox 9.) The viewport allows an initial height of 10meters, and an initial horizontal velocity of 50 meters per second, eitherprograde or retrograde. A 90-mile-per-hour fastball corresponds toabout 40 meters per second.
Values that are out-of-range graphically may be input astext in box 9. The graphicvector is clipped to box 4.
Use the mouse in boxes 5, 6, 7 to drag the verticalsliders for Radius, RPM, and G-factor. The sliders are scaled toaccommodate an 'interesting' range of values, both inside and outside of thesupposed 'comfort zone' for rotation.
Values that are out-of-range graphically may be input astext in box 10. The slidersare clamped to boxes 5, 6, 7.
The prompt field in box 8 is arbitrarily long,depending on the program's window size. The numeric fields inboxes 9 and 10 allow six characters.
The user interface is a bit quirky. (See the section onHistory.) Briefly:
Text input in box 8 (Messages and prompts) is triggered by some other command, such as <Shift><F1> or <F4>. Answer the prompt, or type ! or stop to abort the command. See the section on Command Keys.
To enter text input in box 9 (Particle Control) or box 10 (Rotation Control), click the mouse or press <Return> or <Enter> anywhere in the box. Each box contains three numeric fields. The fields are not individually selectable.
The insertion point is initially at the end of the first field. The text is not selected. To edit the field, you must first press <Backspace>, <Ctrl>H, or <Delete>.
<Return>, <Enter>, or <Ctrl>M accept the field value and move the cursor to the end of the next field. <Tab> does nothing.
<Backspace> or <Ctrl>H delete the character before the insertion point.
<Delete> deletes the entire field.
The left and right arrows move the insertion point within the field.
You may enter expressions. Six characters don't provide much space for that, but you can, for example, type 1/6 for the G-factor to simulate Lunar gravity.
The most interesting effects occur when you throw the particles up andagainst the rotation, especially when the radius is small. Play withsmall radii and fast rotations and see why these are uncomfortable. (The artificial gravity is quite unnatural.) Make up your owngames. For example:
Try to throw a particle across a diameter of the rotating environment, and catch it on the other side, as seen in the inertial view.
Try to throw a particle 180 degrees against the rotation, at just the right velocity, so that it's stationary in the inertial view.
Launch a stream of particles from the floor to simulate a fountain. Experiment with the velocity and angle to get loops and cusps in the stream.
The purpose of this program is to illustrate the 'shape' of the artificialgravity field. It is not a complete simulation of particlephysics. In particular, it does not consider atmospheric effects; itanimates the particles as if they were in a vacuum. For low relativevelocities, at the 'human scale', this is close enough. However, withlarge relative velocities or long distances, the rotating atmosphere may exerta significant force on a moving body, depending on the body's size, shape, anddensity. Atmospheric effects are beyond the scope of this program.
The plot file format is a relic of the Merit computer network at theUniversity of Michigan. It was designed to describe simple pen plotsin a text format. The filesrdplot.c andrdplot.f contain sampleprogram source code, in C and FORTRAN, for reading and decoding the plot fileformat. You're on your own to modify those programs to actually producegraphic output.
I've considered revising the plot function to produce a PostScriptfile. I have a function library for creating PostScript files, but itwould take moderate effort to revise this program to use it. If that'ssomething you'd like, e-mailme. The squeaky wheel gets the grease.
I originally wrote this program as part of mydoctoralresearch, in 1987, in the Architecture and Planning Research Laboratory(APRL) at the University of Michigan. I wroteit in FORTRAN 77 on Apollo workstations running the Aegis operating system,the Apollo Display Manager (DM), and the ApolloGraphics Primitives (GPR). The X Window System,xlib, xt, and Motif were not available. I wrote all of the interaction- the vector, the sliders, the text input - from low-level events and graphicprimitives. Thus the program's somewhat quirky non-Motif look andfeel.
This program links to an APRL utility library to handle textinput and convert characters to real numbers. Originally, thecharacter-to-real converter was a fairly small subroutine that handled onlysigns, digits, and decimal points. Later, Jim Turner and I replaced itsguts with a call to a home-grown subsystem that handles general algebraicexpressions. Voila! Virtually every APRL programthat prompts for real-number input can now accept those expressions. This program inherits that feature, though its small text fields don't allowfor much of an expression.
In other work, Eduardo Sobrino and I wrote a function library to emulateApollo GPR through xlib, allowing us to port APRLprograms from the Apollo to X workstations. This program also links tothat library. It looks and feels in X essentially the same as it didin Apollo GPR.
This program generally tries to open a new full-size child of the rootwindow. In my experience, with SGI 4Dwm and Sun CDE (both apparentlyMotif derivatives) the window is appropriately resized to accommodate thewindow manager's decorations. With Sun OpenLook, the window manager'sdecorations may be clipped. You can still move and resize the windowif necessary.
For Apollo aficionados: By default, the program initializes graphicsin GPR_$BORROW
mode. In true GPR, that'sroughly equivalent in X to grabbing the server and drawing on the rootwindow. In X, that would be considered pretty rude. The xlibGPR emulator normally handles GPR_$BORROW
by openinga new full-size child of the root window, managed by the window manager (Motifor whatever). You can override the window manager by setting theenvironment variable GPR_BORROW to 'STRICT' before running theprogram. For example, in csh:
setenv GPR_BORROW STRICT
The GPR emulator then sets the xlib window'soverride_redirect attribute to True
, resulting in atrue full-screen window without manager decoration. It looks like trueGPR_$BORROW
, though the window is still a child of the root (notthe root itself), and the program still doesn't grab the server.
The command-line option -d causes the program to initialize inGPR_$DIRECT
mode. It opens a new large window (nearly fullscreen) and initializes graphics in that window. In true ApolloGPR, this is necessary if the program is to share the displaywith others; it must 'acquire' the display before performing any graphic I/O,and 'release' the display (allowing others to acquire it) before a certainmaximum time expires. In the GPR emulator, the end resultis essentially the same as the default GPR_$BORROW
without'STRICT', except that there is some additional overhead in emulating the'acquire' and 'release' functions (including raising the window, installingthe color map, and setting the event mask).