                              ANALYZE

                         by Dwight Meglan
                               
                            An Overview
                              
                              

What is ANALYZE ?
  
ANALYZE (usually referred to as ANZ) is an analysis package for processing
motion, force plate, and EMG data from a motion measurement system which can
generate a number of quantities that are used for diagnosis and research of
human locomotion and locomotion disorders as well as other activities such as
chair raising or upper extremity motion.  In fact, at present ANZ will
generate over 100 different quantities.   

The input data required to use ANZ are 3 dimensional marker trajectories,
force plate ground reaction load data and/or muscle electromyography data. 
The previous sentence uses 'and/or' because ANZ is capable of performing
either motion, ground reaction, or EMG analyses alone or in combination with
one another.  This enables marker data to be processed to get purely
kinematic information, such as joint angles, velocities, and accelerations
without having to know force plate data (obviously that data isn't needed for
such an analysis).  It also enables ground reaction force data to be crunched
to get such purely load related information as center of pressure and ground
impulse.  But, since all this information is required to find joint moments
and powers (in reality this is only true for the double support phase of
gait- more on that later), ANZ has been set up in a flexible fashion such
that the tools which need to be available to get these quantities are also
available for use in studies which have little or nothing to do with gait. 
For example, the force plate section of ANZ can be used to produce center of
pressure information on a person's balance as they stand for a period of time
on the force plate(s). The EMG section can be used to perform signal
processing tasks such as digital filtering, integration, and rectification.  

The results can be displayed in a multitude of ways in TELIO, the graphics
postprocessing program that is a companion to ANZ.  TELIO is discussed in
detail in its own documentation.  In addition to full body motion, ANZ has
been configured for studying upper extremity motion and detailed foot
kinematics.  Another example is that  rigid body arrays can be tested using
the motion section of ANZ.  In the end, the result is that one package can be
used to study a large number of motion, EMG, and ground load protocols
without having to create special programs for every little variation that one
comes up with, as has been done in the past.
  
In addition, a consistent and extendible file format has been developed to
store the analysis results in a machine independent format.  In this way, the
results will be usable on any future machines which a lab may purchase or
decide to use for other reasons.  This also facilitates the sharing of data
between researchers.  The format is extendible in that if future researchers
come up with other analyses to add to ANZ (which is relatively easy to do and
I hope will  happen) the resulting files will still be compatible with
previously written program code used to read ANZ files.  Up till now, often
when another analysis method was developed another file format was created
and more programs needed to be written to use the files.  The result has been
a proliferation of files, each of a unique, idiosyncratic type, which a
programmer needed to wrestle with for a while.
 
Future additions to ANZ have been planned for by the way in which it has been
designed internally. Basically, the analysis code is based upon the
principles of the mechanics of three dimensional rigid bodies.  These
analyses do not contain any simplifications which prevent their use in future
studies (actually there is one dealing with the inertia matrix of a body
segment.  More on that in a later section.), as is the case with software
which is oriented toward sagittal plane motions only and hence contains two
dimensional motion assumptions.  To do this, ANZ has been structured to
perform its analysis upon only 3D rigid body segments (e.g., the foot, calf,
and thigh) which are connected by joints which do not have any constrained
degrees of freedom.  In otherwards, the segments are free to move relative to
one another (3 translations and 3 rotations- the definition of these is
discussed later in the section about coordinate systems).  In fact, whether
the whole body, only the upper body, or only the lower body is present
becomes immaterial to the analysis routines as long as the segment
connections (i.e., joints) have been defined properly.
 
