Welcome to Mike's Skydiver

Skydiver flight simulator Project Highlights

demonstration of accurate skydiver p.o.v. system that could feed location, orientation, and status to a 3D rendering system. (As of Oct 98, the prototype works in hypercard for Macintosh and is being re-written in Java.)

Real-time responsive controls

Discrete event simulator with queue of flying objects to be updated, in turn (one per loop), when there's nothing else going on

Menus and buttons are available while the plane and diver are moving

Prefabricated pictures and "just enough math"

only calculate new headings and new vectors when the diver/plane turns

Pause and Resume reset the clocks of the diver(s) and plane(s) so they carry on from where they left off.

Realistic Physics:

3D freefall and canopyfall with inertia, wind resistance, steering

"Realism" based on US.Parachute association figures and rec.skydiving discussions

 

Discrete event simulation

every time the diver gets to recalculate, it checks against the system clock to determine how much real time has passed since the last update, and then extrapolates from there with current (windresist, gravity, thrust) acceleration, velocity, location, rotation

Acceleration with gravity and wind resistance

Looked for general integral for

y''[t] == ((-K/M)* y'[t]^2) + 9.8

(got help from Karen Daniels and Sam Keany, physics teachers, and Richard Mann and Brynja Kohler, math teacher friends... looked with them in several books of differential equations, and asked mathematica (with Karen's help):

NDSolve[{y''[t]==(-.21/60)*(y'[t]^2) + 9.8,y'[0]==0,y[0]==0},y,{t,0,15}]

which gave a numerical approximation.

I found a book ("Countdown", Dilithium Press, Forest Grove, OR '79, Robert M. Eisberg (Physics PhD, Berkeley) & Hyde) that gave a solution for instantaneous velocity and distance during freefall (with wind resist, assuming no change in body position):

equation 1:

d = (m/k) ln[.5 * (e^(t sqrt(kg/m)) + e^(-t sqrt(kg/m)))]

(with m = mass of diver, k = diver's wind resistance force, d = distance, t = time, g = gravity, assuming wind resistance force = k (v^2)

(ps: this is a decent assumption, giving fall rates that match USPA figures within a few percent at most seconds for 10000 freefall, see wind figures and USPA figures for justification) as a solution. Note: also see Gary Peek's barograph data from real jumps.

A friend of mine (Mike McGarry, in Grad school at Harvard, found the following solution for me:

equation 2:

d= (m/k) ln[cosh((t + c) sqrt(gk/m))] + C2

--C2 is initial position, C is determined by initial velocity

and Mike told me (comparing the equations 1 and 2):

Believe it or not

a) the equations are the same

b) mine (eq.2) is better (because theirs is specific to the

initial conditions of initial speed = initial position = zero,

i.e. C = C2 = 0; whereas mine, by clever selection of C and C2,

can be adjusted to accomodate alternate initial conditions).

You see, the definition of the hyperbolic cosine (cosh) is

 

cosh x = [e^x + e^(-x)]/2

 

Substitute x = t sqrt(kg/m) to get the key expressions in either of the above equations.

The Click here to see McGarry's proof.

 

Wind Resistance: F = K V^2 gives approximation that matches USPA figures

Terminal velocity is when F(wind) = -F(gravity)

I have terminal velocity figures for different body configurations from some experiments that were done with special altimeters at Skydive Arizona.

From these I can determine K in windForce = K V^2 because I have constants for [V]elocity, [M]ass, [g]ravity.

Terminal velocity is when F(wind) = K V^2 = -F(gravity) = M g

 

solving for K in a variety of body positions (with and without canopy) lets me interpolate for K in other positions and figure the terminal velocities in those positions also.

 

Transition of parachute from lesser to greater wind resistance as it opens (partly random pacing: "snivels")

diver (in freefall and under canopy) has x,y,z vectors (in the physics sense of the word) for local wind resistance and "thrust", and for global wind/thrust/speed

Discrete event timing with trapezoidal approximation of average distance and speed

Arbitrary rotation in 3D, with turn RATE (not just event)

LocalToGlobal transformation matrix, is 3x3 for faster math, is only updated when the diver is actually turning

Landing speed detection/threshold for survival

Real Equipment

Main and Reserve Parachutes

Main (& main cutaway) and Reserve handles

nable/disable depending on availability

properly placed, visually show availability

respond to pull with click and highlight

Visual analog Altimeter

Electronic altimeter with altitude/speed triggers for warning beeps (optional)

the real beep sounds downloaded from a skydive altimeter manufacturer's web page

Automatic Activation Device with altitude/speed triggers to open reserve parachute

Reserve Static Line (optional)

activates after (timer) delay after cutaway

Parachute and freefall steering

Extra Equipment

vertical velocity indicator (fall rate)

compass

Realistic scenario (Dropzone)

authentic jump altitude and aircraft speed

Multiple flying objects

currently one plane and one skydiver

varying update rate (priority to diver)

GUI User Interface

menus (enable/disable, highlight as appropriate)

buttons (which send commands to menus and objects)

accellerator keys

visual and audible indicators/feedback

altimeter, clock, handles, compass, vvi, sideview with variety of shapes

diver control made direct/obvious:(steering by pushing shoulder, handles get poked)

minimal screen clutter

self-initializing objects

Object-oriented programming

dropzone, plane, and diver objects

send & receive messages, update menus, keep individual positions, properties, defaults, capabilities, transitions

Misc. Features

looping background sounds and pre-emptive discrete event sounds (with a queue for the latter)

pretty much works in metric or english measurements systems (I need to draw a metric altimeter to finish this part up).

Time is a variable that can be sped up or slowed down.

Why build simulator? Several motivations

Science:

Debate raging on the rec.skydiving usenet newsgroup about the order in which fast and slow falling divers should jump from a plane given varying windspeeds.

This project needs only a slight bit more fleshing out and I could run different scenarios with varied winds and jump orders and opening altitudes and canopy flight direction to study safe in-air separation.

Education:

For practicing emergency procedures and canopy control while away from the dropzone

Having a medium to safely explain, demonstrate, and discuss, and analyze dangerous situations

Game:

My students have had a blast playing with the early prototypes

The programmers like to arrange a second cutaway so that the diver can crash

What computer science involved, what can we learn?

Principles of wind dynamics and projectile physics, 3D rotation and motion of viewpoint.

Trying to make it all work in realtime caused me to deal with several kinds of programming:

I had to have turn rates and transitions and timers as well as headings.

I had to keep lists of objects that needed updates (because they were moving or had been changed), and had to take turns updating objects while keeping an eye out for user input).

My user interface had to be simplified with settings (preferences) on a separate page --easily accessible but not cluttering.

Is there access for non-techy artists? Game players? Instructors?

It's possible to customize different kinds of situations:

airplanes

Speed, altitude, and flight path, and capacity for multiple divers are already variables.

divers

Weight, kind of safety equipment (and its settings), measurement system (english/metric), and windresistance are already variables.

The number of parachutes would be relatively easy to customize.

parachutes

Wind resistance, thrusts, and turn rates are merely variables that could be initialized differently, giving the parachutes different performance and handling capabilities).

dropzones

It would be relatively easy to add varying field elevation, obstacles, wind, greater number of aircraft and divers in the air simultaneously).

Future plans

Presumably the point of view would be from the equivalent of a chase plane: a fellow skydiver who can fly close/far, above/below/even, while usually keeping a level attitude. Maybe the point of view should be from the sky- diver: ground (getting close quickly, with landmarks becoming visible or texture changing) and sky and altimeter.

A multi-player formation skydive game

seems very possible, though network latency problems might be ugly when microsecond adjustments are needed for divers to stay synchronized. I'd have to learn some new physics for divers who are hanging onto each other (an experienced diver told me that big formations get increased wind resistance and slower fall rate than individuals).


Mike Roam, created October 16, '98, revised 2009 mar 22

E-mail: MikeRoam[a]aolDOTcom

Home Page: http://www.michaelroam.com/