For this type of flexibility to take place, the first thing that ANZ does is
use the marker data to calculate the position and orientation of the body
segments in space in each frame of data.  In addition, the joint position
relative to these segments must be defined (in the segment's local coordinate
system) and the segment mass and inertia calculated from anthropometric data.
 (To be more precise, the joint positions are assumed based upon the
anthropometric data, BUT the kinematic screws of the relative motion between
segments can be calculated in the subsequent analyses and could be used to
find an average "joint axis".  This may be a future enhancement.) This is the
only part of ANZ which is marker set specific and thus these routines along
the file reading code  are the only areas of the program that need to be
modified if a different marker set is used.  In fact, ANZ has been set up
such that it can support a number of marker sets by using option switches in
its commands.  A better solution would be to have the marker set to segment
calculations in a parameter file which would be read and interpreted by ANZ. 
The calculations would essentially be mini programs in some compact language.
This is very desirable, but is path fraught with pitfalls, traps, and
headaches (e.g., what should ANZ do if the person who wrote the marker to
segment calculation did it so wrong that divide by 0's occur ?) and deadlines
needed to be met.  Thus, it is not part of ANZ at present but it might be a
future enhancement Once the marker to segment calculations have been
performed the only other thing that ANZ needs to know is how many segments
there are, which ones they are, and how they are connected together.

Note that for many calculations, ANZ contains multiple ways to generate
the same quantity.  This has been done to provide checks of the validity
of the algorithms as programmed.

What does ANZ recognize ?
  
At present, ANZ is set up to recognize up to 15 unique body segments
and 15 unique joints. It is 'up to' because, as pointed out previously,
the program has been set up in flexible manner so that not all segments and
 joints need be included in the analyses. However, care must be taken at
this point. If you choose to analyze less than the full body, then the
analysis must be set up correctly. For example, the joint angles of 
the shoulder can't be calculated from the position and orientation of 
the thigh and calf. The user must understand the principles of mechanics
to use and/or modify the program properly.

The body segments which ANZ recognizes for human locomotion analyses and  
their abbreviations are:
  
  Right Foot       rtft      Left Foot      lfft
  Right Calf       rtcf      Left Calf      lfcf
  Right Thigh      rtth      Left Thigh     lfth
  Pelvis           pelv
  Trunk            trnk
  Right Hand       rthd      Left Hand      lfhd
  Right Forearm    rtla      Left Forearm   lfla
  Right Upperarm   rtua      Left Upperarm  lfua
  Head             head

The joints which ANZ recognizes for locomotion are:
  
  
  Right Ankle      rtak      Left Ankle     lfak
  Right Knee       rtkn      Left Knee      lfkn
  Right Hip        rthp      Left Hip       lfhp
  Pelvis-LAB GCS   pvlb
  Pelvis-Trunk     pvtk
  Right Wrist      rtwr      Left Wrist     lfwr
  Right Elbow      rtel      Left Elbow     lfel
  Right Shoulder   rtsh      Left Shoulder  lfsh
  Neck             neck
  
Note that the pvlb joint is only used to compute the absolute pelvis angle and
thus can be thought of as an imaginary joint since there is no such anatomic
joint.  This joint is the only one in which the joint angles are calculated
relative the global coordinate system (GCS).  In all other joints, the angles
are defined as those between the segment distal to the joint relative to the
proximal segment. 

 Other joints could be added later on, but the arrays within the program have
been set up with these limits (15 segments, 15 joints) in mind.  The file
format is set up in such a way that other segments and joints could be added
and the files could still be read by subsequent programs, such as TELIO,
without having to rewrite the file reading code. However, the program which
reads such a file must have provision for larger arrays and a way to use this
extra data.  TELIO is set up to handle the 15 segments and 15 joints defined
here at a maximum.

Several different types of locomotion marker sets are supported by ANZ. 
These include the Helen Hayes marker set, the Ohio State University marker
set, the Cleveland Clinic marker set, and a marker set developed for Mayo
Clinic.  Some of these markers sets use rigid body arrays while others use
discrete markers attached to strategic locations on the body.

Two non-locomotion marker sets are present in ANZ.  These include an upper
extremity set and a set for foot kinematics that considers the foot as four
separate bodies.


What can ANZ calculate ?
  
The quantities that ANZ calculates can be grouped into several categories:
marker based information, gait cycle time-distance information, segment based
information, joint based information, force plate based information, and EMG
information.

Marker based information
  
Marker  position:
Marker position data read in from a file can be checked for gaps and
interpolated/extrapolated using a selectable order polynomial. Marker data
can then be smoothed if desired with any of three methods. A generalized
cross validated smoothing polynomial (GCV) (Woltring, 1986) which
automatically adapts to the data or can be manually set, a two pass time
convolution filter (TCV) with flexible filter frequencies, and digital
filtering with selectable high, low and notch filter frequencies. NOTE: ANZ
has the capability to interpolate the marker data onto any specified interval
with any number samples created on that interval. This is convienient for
making gait data appear at regular intervals of the gait cycle, for instance
every 2% of the cycle.
  
Marker  velocity  and acceleration:
The first and second derivatives of the marker trajectories can be calculated  
using either the GCV, TCV, or finite difference methods.
  
Marker   diagnostics:
Used to test the accuracy, resolution, and repeatability of the motion
measurement system. This is essential in determining limits of confidence in
the analysis results. Two measures are provided: 1) The intermarker distances
between markers on the same segment in each frame of motion data and 2) the
position of the segment markers relative to the segment local coordinate
system. These show how the markers are moving relative to one another within
a segment. Ideally there should be no movement if the markers were rigidly
attached to a rigid body but in reality there is motion due to such factors
as skin and muscle motion and vibration of the sticks on which some markers
are placed. This information is useful in determining the reliability of the
calculation of the segment position and orientation. These diagnostics apply
as well to the marker carrier based analyses.


Segment based information
  
Segment  Parameters:
Estimates of segment mass, inertia relative to the principal axes of inertia,
and joint positions relative to segment center of mass based upon published
experimentally derived regression equations. Segment local coordinate system
is assumed to be aligned with the principal axes of inertia (the assumption
alluded to previously- this may be eliminated by a more rigorous technique
(Kaleps, 1984) which requires the measurement of the 3D locations of some 83
points!) and thus the products of inertia are 0. Therefore, inertia is
expressed as 3 vector rather than a 3x3 matrix. Separate databases are used
for male, female, and children (Jensen, 1989). 

Segment Position:
Segment position and orientation relative to the lab global coordinate system
(GCS). Expressed in terms of the position of the segment mass center and the
orientation of the segment principal moment of inertia axes via a 3x3
rotation matrix. Note that since a rotation matrix is used there is no built
in assumption as to a type euler angle, or whatever, system that is used to
express the rotations. This is most useful for subsequent mathematical
analyses, but causes difficulty in interpretation.
 
Average segment position:
Average position and orientation of the segment in all motion data. Useful for
looking at average standing posture as well as studying and correcting for
biases due to marker placement on the segments.
 
Segment angle:
The yaw-pitch-roll euler angles of each segment relative to the GCS. In this
way, for example, the angle of the foot relative to ground may be studied
This provides a method to interpret the 3x3 rotation matrix, though not the
best since euler angles are rather obscure at times also.
 
Segment velocity and acceleration:
Segment velocities and accelerations, both translational and rotational,
relative to the lab GCS and the segment local coordinate system (LCS). This
information is useful in interpreting kinematic data since it is dependent
upon the first and second derivatives of motion and thus shows changes in
motion much more clearly. These derivatives are computed using either the
GCV, TCV, or finite difference methods. Note that fully three dimensional
kinematic calculations are used in computing these quantities. Several
methods are available to compute these quantities including euler angle
derivatives, euler parameter derivatives, and marker derivatives combined
with rigid array assumptions.
 
Segment energy:
The rotational, translational, and total kinetic energies of each segment are
available for each frame of motion data. Potential energy of the segment
center of mass is defined relative to the GCS. Total energy of segment which
is a scalar summation of the total kinetic and potential energies of the
segment.
 
Body energy:
Same as for individual segments except that they are the sum of all the
kinetic, potential, and total energies of all the segments represented in the
marker set.
 
Segment momentum:
The linear and angular momentums of each segment in the segment's LCS. In
addition to these vectorial quantities, the magnitudes of both momentums are
also calculated.
 
Segment global screw:
The screw axis defining the motion of the segment in the GCS from one frame to
the next. This is an instantaneous screw since the position of the segment in
the previous frame is used as the reference for the calculation of the screw.
Note that the screw is expressed in the GCS rather than the LCS of the
segment. A separate calculation of the instantaneous screw of each joint (the
motion of the distal segment relative to the proximal segment) is also
carried out. In addition, the finite screw axis for the same motions is also
calculated for comparison/research purposes. Both the relative screw for the
segments's motion form one frame to the next as well as the absolute screw
for the kinematic state of the segment relative to the GCS can be calculated.
Several calculation methods are present for calculating the finite screw
since studies have shown that some methods are more sensitive to errors due
to noisy data than are other methods [Fenton, 1989].


Joint based information
  
Joint angle:
Joint angles are calculated relative to the joint coordinate system (JCS) and
the proximal segment LCS. The JCS is a nonorthogonal coordinate system which
more closely resembles the way in which orthopaedists describe joint angles
than do other euler angle sequences. The JCS for each joint is slightly
different and as a result they should be presented with diagrams and
mathematical formulae to give each joint a precise definition. The concept of
this coordinate system is based upon a paper by Suntay and Grood (1986).
Their coordinate system was defined only for the knee, but here it has been
generalized to the 15 joints of the body which ANZ recognizes. In addition,
standard euler yaw-pitch-roll angles have been included for completeness sake
since some previous studies have used this convention. Note that the sagittal
plane angles (flexion-extension) are very similar for both coordinate systems
and in fact have been analyzed theoretically to show that they do not deviate
greatly until a fair amount of non-sagittal angulation occurs. The
non-sagittal angles (in/external, ab/adduction, pro/supination, etc.) are a
great deal different from one another, however.
 
Average joint angles:
Average joint angle over the period of the motion data. This is useful for
looking at biases in the calculated joint angles resulting from the placement
of the markers upon the body segments.
 
Joint velocity and acceleration:
The joint velocities and accelerations in both the JCS and proximal segment
LCS's are calculated in either of two ways. These are  calculated the
kinematically correct way using the absolute rotational velocities and
accelerations relative to the lab GCS of the segments on either side of a
joint. It can also be done numerically differention the individual joint
angle components using the GCV, TCV, or finite difference methods. Note that
this second technique, though used by many previous researchers, is not
correct for calculating the true joint velocities and accelerations. The
error is not particularly significant unless the joint motion has significant
components in planes other than the sagittal which the case with pelvic
motion especially and in hip motion to a lesser degree.
 
Joint reaction load:
The joint reaction loads (forces and moments) are computed at the current
joint position and segment kinematic state. Note that the joint reaction
loads (i.e., 3 moments and 3 forces) are calculated since all calculations
are carried out in full 3D with no assumptions as to the type of motion being
studied. The loads are given relative to the JCS, the proximal segment LCS,
the distal segment LCS and the lab GCS. All four are calculated to enable
comparison with other previous studies since there has not been uniformity in
the way in which the joint loads have been expressed in the literature
published to date. The loads are always given in terms of the load exerted by
the proximal segment upon the distal segment across the joint. The scheme
used to calculate the joint loads is very flexible for it is based upon the
concept of chained calculations. 
Depending upon the activity, the phase in the activity, and the degree to
which the ground reaction loads are known, an appropriate joint load
calculation method is used. For example, if the reaction loads under the
stance leg during single stance are known then a sequence of calculations
which moves from the support foot up to the hip and then starts at the swing
foot and moves up to the hip of the swing leg also is used to calculate the
leg joint reaction loads. The arms, neck and trunk joint reaction loads are
calculated by progressing from distal to proximal across the arms and then
the trunk. If, however, the ground reaction loads under the support foot are
not known then a calculation sequence which progresses up the swing leg,
along both arms, down the neck, then to the trunk, and then lastly down the
support leg is utilized. Note that the resulting calculated joint reaction
loads in the support leg will, without a doubt, be different from those
calculated using the ground reaction if it were known. This is primarily due
to inadequate determination of the mass/inertia properties and joint
locations of the segments further up the calculation chain. Any inaccuracies
will be cumulative due to chaining of the calculations, however at least an
estimate is available whereas normally none would be calculated in other
software packages. 
The calculation scheme will change throughout the data set depending upon what
the ground contact/valid force plate data combination is at a given data
frame. A number of schemes have been developed for full body joint reaction
load calculation. To do only the upper body for example, a connectivity
structure, which guides the calculation sequence, would have to be defined
within ANZ. Lastly, if at any frame of motion data the reaction loads of a
joint cannot be calculated (the joints of both legs during double stance of
human gait when neither foot's ground reaction load is known), then an array
indicating the validity of a joint's reaction load calculation is updated and
later in TELIO this data is automatically skipped over when it is graphed or
displayed in 3D since it is invalid.
 
Support load:
The vectorial summation of the joint reaction loads of the joints
(ankle,knee,hip) in the individual legs. This is of interest in studying the
process of gait (See Winter, 1987).
 
Joint reaction wrench:
The joint reaction load may also be expressed in terms of a load wrench, which
like its kinematic analog, the instantaneous screw, is an invariant quantity
in terms of the coordinate system in which it is expressed. This may prove
useful as a way to compare the joint reaction loads calculated by different
programs and/or labs. It may also be useful in interpreting the joint
reaction loads in a more succinct and consistent manner. This is needed at
times because the resulting joint reaction load patterns in 3D can be quite
complex. Earlier studies have largely looked at the motion moments (saggital
plane joint moments consisting of both active and passive moments) and have
ignored the structural moments (such as the ab/adduction resultant moments
and an/posterior force in the knee). These other components may prove to be
important in areas such as compensation of gait where a patient may be trying
to minimize the structural moment to protect a specific structure (e.g.,
minimizing abduction moments at the knee to minimize strain on the medial
collateral ligament). Anyway, the capability is here for the using.
 
Joint screw:
The screw defining the motion of the distal segment relative to the proximal
segment across the joint from one motion frame to the next. This is an
instantaneous screw using the positions and velocities of the distal and
proximal segments. Note that the distal segment position/velocity is computed
in the proximal segment LCS in each frame in the process of the screw
calculation, so even though the proximal segment may be moving the screw is
still calculated properly. This screw defines the relative motion of the
segments across the joint. The literature indicates that the calculation of
screws is very sensitive to errors in position data and thus unless the
segment position and orientation is determined using redundant markers (more
than the minimum of 3 per segment), the resulting screws may not be very
useful. Finite screw calculations have been included for comparison/research
purposes.
 
Joint Screw Angle:
Essentially the direction vector of the finite screw axis of the joint
multiplied by the rotation angle about the axis and projected onto the
proximal segment, distal segment, or JCS coordinate systems. This is a
concept popularized by Herman Woltring.
 
Joint Translation:
The translation across the joint based upon the assumption that joint position
relative to the proximal and distal segment coordinate systems is fixed. If
not then the point indicated by the two segment LCS's is not the same and
hence the difference between the two points is the calculated joint
translation. At present, this is used as a diagnostic measure to check the
assumption that the ankle, knee, hip, elbow, and shoulder markers are being
placed near the axis of rotation of the joint.
 
Joint power transfer:
The flow of power across the joints is calculated using the joint rotational
velocities and the joint reaction moments. This transfer consists of both
active (contracting muscles) and passive (resistance of the ligaments,
capsule, passive elasticity of the muscles) power lumped into a single
quantity.
 
Joint Reaction Load Moment Arms:
The moment arms of each joint reaction load moment component relative to the
joint location is calculated using the joint reaction forces in the other
planes. For instance, the moment arm of the x moment component is calculated
using the y and z components of the resultant joint force.
 
Joint Wrench Arm:
The perpendicular distance from the joint reaction load wrench axis to the
joint location is calculated.


Force Plate information
  
Individual and combined foot ground reaction load:
The force place data is summed and split such that the loads under each
individual foot and their combination is computed. The only time these are
different is during the double support phase of gait. The individual force
plate data is also available.
 
Individual and combined foot centers of pressure:
The center of pressure (COP) of the ground reaction loads measured under each
foot as well as the center of pressure from the combined feet. The only time
these two are different is during the double support phase of gait. Force
plate centers of pressure are also available.
 
Center of mass via integration:
The location of the center of mass in 3D of the entire body is calculated by
integrating the ground reaction force twice and scaling it by the body mass.
This may be compared directly with the center of mass calculated using the
estimated segment masses and center of mass locations.
 
Ground reaction wrench:
Wrench of the ground reaction load for the individual feet, the combined foot,
and individual force plate loads.
 
Center of pressure relative to foot LCS:
Position of the ground reaction COP during the contact phase of each foot
relative to the foot' s LCS.
 
Strike index:
The position of the COP relative to the total anterior/posterior distance
along the foot and the position of the foot's LCS. This requires that the
foot length be calculated. At present ANZ uses the toe and heel markers of
the whole body marker set to do this calculation.
 
Individual and combined foot ground reaction impulse:
The impulse of the foot upon the ground.
 
Reconstructed ground reactions:
Using the segment accelerations combined with their mass and inertia as well
as geometric configuration, the ground reaction loads, both magnitude and
location, are calculated.
 
Pitching moment arm:
The perpendicular distance from the line formed by the ground reaction force
passing through the center of pressure to the location of the body center of
mass. This can be thought of as a rough estimate of what makes the body pitch
forward/backward, side to side, and twist.
 
Wrench pitching arm:
The perpendicular distance from the line formed by the ground reaction load
wrench axis to the location of the body center of mass.


EMG's
  
Filtering:
Digital filtering with high, low, and  notch filter capabilites. Both frequency 
and time convolution based methods are available. 
  
Rectification:
Rectify the signal
  
Integration:
Integrate the signal
  
Moving  Window  Average:
Perform a moving window average with a user specified window size.
  
Threhold:
When combined with several of the above signal processing operations this  
can provide a way of displaying when a muscle is or is not active in an
on/off fashion.


Comment on numerical capabilities
  
At present ANZ contains three different ways to filter data. One method is a
generalized cross validation routine utilizing splines developed by Herman
Woltring which is configurable from within ANZ. A general two pass (i.e.,
phase corrected) time convolution filter is also available which allows a
number types of filtering. Lastly, a frequency based digital filter routine
can be used in which its upper and lower cutoff frequencies can be set as
well as have a notch defined. This routine can have the slope of the cutoffs
and notch specified so that the user may create their own specific filter
functions. It also contains a Hanning window function which may be used or
turned off. Any of these filter operations may be chained if so desired.
Several methods have been provided because experiments have shown merit and
inadequacies in all of them for certain situations that may be encountered in
locomotion analysis. I felt that the user should have final say on what is
used by being able to experiment with their data since it may have unique
properties which make it work better with one method or another. Most
quantities within ANZ are filterable.

How is ANZ presently implemented ?
  
In its present implementation, ANZ is not being used optimally, but at the
same time practical, useful results are being generated. Currently, ANZ
supports two whole body marker sets consisting of 21 markers, an upper body
marker set consisting of 9 markers which includes the head, trunk, pelvis,
right upper arm, and right lower arm, a simple 6 marker set for measuring
foot motion only, a 16 marker set that is used to evaluate the foot as four
segments (includes the calf also),  and a marker set that uses marker
carriers for whole body locomotion  analysis. 

The full body marker sets do not allow the determination of true 3D position
and orientation of some of the segments because in some cases markers are
shared by two segments. In these cases, the markers are assumed to sit at the
joint "center", or on the axis of rotation, and thus should be sharable
between segments since the common center would not move relative to the two
segment LCS's. A primary reason for this marker set being used is that it has
proved to be a very practical arrangement for day to day, and often multiple
times a day, use upon patients with various gait pathologies. The marker set
is an effective compromise between measurement of motion which is clinically
useful yet still can be used upon all types of pathological motions without
the markers being confused. 

Machine independency of code and data files has been extensively tested by
producing a version of ANZ on the Macintosh using the same FORTRAN source
code used for the original VAX version. Now, the PC version is available.  In
addition, data files produced by different versions of the program on
different machines have been interchanged successfully.
 
Marker data can presently be read in from VICON TR3 files, AMASS C3D files,
and an older file format used at Ohio State called TRU files. Marker data can
also be read in from Motion Analysis Corporation files (generated in EV3D
with the list/re command). Force plate data is read in from C3D and FPD files
as well as from from two file formats used at Ohio State- GLS and GLS2 files.
Motion Analysis Corporation analog data files produced by the program ADS
(usually with the extension .ana) can also be read. The results can be saved
in either ANZ format (.ANZ) or the older TRU format. Results can also be
dumped in text form to allow export to other packages such as statistics and
presentation graphics. Hopefully, t
  
  

References

1 Fenton,  R.  G. and X. Shi (1989). Comparison  of  Methods
  for  Determining  Screw Parameters of  Finite  Rigid  Body
  Motion  from Initial and Final Position data. Advances  in
  Design Automation-1989, Montreal,Quebec, ASME, 433-439.

2 Grood,  E.  S. and W. J. Suntay (1983). A Joint Coordinate
  System  for  the Clinical Description of Three-Dimensional
  Motions:  Application to the Knee.  J  Biomech  Eng   105:
  136-144.

3 Jensen,   R.   K.  (1989).  Changes  in  Segment   Inertia
  Proportions  Between 4 and 20 Years.  J Biomech   22(6/7):
  529-536.

4 Kaleps,  I.,  C. E. Clauser, et al. (1984).  Investigation
  into  the  Mass Distribution Properties of the Human  Body
  and its Segments.  Ergonomics  27(12): 1225-1237.

5 McConville,  J.  T.,  T.  D.  Churchill,  et  al.  (1980).
  Anthropometric  Relationships of  Body  and  Body  Segment
  Moments  of  Inertia.  United States Air  Force  Aerospace
  Medical Research Laboratory, AFAMRL-TR-80-119.

6 Woltring,   H.   J.   (1986).  A   Fortran   package   for
  generalized,   Cross-validatory   Spline   Smoothing   and
  Differentiation.  Adv. Eng. Software  8(2): 104-113.

7 Young,   J.   M.,   R.  F.  Chandler,   et   al.   (1983).
  Anthropometric  and  Mass Distribution Characteristics  of
  the Adult Female. Federal Aviation Administration, FAA-AM-
  83-16.
